Live: Discord-ähnliche Sprach- und Videoräume, jetzt in Discourse integriert 🎙

:warning: Wir haben dies gerade von Voice in Live umbenannt. Das Plugin heißt jetzt Discourse Live, oder einfach nur Live.

Ende letzten Jahres haben wir Resenha vorgestellt, ein Experiment, das Discord-Stil-Sprach- und Videoräume direkt in Discourse integriert. Keine externen Apps erforderlich, nur Peer-to-Peer-WebRTC in deiner Seitenleiste.

Das Experiment hat funktioniert. Wir nutzen es seitdem für unsere eigenen Meetings und heute wird es vollwertig: Resenha heißt jetzt Voice und wird als Kernplugin mit jeder Discourse-Installation ausgeliefert. :tada:

Was du bekommst

  • Seitenleisten-basierte Räume — Klicke zum Beitreten oder Verlassen, sieh dir Live-Avatare der Teilnehmer mit animierten Sprechindikatoren an und durchstöbere weiterhin das Forum, während du sprichst. Kein Routenwechsel, kein Popup-Fenster, und ein kompaktes Anruf-Widget begleitet dich durch die gesamte Website.
  • Video- und Bildschirmfreigabe — Jeder Raum erhält eine Vollseite mit einem Kachelraster; Kamera und Bildschirmfreigabe werden sofort umgeschaltet, und die Qualität skaliert automatisch mit der Anzahl der Zuschauer.
  • Hintergrundunschärfe — MediaPipe-Personensegmentierung läuft vollständig in deinem Browser, mit Live-Vorschau und einstellbarer Stärke.
  • Geräuschunterdrückung — Wähle zwischen drei KI-Engines (RNNoise, DTLN, DeepFilterNet3), die als WebAssembly-Audio-Worklets laufen, vom Leichtgewicht bis zur Studioqualität.
  • Live-Untertitel — Optional, Zuschauer-seitige Untertitel, angetrieben von NVIDIA Parakeet Spracherkennung, die lokal via WebGPU ausgeführt wird. Mehrsprachig, Stand der Technik, lokale KI. Du kannst auch ein Transkript des Anrufs direkt in einen Themenentwurf aufnehmen.
  • Direkte Anrufe — Ruf jemanden direkt von seiner Benutzerkarte oder seinem Profil aus an.
  • Textchat pro Raum — Unterstützt durch echten Discourse-Chat: Jeder Anruf erhält seinen eigenen Thread im Chatkanal des Raums.
  • Raumberechtigungen und -verwaltung — Öffentliche, gruppenbeschränkte und private Räume; Erstellung von Räumen durch Benutzer nach Gruppen gesteuert; stummschalten, taub machen, Lautstärke pro Benutzer und rausschmeißen.
  • Themenbezogene Audio-Hinweise — Beitritts-/Austritts- und Anruf-Töne folgen deinem Chat-Benachrichtigungstonpaket, damit Voice sich wie der Rest deiner Website anhört.

Wie es funktioniert

Standardmäßig ist alles Peer-to-Peer: Dein Discourse-Server verarbeitet nur das Signalisieren, und die Medien fließen direkt zwischen den Teilnehmern mit DTLS-SRTP-Verschlüsselung. Keine zusätzliche Infrastruktur, ideal für Räume mit bis zu ~50 Personen per Sprache oder bis zu 10 mit Video.

Die gesamte Audio- und Videobearbeitung (Geräuschunterdrückung, Hintergrundunschärfe, Untertitel) läuft lokal auf dem Gerät jedes Teilnehmers. Nichts wird an Dritte gesendet.

Brauchst du größere Konferenzen? Weise das Plugin auf einen Cloud- oder selbst gehosteten LiveKit-Server hin und leite alle Räume (oder nur einige) darüber. Jeder Teilnehmer veröffentlicht dann genau einmal jeden Track, unabhängig von der Raumgröße. Über LiveKit geleitete Räume können auch Anrufe aufnehmen, wobei die Aufnahme direkt über die Raum-Oberfläche in Discourse gesteuert wird.

So aktivierst du es

:discourse: Voice ist in allen unseren Hosting-Plänen verfügbar. Die LiveKit-Integration für größere Konferenzen ist in unseren Business- und Enterprise-Plänen verfügbar; Selbst-Hoster :discourse-bw: können es auf ihren eigenen LiveKit-Server zeigen lassen.

Voice ist mit Discourse gebündelt, daher muss nichts installiert werden. Aktiviere es über Admin > Einstellungen > Plugins > voice enabled. Das Plugin erstellt standardmäßig einen „Watercooler“-Raum, damit es sofort einen Ort zum Verweilen gibt.

Ab dort steuert voice_allowed_groups, wer Räume beitreten kann, und voice_create_room_allowed_groups, wer sie erstellen kann (standardmäßig Admins, Moderatoren und TL2). Video ist standardmäßig aktiviert. Direkte Anrufe sind deaktiviert, bis du einige Gruppen in voice_direct_calls_allowed_groups auswählst, und Untertitel sind optional über voice_subtitles_enabled (dafür wird WebGPU benötigt, und jeder Benutzer lädt das ~2,5 GB große Modell einmal herunter).

