Voice: stanze vocali e video in stile Discord, ora incluse in Discourse 🎙

All’inizio di quest’anno abbiamo condiviso Resenha, un esperimento che aggiungeva stanze vocali e video in stile Discord direttamente in Discourse. Nessuna app esterna richiesta, solo WebRTC peer-to-peer nella tua barra laterale.

L’esperimento ha funzionato. Lo utilizziamo per le nostre riunioni interne da allora e oggi diventa ufficiale: Resenha ora si chiama Voice e viene distribuito come plugin core incluso in ogni installazione di Discourse. :tada:

Cosa ottieni

  • Stanze prioritarie nella barra laterale — fai clic per entrare o uscire, visualizza gli avatar dei partecipanti in tempo reale con indicatori di parlato animati e continua a sfogliare il forum mentre parli. Nessun cambio di percorso, nessuna finestra pop-up.
  • Video e condivisione dello schermo — ogni stanza ottiene una pagina completa con una griglia di riquadri; la fotocamera e la condivisione dello schermo si attivano istantaneamente e la qualitĂ  si adatta automaticamente al numero di spettatori.
  • Sfocatura dello sfondo — segmentazione delle persone MediaPipe che gira interamente nel tuo browser, con anteprima in diretta e intensitĂ  regolabile.
  • Soppressione del rumore — scegli tra tre motori AI (RNNoise, DTLN, DeepFilterNet3) che funzionano come worklet audio WebAssembly, da quelli leggeri a quelli di qualitĂ  studio.
  • Sottotitoli in diretta — opzionali, didascalie lato spettatore alimentate dal riconoscimento vocale NVIDIA Parakeet che gira localmente tramite WebGPU. Multilingue e nessun audio lascia mai il tuo browser.
  • Chiamate dirette — chiama qualcuno direttamente dalla sua scheda utente o dal suo profilo.
  • Chat di testo per stanza — supportata dalla vera chat di Discourse: ogni chiamata ottiene il proprio thread nel canale chat della stanza.
  • Permessi e gestione delle stanze — stanze pubbliche, con restrizioni di gruppo e private; creazione di stanze da parte degli utenti limitata dai gruppi; disattivazione microfono, disattivazione audio, volume per utente e espulsione.
  • Segnali audio a tema — i toni di entrata/uscita e di chiamata seguono il tuo pacchetto di suoni di notifica chat, in modo che Voice suoni come il resto del tuo sito.

Come funziona

Di default, tutto è peer-to-peer: il tuo server Discourse gestisce solo la segnalazione e i media fluiscono direttamente tra i partecipanti con crittografia DTLS-SRTP. Zero infrastruttura aggiuntiva, ideale per stanze fino a ~50 persone in voce, o fino a 10 con video.

Tutto l’elaborazione audio e video (soppressione del rumore, sfocatura dello sfondo, sottotitoli) avviene localmente sul dispositivo di ciascun partecipante. Nulla viene inviato a terze parti.

Hai bisogno di chiamate più grandi? Indirizza il plugin verso un server cloud o self-hosted di LiveKit e instrada tutte le stanze (o solo alcune) attraverso di esso. Ogni partecipante pubblica quindi ogni traccia esattamente una volta, indipendentemente dalla dimensione della stanza. Le stanze instradate tramite LiveKit possono anche registrare le chiamate, con la registrazione controllata direttamente dall’interfaccia della stanza in Discourse.

Come abilitarlo

:discourse: Voice è disponibile in tutti i nostri piani di hosting. L’integrazione LiveKit per chiamate più grandi è disponibile nei nostri piani Business ed Enterprise; chi usa l’auto-ospitamento :discourse-bw: può indirizzarlo verso il proprio server LiveKit.

Voice è incluso con Discourse, quindi non c’è nulla da installare. Attivalo tramite Admin > Impostazioni > Plugin > voice enabled. Il plugin crea una stanza predefinita “Watercooler” in modo che ci sia subito un posto dove stare insieme.

Da lì, voice_allowed_groups controlla chi può entrare nelle stanze e voice_create_room_allowed_groups controlla chi può crearle (di default admin, moderatori e TL2). Il video è attivo di default; i sottotitoli sono opzionali tramite voice_subtitles_enabled (richiedono WebGPU).

Se stavi usando il plugin Resenha dal mio repository personale, rimuovilo dal tuo app.yml quando hai l’opportunità, poiché il plugin Voice incluso lo sostituisce.

Stato

Siamo ancora all’inizio. Lo stiamo usando in modo intensivo ogni giorno da mesi e funziona molto bene per piccoli gruppi, ma testalo con il tuo team prima di aprirlo a un’intera community. Non c’è registrazione delle chiamate nel percorso peer-to-peer predefinito e gli strumenti di moderazione oltre ai segnalibri utente, espulsione e “Termina chiamata” sono ancora in fase di sviluppo.

Feedback benvenuti

Provalo e facci sapere com’è andata! Bug, idee e domande sono tutti benvenuti in questo topic. Anche le PR, ora più facili che mai: il codice si trova in core. :microphone:

26 Mi Piace

aspetta … che … video troppo?

Man's Mind Blown Reaction

fantastico!

7 Mi Piace

Wow, davvero?

Ci sono delle istruzioni su come testarlo su istanze self-hosted? Ad esempio, con un container Docker separato?

2 Mi Piace

Basta aggiornare all’ultima versione con una ricostruzione e abilitare il nuovo plugin nella pagina di amministrazione. Non è necessario fare nulla di extra.

5 Mi Piace

Credo che tu intenda sale vocali e video in stile Discourse? :innocent: :grin:

2 Mi Piace

Quindi posso abbandonare le chiavi pubblica/privata in Nats, i sottodomini, il server Coturn e tutti gli script che stavo cercando di creare, per avere un server Livekit sicuro come ponte?

Anche se dovessi continuare a lavorarci, grazie per averlo creato!

1 Mi Piace

Voglio dire, se vuoi avere un Coturn dedicato per STUN/TURN sulla tua istanza, fallo pure. Stesso per LiveKit; se vuoi usarlo, non ti proibisco nulla.

Non è obbligatorio per effettuare chiamate out of the box, ma offriamo quella flessibilità.

1 Mi Piace