No inĂcio deste ano, compartilhamos a Resenha, um experimento que adicionou salas de voz e vĂdeo no estilo Discord diretamente ao Discourse. Sem necessidade de aplicativos externos, apenas WebRTC peer-to-peer na sua barra lateral.
O experimento funcionou. Temos usado para nossas prĂłprias reuniões desde entĂŁo, e hoje ele se forma: a Resenha agora se chama Voice e Ă© distribuĂda como um plugin principal incluĂdo em todas as instalações do Discourse. ![]()
O que vocĂŞ recebe
- Salas priorizadas na barra lateral — clique para entrar ou sair, veja os avatares dos participantes ao vivo com indicadores de fala animados e continue navegando pelo fórum enquanto conversa. Sem mudança de rota, sem janela pop-up.
- VĂdeo e compartilhamento de tela — cada sala recebe uma página completa com uma grade de tiles; a câmera e o compartilhamento de tela sĂŁo alternados instantaneamente, e a qualidade escala automaticamente com o nĂşmero de espectadores.
- Desfoque de fundo — segmentação de pessoas do MediaPipe executada inteiramente no seu navegador, com pré-visualização ao vivo e intensidade ajustável.
- SupressĂŁo de ruĂdo — escolha entre trĂŞs motores de IA (RNNoise, DTLN, DeepFilterNet3) executados como worklets de áudio WebAssembly, do leve ao padrĂŁo de estĂşdio.
- Legendas ao vivo — opcionais, legendas do lado do espectador impulsionadas pelo reconhecimento de fala NVIDIA Parakeet executado localmente via WebGPU. MultilĂngue, e nenhum áudio sai do seu navegador.
- Chamadas diretas — ligue para alguém diretamente do cartão de usuário ou perfil.
- Chat de texto por sala — suportado pelo chat real do Discourse: cada chamada recebe seu próprio tópico no canal de chat da sala.
- Permissões e gerenciamento de sala — salas públicas, restritas a grupos e privadas; criação de salas por usuários controlada por grupos; mudo, surdez, volume por usuário e expulsão.
- Cues de áudio tematizados — tons de entrada/saĂda e de chamada seguem seu pacote de sons de notificação de chat, para que o Voice soe como o resto do seu site.
Como funciona
Por padrĂŁo, tudo Ă© peer-to-peer: seu servidor Discourse sĂł lida com o sinalização, e a mĂdia flui diretamente entre os participantes com criptografia DTLS-SRTP. Zero infraestrutura extra, ideal para salas de atĂ© ~50 pessoas em voz, ou atĂ© 10 com vĂdeo.
Todo o processamento de áudio e vĂdeo (supressĂŁo de ruĂdo, desfoque de fundo, legendas) Ă© executado localmente no dispositivo de cada participante. Nada Ă© enviado a terceiros.
Precisa de chamadas maiores? Aponte o plugin para um servidor LiveKit na nuvem ou auto-hospedado e roteie todas as salas (ou apenas algumas) por ele. Cada participante então publica cada trilha exatamente uma vez, independentemente do tamanho da sala. Salas roteadas pelo LiveKit também podem gravar chamadas, com a gravação controlada diretamente pela interface da sala no Discourse.
Como ativá-lo
O Voice está disponĂvel em todos os nossos planos de hospedagem. A integração LiveKit para chamadas maiores está disponĂvel nos nossos planos Business e Enterprise; auto-hospedeiros
podem apontá-lo para seu próprio servidor LiveKit.
O Voice Ă© incluĂdo com o Discourse, entĂŁo nĂŁo há nada a instalar. Ative-o via Admin > Settings > Plugins > voice enabled. O plugin cria uma sala padrĂŁo “Watercooler” para que haja um lugar para se reunir imediatamente.
A partir daĂ, voice_allowed_groups controla quem pode entrar nas salas, e voice_create_room_allowed_groups controla quem pode criá-las (administradores, moderadores e TL2 por padrĂŁo). O vĂdeo está ativado por padrĂŁo; as legendas sĂŁo opcionais via voice_subtitles_enabled (elas precisam de WebGPU).
Se vocĂŞ estava executando o plugin Resenha do meu repositĂłrio pessoal, remova-o do seu app.yml quando tiver a oportunidade, pois o plugin Voice incluĂdo o substitui.
Status
Isso ainda está no inĂcio. Temos usado internamente diariamente há meses e funciona muito bem para pequenos grupos, mas teste com sua equipe antes de abri-lo para toda a comunidade. NĂŁo há gravação de chamadas no caminho peer-to-peer padrĂŁo, e as ferramentas de moderação alĂ©m de sinalizações de usuário, expulsĂŁo e “Encerrar chamada” ainda estĂŁo no roteiro.
Feedback bem-vindo
Experimente e nos diga como foi! Bugs, ideias e perguntas são bem-vindos neste tópico. PRs também, agora mais fáceis do que nunca: o código está no core. ![]()