Falls du das Resenha-Plugin aus meinem persönlichen Repository ausgeführt hast, entferne es bei Gelegenheit aus deiner app.yml, da das gebündelte Voice-Plugin es ersetzt.

Status

Dies ist noch früh. Wir testen es seit Monaten täglich und es funktioniert sehr gut für kleine Gruppen, aber teste es mit deinem Team, bevor du es einer ganzen Community öffnest. Es gibt keine Anrufaufzeichnung auf dem Standard-Peer-to-Peer-Pfad, und Moderationstools neben Benutzermarkierungen, Rausschmeißen und „Anruf beenden“ stehen noch auf der Roadmap.

Feedback willkommen

Probiere es aus und sag uns, wie es läuft! Bugs, Ideen und Fragen sind in diesem Thema alle willkommen. PRs auch, jetzt einfacher denn je: Der Code befindet sich im Kern. :microphone:

69 „Gefällt mir“

Moment … was … Video auch?

Man's Mind Blown Reaction

Fantastisch!

13 „Gefällt mir“

Wow, wirklich?

Gibt es Anweisungen, wie man das auf selbst gehosteten Instanzen testen kann? Zum Beispiel mit einem separaten Docker-Container?

2 „Gefällt mir“

Führe einfach ein Update auf die neueste Version mit einem Rebuild durch und aktiviere das neue Plugin auf der Admin-Seite. Es ist nichts weiter nötig.

6 „Gefällt mir“

Meinst du nicht eher Discourse-ähnliche Sprach- und Videoräume? :innocent: :grin:

14 „Gefällt mir“

Kann ich also die öffentlichen/privaten Schlüssel in Nats, die Unterdomainen, den Coturn-Server und alle Skripte, die ich zu erstellen versuchte, einfach beiseitelegen, um einen sicheren Livekit-Server als Brücke zu haben?

Auch wenn ich daran weiterarbeiten muss, danke dir, dass du das gebaut hast!

3 „Gefällt mir“

Ich meine, wenn du einen dedizierten Coturn für STUN/TURN auf deiner Instanz haben möchtest, tu das ruhig. Gleiches gilt für LiveKit; wenn du es verwenden möchtest, sei es dir recht.

Es ist nicht zwingend erforderlich, um Anrufe direkt aus dem Karton heraus durchzuführen, aber wir bieten diese Flexibilität an.

3 „Gefällt mir“

Das ist großartige Neuigkeit! Ich hatte schon ein Gefühl, dass das passieren würde. Danke, @Falco!

4 „Gefällt mir“

Ein Beitrag wurde in ein neues Thema aufgeteilt: LiveKit-Status im Site-Einstellungen-Serializer anzeigen

Ich habe die ursprüngliche Ankündigung verpasst und bin so begeistert davon, dass ich Discourse gerade aktualisiert habe, obwohl das letzte Update erst vor vier Tagen war.

Ich kann es kaum erwarten, dass die Leute das nutzen!

Danke!!! :tada:

Große Frage – Kann jeder einen Videoraum erstellen oder kann das eingeschränkt werden, basierend auf Berechtigungen oder Vertrauensstufe?

Zusätzlicher Nachtrag – Ich habe die Einstellungen gefunden, nachdem die Funktion aktiviert wurde.

4 „Gefällt mir“

Unglaublich :clap: ! Ich denke, Discourse hat mittlerweile ein ziemlich gutes Funktionsangebot, um sogar einige Discord-Communities zu ersetzen und damit wirklich konkurrenzfähig zu sein.

10 „Gefällt mir“

3 Beiträge wurden in ein neues Thema verschoben: Granulare Berechtigungen für Kameras und Bildschirmfreigabe

Es kann nach Gruppen eingeschränkt werden.

3 „Gefällt mir“

Kerehn-1: Cooler Kater in Sonnenbrille

2 „Gefällt mir“

Es wäre interessant, einen Button wie für den Chat zu haben, mit dem ein Fenster für das Voice-Plugin geöffnet wird. Dieses sollte die Räume und die Benutzerliste mit einer Suchfunktion anzeigen. Besonders für die Nutzung auf dem Handy. Es ist nur eine Idee :sweat_smile:

1 „Gefällt mir“

Die Sprachräume können in den Chats angezeigt werden. Ist das ausreichend für das, was du suchst?

Der Button ist nicht nur für Voice, sondern für alle Chats gedacht. Von dort aus können Benutzer Sprachräume betreten oder verlassen :ok_hand:

3 „Gefällt mir“

Kannst du mir Screenshots des Ergebnisses machen, weil ich diesen Teil (Salon/Chat) nicht gut verstehe? :sweat_smile:

Oh, das kannst du wirklich ausprobieren. Aktiviere einfach die Einstellung Spratchat aktiviert und öffne den maximierten Chat :slight_smile:

Der Sprachchat ist aktiviert, aber ich sehe im Vollbildmodus keine Änderung, außer ich liege hier komplett daneben :rofl:

OK, ich hab’s gefunden :sweat_smile: Entschuldigung für die Störung

1 „Gefällt mir“