En direct : salons vocaux et vidéo façon Discord, désormais inclus avec Discourse 🎙

:warning: Nous venons de renommer cette fonctionnalité, qui s’appelait Voice, en Live. Le plugin s’appelle désormais Discourse Live, ou simplement Live.

Fin d’année dernière, nous avions partagé Resenha, une expérience qui ajoutait des salles vocales et vidéo de style Discord directement dans Discourse. Aucune application externe n’était requise, juste du WebRTC pair-à-pair dans votre barre latérale.

L’expérience a fonctionné. Nous l’utilisons pour nos propres réunions depuis lors, et aujourd’hui elle passe au niveau supérieur : Resenha s’appelle désormais Voice, et il est livré comme un plugin principal inclus avec chaque installation de Discourse. :tada:

Ce que vous obtenez

  • Salles prioritaires dans la barre latérale — cliquez pour rejoindre ou quitter, voyez les avatars des participants en direct avec des indicateurs animés de parole, et continuez à parcourir le forum pendant que vous parlez. Aucun changement de route, aucune fenêtre pop-up, et un widget d’appel compact vous suit sur tout le site.
  • Vidéo et partage d’écran — chaque salle dispose d’une page complète avec une grille de tuiles ; la caméra et le partage d’écran se basculent instantanément, et la qualité s’adapte automatiquement au nombre de spectateurs.
  • Flou d’arrière-plan — segmentation de personnes MediaPipe exécutée entièrement dans votre navigateur, avec un aperçu en direct et une intensité ajustable.
  • Suppression du bruit — choisissez entre trois moteurs IA (RNNoise, DTLN, DeepFilterNet3) exécutés en tant que worklets audio WebAssembly, allant du léger au niveau studio.
  • Sous-titres en direct — optionnels, légendes côté spectateur propulsées par la reconnaissance vocale NVIDIA Parakeet exécutée localement via WebGPU. Multilingue, dernier cri, IA locale. Vous pouvez également enregistrer une transcription de l’appel directement dans un brouillon de sujet.
  • Appels directs — appelez quelqu’un directement depuis sa carte utilisateur ou son profil.
  • Chat texte par salle — basé sur le vrai chat Discourse : chaque appel a son propre fil dans le canal de chat de la salle.
  • Permissions et gestion des salles — salles publiques, restreintes aux groupes et privées ; création de salle par utilisateur contrôlée par les groupes ; couper le micro, mettre en sourdine, volume par utilisateur et expulser.
  • Indices audio thématisés — les sons de jonction/départ et d’appel suivent votre pack de sons de notification de chat, pour que Voice sonne comme le reste de votre site.

Comment ça marche

Par défaut, tout est pair-à-pair : votre serveur Discourse ne gère que la signalisation, et les médias circulent directement entre les participants avec un chiffrement DTLS-SRTP. Zéro infrastructure supplémentaire, idéal pour des salles jusqu’à ~50 personnes en vocal, ou jusqu’à 10 avec vidéo.

Tout le traitement audio et vidéo (suppression du bruit, flou d’arrière-plan, sous-titres) s’exécute localement sur l’appareil de chaque participant. Rien n’est envoyé à des tiers.

Besoin d’appels plus grands ? Pointez le plugin vers un serveur cloud ou auto-hébergé LiveKit et routez toutes les salles (ou seulement certaines) à travers celui-ci. Chaque participant publie alors chaque piste exactement une fois, quelle que soit la taille de la salle. Les salles routées via LiveKit peuvent également enregistrer les appels, avec l’enregistrement contrôlé directement depuis l’interface de la salle dans Discourse.

Comment l’activer

:discourse: Voice est disponible sur tous nos plans d’hébergement. L’intégration LiveKit pour les appels plus volumineux est disponible sur nos plans Business et Enterprise ; les auto-hébergeurs :discourse-bw: peuvent le pointer vers leur propre serveur LiveKit.

Voice est inclus avec Discourse, donc il n’y a rien à installer. Activez-le via Admin > Paramètres > Plugins > voice enabled. Le plugin crée une salle par défaut “Watercooler” pour qu’il y ait un endroit où se retrouver immédiatement.

À partir de là, voice_allowed_groups contrôle qui peut rejoindre les salles, et voice_create_room_allowed_groups contrôle qui peut les créer (par défaut, administrateurs, modérateurs et TL2). La vidéo est activée par défaut. Les appels directs sont désactivés jusqu’à ce que vous sélectionniez certains groupes dans voice_direct_calls_allowed_groups, et les sous-titres sont opt-in via voice_subtitles_enabled (ils nécessitent WebGPU, et chaque utilisateur télécharge le modèle de ~2,5 Go une seule fois).

