In diretta: sale vocali e video in stile Discord, ora incluse con Discourse 🎙

:warning: Abbiamo appena rinominato questa funzionalità da Voice a Live. Il plugin ora si chiama Discourse Live, o semplicemente Live.

A fine anno scorso abbiamo condiviso Resenha, un esperimento che aggiungeva sale vocali e video in stile Discord direttamente in Discourse. Nessuna app esterna richiesta, solo WebRTC peer-to-peer nella 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

  • Sale prioritarie nella sidebar — clicca per entrare o uscire, vedi gli avatar dei partecipanti in tempo reale con indicatori animati di chi sta parlando, e continua a navigare nel forum mentre parli. Nessun cambio di rotta, nessuna finestra pop-up, e un widget di chiamata compatto ti segue su tutto il sito.
  • Video e condivisione dello schermo — ogni sala ha 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 eseguita interamente nel tuo browser, con anteprima in tempo reale e intensità regolabile.
  • Suppressione del rumore — scegli tra tre motori AI (RNNoise, DTLN, DeepFilterNet3) eseguiti come worklet audio WebAssembly, da quelli leggeri a quelli di livello studio.
  • Sottotitoli in tempo reale — facoltativi, didascalie lato visualizzatore alimentate dal riconoscimento vocale NVIDIA Parakeet eseguito localmente tramite WebGPU. Multilingue, all’avanguardia, AI locale. Puoi anche registrare la trascrizione della chiamata direttamente in una bozza di argomento.
  • Chiamate dirette — chiama qualcuno direttamente dalla sua scheda utente o profilo.
  • Chat testuale per sala — supportata dalla chat reale di Discourse: ogni chiamata ha il proprio thread nel canale chat della sala.
  • Permessi e gestione delle sale — sale pubbliche, limitate ai gruppi e private; creazione di sale da parte degli utenti limitata dai gruppi; disattivazione microfono, disattivazione audio, volume per utente ed espulsione.
  • Cue audio tematici — 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 flussi multimediali passano direttamente tra i partecipanti con crittografia DTLS-SRTP. Zero infrastruttura aggiuntiva, ideale per sale fino a ~50 persone in voce, o fino a 10 con video.

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

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

Come attivarlo

:discourse: Voice è disponibile su tutti i nostri piani di hosting. L’integrazione LiveKit per chiamate più grandi è disponibile sui nostri piani Business e Enterprise; chi usa l’hosting autonomo :discourse-bw: può puntarlo al proprio server LiveKit.

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

Da lì, voice_allowed_groups controlla chi può unirsi alle sale e voice_create_room_allowed_groups controlla chi può crearle (di default admin, moderatori e TL2). Il video è attivo di default. Le chiamate dirette sono disattivate finché non selezioni alcuni gruppi in voice_direct_calls_allowed_groups, e i sottotitoli sono opzionali tramite voice_subtitles_enabled (richiedono WebGPU e ciascun utente scarica il modello di ~2,5 GB una sola volta).

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

Stato

Questo è ancora nelle fasi iniziali. Lo stiamo utilizzando internamente quotidianamente da mesi e funziona molto bene per piccoli gruppi, ma testalo con il tuo team prima di aprirlo a tutta la comunità. Non c’è registrazione delle chiamate sul percorso peer-to-peer predefinito e gli strumenti di moderazione oltre a segnalazioni utente, espulsione e “Termina chiamata” sono ancora nella roadmap.

Feedback benvenuti

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

69 Mi Piace

aspetta … che … video troppo?

Man's Mind Blown Reaction

fantastico!

13 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.

6 Mi Piace

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

14 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!

3 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à.

3 Mi Piace

Ottima notizia! Avevo un presentimento che sarebbe successo, grazie @Falco

4 Mi Piace

Un messaggio è stato separato in un nuovo argomento: Exposing LiveKit status in site settings serializer

Ho perso l’annuncio originale e sono così entusiasta di questa novità che ho appena aggiornato discourse, anche se l’ultimo aggiornamento risale a soli 4 giorni fa.

Non vedo l’ora che la gente inizi a usarlo!

Grazie mille!!! :tada:

Domanda importante: chiunque può creare una video room o è possibile restringerlo in base ai permessi o al livello di fiducia?

Modifica extra: ho trovato i controlli dopo l’abilitazione.

4 Mi Piace

Incredibile :clap: ! Penso che Discourse ora disponga di un set di funzionalità piuttosto completo da poter sostituire anche alcune community di Discord e competere davvero con essa.

10 Mi Piace

3 post sono stati spostati in un nuovo argomento: Permessi granulari per telecamere e condivisione dello schermo

Può essere limitato in base al gruppo.

3 Mi Piace

Kerehn-1: Gatto Cool con Occhiali da Sole

2 Mi Piace

Sarebbe interessante avere un pulsante simile a quello della chat per far apparire una finestra per il plugin vocale. Dovrebbe mostrare le sale e l’elenco degli utenti, con la funzione di ricerca. Soprattutto per un utilizzo su dispositivi mobili. È solo un’idea :sweat_smile:

1 Mi Piace

Le sale vocali possono essere visualizzate nelle chat, è sufficiente per ciò che stai cercando?

Il pulsante non è dedicato alle sale vocali, ma a tutte le chat: da lì gli utenti possono entrare o uscire dalle sale vocali :ok_hand:

3 Mi Piace

puoi farmi degli screenshot del risultato? Non capisco bene questa parte (salone/chat) :sweat_smile:

Oh, puoi davvero provarlo. Basta controllare l’impostazione chat vocale abilitata e aprire la schermata chat in modalità a tutto schermo :slight_smile:

Il chat vocale è attivo, ma non vedo alcun cambiamento a schermo intero, a meno che io non sia completamente fuori strada :rofl:

Ok, ho trovato :sweat_smile: scusa per il disturbo

1 Mi Piace