Au début de cette année, nous avons présenté 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 en 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 à l’étape suivante : Resenha s’appelle désormais Voice, et il est livré en tant que plugin principal inclus avec chaque installation de Discourse. ![]()
Ce que vous obtenez
- Salles axées sur la barre latérale — cliquez pour rejoindre ou quitter, voyez les avatars des participants en direct avec des indicateurs de parole animés, et continuez à parcourir le forum pendant que vous parlez. Pas de changement de route, pas de fenêtre pop-up.
- 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é réglable.
- Suppression du bruit — choisissez entre trois moteurs d’IA (RNNoise, DTLN, DeepFilterNet3) exécutés en tant que worklets audio WebAssembly, allant du léger au niveau studio.
- Sous-titres en direct — facultatif, sous-titres côté spectateur alimentés par la reconnaissance vocale NVIDIA Parakeet exécutée localement via WebGPU. Multilingue, et aucun audio ne quitte jamais votre navigateur.
- Appels directs — appelez quelqu’un directement depuis sa carte utilisateur ou son profil.
- Chat texte par salle — soutenu par le chat Discourse réel : chaque appel a son propre fil dans le canal de chat de la salle.
- Autorisations et gestion des salles — salles publiques, restreintes par groupe et privées ; création de salles par les utilisateurs limitée par des groupes ; couper le micro, couper le son, volume par utilisateur et expulser.
- Indices audio thématisés — les tons de connexion/déconnexion et d’appel suivent votre pack de sons de notification de chat, pour que Voice sonne comme le reste de votre site.
Comment ça fonctionne
Par défaut, tout est en 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. Aucune infrastructure supplémentaire, idéal pour des salles de 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 LiveKit LiveKit dans le cloud ou auto-hébergé et routez toutes les salles (ou seulement certaines) à travers lui. 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
Voice est disponible sur tous nos plans d’hébergement. L’intégration LiveKit pour les appels plus grands est disponible sur nos plans Business et Enterprise ; les auto-hébergeurs
peuvent le pointer vers leur propre serveur LiveKit.
Voice est inclus avec Discourse, donc il n’y a rien à installer. Activez-le via Admin > Settings > 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, les administrateurs, les modérateurs et les TL2). La vidéo est activée par défaut ; les sous-titres sont facultatifs via voice_subtitles_enabled (ils nécessitent WebGPU).
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 au début. 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’appels sur le chemin pair-à-pair par défaut, et les outils de modération au-delà des signalements d’utilisateurs, de l’expulsion et de « Terminer l’appel » sont toujours sur la feuille de route.
Les retours sont les bienvenus
Essayez-le et dites-nous comment ça se passe ! Les bugs, les idées et les questions sont tous les bienvenus dans ce sujet. Les PR aussi, maintenant plus faciles que jamais : le code se trouve dans core. ![]()