Si vous utilisiez le plugin Resenha depuis mon dépôt personnel, retirez-le de votre app.yml dès que possible, car le plugin Voice inclus le remplace.

Statut

C’est encore tôt. Nous l’utilisons en interne quotidiennement depuis des mois et il fonctionne très bien pour les petits groupes, mais testez-le avec votre équipe avant de l’ouvrir à toute une communauté. Il n’y a pas d’enregistrement d’appel sur le chemin pair-à-pair par défaut, et les outils de modération au-delà des signalements utilisateurs, de l’expulsion et de « Terminer l’appel » sont toujours sur la feuille de route.

Avis bienvenus

Essayez-le et dites-nous comment ça se passe ! Les bugs, idées et questions sont tous les bienvenus dans ce sujet. Les PR aussi, maintenant plus faciles que jamais : le code se trouve dans core. :microphone:

69 « J'aime »

attends … waah … la vidéo aussi ?

Man's Mind Blown Reaction

fantastique !

13 « J'aime »

Wow, vraiment ?

Des instructions pour tester cela sur des instances auto-hébergées ? Par exemple, avec un conteneur Docker séparé ?

2 « J'aime »

Il suffit de mettre à jour vers la dernière version avec une reconstruction, puis d’activer le nouveau plugin sur la page d’administration. Il n’y a rien d’autre à faire.

6 « J'aime »

Je pense que tu veux dire des salons vocaux et vidéo de type Discourse ? :innocent: :grin:

14 « J'aime »

Je peux donc abandonner les clés publiques/privées dans Nats, les sous-domaines, le serveur Coturn et tous les scripts que j’essayais de créer, pour avoir un serveur Livekit sécurisé en tant que passerelle ?

Même si je dois continuer à y travailler, merci de l’avoir construit !

3 « J'aime »

Je veux dire, si tu souhaites disposer d’un Coturn dédié pour STUN/TURN sur ta instance, fonce. Idem pour LiveKit ; si tu veux t’en servir, je t’invite à le faire.

Ce n’est pas obligatoire pour effectuer des appels en l’état, mais nous offrons cette souplesse.

3 « J'aime »

C’est une excellente nouvelle ! J’avais le pressentiment que ça allait se produire, merci @Falco

4 « J'aime »

Un message a été déplacé vers un nouveau sujet : Exposer l’état de LiveKit dans le sérialiseur des paramètres du site

J’ai raté l’annonce originale, et j’en suis tellement enthousiaste que je viens de mettre à jour Discourse, alors que la dernière mise à jour datait de seulement 4 jours.

J’ai hâte de voir les gens utiliser cette fonctionnalité !

Merci !!! :tada:

Grande question : est-ce que n’importe qui peut créer une salle vidéo, ou est-ce que ça peut être restreint / basé sur les permissions / le niveau de confiance ?

Petite précision ajoutée : j’ai trouvé les paramètres une fois la fonctionnalité activée.

4 « J'aime »

Incroyable :clap: ! Je pense que Discourse dispose désormais d’un ensemble de fonctionnalités assez solide pour remplacer certaines communautés Discord, et pour vraiment rivaliser avec cette dernière.

10 « J'aime »

3 messages ont été déplacés vers un nouveau sujet : Permissions granulaires pour les caméras et le partage d’écran

Il peut être restreint par groupe.

3 « J'aime »

Kerehn-1: Cool Cat in Sunglasses

2 « J'aime »

Cela serait intéressant d’avoir un bouton comme pour le chat pour faire apparaitre une fenêtre pour le plugin voice. Affichant les salons et la liste des utilisateurs avec la fonction recherche. Surtout pour une utilisation mobile. C’est juste une idée :sweat_smile:

1 « J'aime »

Les salons vocaux peuvent être affichés dans les chats, est-ce suffisant pour ce que vous recherchez ?

Le bouton ne concerne pas uniquement la Voix, mais tous les chats ; les utilisateurs peuvent y entrer ou quitter les salons vocaux :ok_hand:

3 « J'aime »

peux tu me faire des captures d’écran du résultat par ce que je ne comprends pas bien cette partie là (salon/chat) :sweat_smile:

Oh, tu peux vraiment l’essayer. Il suffit de vérifier le paramètre chat vocal activé et d’ouvrir l’écran de chat en plein écran :slight_smile:

Le chat vocal est activé mais je ne vois pas de changement en plein écran à moins que je suis totalement à côté de la plaque :rofl:

OK j’ai trouvé :sweat_smile: désolé pour le dérangement

1 « J'aime »