Hovory a hlas

Hovory a hlasové kanály odesílají audio, video a sdílení obrazovky přímo na server na jeho vlastním portu. Tato stránka popisuje síťovou stránku, nastavení, která je třeba zkontrolovat po instalaci, a přepis pomocí speech-to-text modelu, který provozujete sami.

Jak hovory fungují

Hovory zajišťuje aplikace Hovory (id com.mattermost.calls), která je nainstalována a povolená ve výchozím nastavení. Hlasové kanály (aplikace Hlasové kanály, obraz antimatter-next) jsou trvalé místnosti pro hovory postavené na aplikaci Hovory: vyžadují povolenou aplikaci Hovory a používají stejné nastavení, porty a servery.

Aplikace Hovory spouští mediální server uvnitř Antimatter. Webová aplikace, desktopová aplikace a mobilní aplikace se k němu připojují pomocí WebRTC:

  • signalling probíhá přes běžné webové připojení (váš HTTPS proxy);
  • media (audio, video, sdílení obrazovky) ne: putuje přímo na server na portu pro hovory, ve výchozím nastavení 8443 UDP a TCP.

Nastavení najdete v Systémová konzole › Pluginy › Hovory. Každé z nich lze také nastavit pomocí proměnné prostředí AM_CALLS_ na službě antimatter, která má pak přednost před Systémovou konzolí a zamkne nastavení. Fungují také starší názvy MM_CALLS_.

Po instalaci zkontrolujte tyto položky

  1. Otevřete port pro hovory. Povolte 8443/udp a 8443/tcp v firewallu serveru a vašeho cloudového poskytovatele.
  2. Zkontrolujte testovací režim. Testovací režim (DefaultEnabled) je ve výchozím nastavení vypnutý, takže všichni mohou zahájit hovory. Zapněte ho (Zapnuto) v Systémová konzole › Pluginy › Hovory, aby mohli hovory v kanálech zahájit pouze systémoví administrátoři, zatímco ověřujete, že hovory fungují, a poté ho znovu vypněte. Proměnná je AM_CALLS_DEFAULT_ENABLED: true znamená, že testovací režim je vypnutý. Server migrovaný z Mattermostu si uloží tuto volbu do své konfigurace.
  3. Rozhodněte se ohledně videa. Povolit video (EnableVideo, AM_CALLS_ENABLE_VIDEO) je ve výchozím nastavení zapnuto: lidé mohou zapnout svou kameru kdekoli, kde jsou povoleny hovory, v přímých a skupinových zprávách a v kanálech. V hlasových kanálech rozhoduje nastavení aplikace Hlasové kanály Povolit video v hlasových kanálech. Pokud ho vypnete, nikdo nemůže zapnout kameru, ani v hlasových kanálech.
  4. Za NAT nastavte veřejnou adresu (následující sekce).

Kde jsou hovory povoleny

Každá komunita má typ, Pracovní prostor nebo Cech (viz Cech nebo pracovní prostor). Kanál, u kterého administrátoři hovory nezapli ani nevypnuli, se řídí typem komunity:

  • v pracovním prostoru se kanály řídí výchozím nastavením serveru: hovory jsou povoleny pro všechny, dokud je testovací režim vypnutý;
  • v cechu jsou hovory v kanálech zakázány: lidé komunikují místo toho v hlasových kanálech. Administrátoři kanálů a komunit mohou stále povolit hovory v kanálu.

Vlastní nastavení kanálu má vždy přednost. Přímé a skupinové zprávy nepatří do komunity: hovory jsou v nich povoleny pro všechny, dokud je testovací režim vypnutý. Změna typu komunity se projeví u hovorů do 30 sekund.

Porty, NAT a STUN

NastaveníProměnnáVýchozí
Port RTC serveru (UDP)AM_CALLS_UDP_SERVER_PORT8443
Port RTC serveru (TCP)AM_CALLS_TCP_SERVER_PORT8443
Adresa RTC serveru (UDP), (TCP)AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESSprázdné: všechny adresy
Přepsání ICE hostiteleAM_CALLS_ICE_HOST_OVERRIDEprázdné: nalezeno přes STUN
Přepsání ICE host portuAM_CALLS_ICE_HOST_PORT_OVERRIDEprázdné: port serveru
Konfigurace ICE serverůAM_CALLS_ICE_SERVERS_CONFIGS[{"urls":["stun:stun.cloudflare.com:3478"]}]
(Experimentální) Povolit podporu IPv6(Systémová konzole)Vypnuto

Porty musí být v rozmezí od 80 do 49151. V souboru compose webu změňte CALLS_PORT v .env: nastaví obě proměnné a zveřejní port, stejný číslo na hostiteli i v kontejneru. Klientské aplikace nejdřív zkusí UDP a při neúspěchu přejdou na TCP na stejném portu.

Adresa, na kterou klienti posílají média

Server sdělí každému klientovi adresu, na kterou má posílat média (jeho „host candidate“). Ve výchozím nastavení najde svou veřejnou adresu tak, že se zeptá STUN serveru, veřejné služby, která odpoví adresou a portem, ze kterých přišel požadavek. Výchozím nastavením je veřejný STUN server Cloudflare, stun:stun.cloudflare.com:3478. Používá ho ne jen server: každý klient, který se připojí k hovoru, se ho také zeptá na svou vlastní veřejnou adresu. STUN server vidí jen IP adresy a porty, nikdy zvuk, video ani zprávy z hovorů.

Server, který má v Konfiguraci ICE serverů stále uložený STUN server Mattermost (stun.global.calls.mattermost.com), například po přechodu z Mattermost, místo něj používá STUN server Cloudflare. Uložené nastavení se nezmění.

Adresu nastavte ručně, když:

  • server je za NAT, nebo má více veřejných adres: nastavte Přepsání ICE hosta na veřejnou IP adresu (nebo na jméno hostitele, které se na ni přeloží);
  • NAT mapuje jiný veřejný port na 8443: nastavte také Přepsání ICE host portu na ten veřejný port;
  • server nemá přístup na Internet, nebo nechcete, aby se server i klienti spojovali s externím STUN serverem: nastavte Přepsání ICE hosta a vyprázdněte seznam STUN serverů pomocí AM_CALLS_ICE_SERVERS_CONFIGS=[]. Když je nastaveno Přepsání ICE hosta, server se už neptá STUN serveru na svou adresu; prázdný seznam zabrání klientům, aby se ho ptali.
services:
  antimatter:
    environment:
      AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
      AM_CALLS_ICE_SERVERS_CONFIGS: "[]"

Pokud chcete STUN bez třetí strany, spusťte vlastní STUN server (TURN server, např. coturn, také odpovídá na STUN požadavky) a v Konfiguraci ICE serverů ho nahraďte tímto, jako v příkladu TURN níže.

Pouze v lokální síti použijte LAN adresu serveru. Po změně portů, adres nebo nastavení ICE server restartujte, nebo vypněte a zapněte aplikaci Hovory: mediální server se nastaví při spuštění aplikace.

TURN, pro přísné firewally

Některé sítě blokují jak UDP, tak odchozí připojení na neobvyklé TCP porty. Uživatelé na těchto sítích potřebují TURN server, který přenáší média přes port, na který se mohou připojit (často 443). Antimatter TURN server neobsahuje; spusťte TURN server, například coturn, a přidejte ho do Nastavení ICE serverů, což je JSON seznam:

[
  {"urls": ["stun:turn.example.com:3478"]},
  {"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
  • Při použití sdíleného hesla (coturn use-auth-secret) zadejte stejné heslo do Statické autentizační tajemství TURN (AM_CALLS_TURN_STATIC_AUTH_SECRET): server každému klientovi vydá krátkodobé přihlašovací údaje, platné po dobu Platnosti přihlašovacích údajů TURN (minuty) (výchozí hodnota je 240).
  • Při pevných přihlašovacích údajích přidejte do záznamu TURN místo toho "username" a "credential".
  • Server-side TURN (výchozí stav je vypnuto) používá TURN servery i pro připojení, která iniciuje server.

Další nastavení hovorů

NastaveníProměnnáVýchozíCo dělá
Maximální počet účastníků hovoruAM_CALLS_MAX_CALL_PARTICIPANTS0 (bez omezení)Nejvyšší počet lidí v jednom hovoru.
Povolit sdílení obrazovky(Systémová konzole)zapnutoUmožňuje účastníkům sdílet svou obrazovku.
Povolit zvonění při hovoruAM_CALLS_ENABLE_RINGINGzapnutoPři zahájení hovoru v přímé nebo skupinové zprávě zvoní ostatním lidem v této konverzaci.
Povolit simulcast pro sdílení obrazovky (Experimentální)(Systémová konzole)VypnutoOdesílá sdílení obrazovky v několika kvalitách.
Povolit kodek AV1 pro sdílení obrazovky (Experimentální)(Systémová konzole)VypnutoIgnoruje se, pokud je simulcast zapnutý.

Aplikace Hlasové kanály má dvě nastavení v Systémová konzole › Pluginy › Hlasové kanály: Připojit se při otevření hlasového kanálu (ve výchozím nastavení zapnuto) a Povolit video v hlasových kanálech (ve výchozím nastavení zapnuto, ale viz výše o videu). Hlas je typ kanálu, který se vybere při vytváření kanálu (viz Vytvořit kanál); neexistuje žádný následný krok „převést na hlasový kanál“. Tato dvě nastavení se stále vztahují na každý hlasový kanál. Vytvoření vyžaduje aktivní aplikaci Hlasové kanály; bez ní je možnost Hlas v dialogu pro vytváření kanálu zašedlá.

The create-channel dialog with Voice picked: the Talk and Stage preset cards, Voice Channels app active
Hlas, jakmile je aplikace Hlasové kanály aktivní: karty Talk a Stage.
Pokud chcete hovory zcela vypnout, zakážte aplikaci Hovory v Systémová konzole › Pluginy › Správa pluginů nebo nastavte AM_CALLS_DISABLE=true. Hlasové kanály pak také přestanou fungovat.

Větší servery: externí rtcd

Ve výchozím nastavení nese všechny mediální data hovorů jeden server Antimatter. Pro mnoho současných hovorů, nebo pokud chcete média oddělit od chatovacího serveru, může aplikace Hovory předat média samostatnému mediálnímu serveru rtcd (open-source rtcd od Mattermost, verze 0.17 nebo novější). Nastavte URL služby RTCD (AM_CALLS_RTCD_SERVICE_URL), například https://rtcd.example.com: všechny hovory pak proběhnou přes něj a klienti pošlou svá média na vlastní port rtcd, nikoli na port Antimatter. Přístupová data lze zadat pomocí AM_CALLS_RTCD_CLIENT_ID a AM_CALLS_RTCD_AUTH_KEY; bez nich se aplikace sama zaregistruje u rtcd. Licence není potřeba. Aplikace Hovory zobrazí administrátorům varování s doporučením použít rtcd, pokud se na serveru často současně v hovorech nachází více než 50 lidí.

Přepis a titulky v reálném čase

Antimatter může přepisovat hovory pomocí modelu pro převod řeči na text, který provozujete sami, a zobrazovat titulky v reálném čase, zatímco lidé mluví. Antimatter využívá jakýkoli server, který nabízí endpoint /v1/audio/transcriptions kompatibilní s OpenAI, například server Whisper vaší sítě. Žádná další služba od Antimatter není potřeba.

Jak to funguje

  • Hostitele hovoru spustí přepis pomocí Přepsat hovor v ovládacích prvkách hovoru. Odznak Přepisování informuje všechny účastníky.
  • Aplikace každého účastníka naslouchá jeho vlastní mikrofonu, rozseká řeč na krátké úseky (do 12 sekund, nikdy při ztlumeném zvuku) a pošle je do Antimatter, který je předá vašemu serveru pro převod řeči na text.
  • Pokud jsou zapnuté titulky v reálném čase, text každého úseku se účastníkům okamžitě zobrazí jako titulek.
  • Když se přepis zastaví nebo hovor skončí, bot Hovory pošle přepis jako soubor s textem a soubor s titulky ve formátu WebVTT do vlákna hovoru (v hlasových kanálech do kanálu).
  • Při zapnutém Shrnutí přepisů také výchozí agent aplikace AI chat zveřejní shrnutí ve vláknu (viz AI).
A call's thread: the Calls bot has posted the transcript as a text file, and an AI agent has posted a summary below it.
Po hovoru: přepis a jeho shrnutí ve vláknu hovoru.

Nastavení

Na službě antimatter nastavte:

services:
  antimatter:
    environment:
      AM_CALLS_ENABLE_TRANSCRIPTIONS: "true"
      AM_CALLS_TRANSCRIBE_API: openai
      AM_CALLS_TRANSCRIBE_API_OPEN_AIURL: http://stt.internal:8000/v1
      AM_CALLS_TRANSCRIBE_API_OPEN_AI_MODEL: whisper-1
      AM_CALLS_TRANSCRIBE_API_OPEN_AI_KEY: ""
      AM_CALLS_ENABLE_LIVE_CAPTIONS: "true"
      AM_CALLS_LIVE_CAPTIONS_LANGUAGE: en
NastaveníProměnnáCo zadat
Povolit přepisování hovorů (Beta)AM_CALLS_ENABLE_TRANSCRIPTIONStrue
API pro přepisování hovorůAM_CALLS_TRANSCRIBE_APIopenai (zobrazí se jako "OpenAI-compatible API (no job service)")
URL API pro převod řeči na textAM_CALLS_TRANSCRIBE_API_OPEN_AIURLZákladní URL API, včetně /v1.
Model pro převod řeči na textAM_CALLS_TRANSCRIBE_API_OPEN_AI_MODELNázev modelu, jak ho zná API, například whisper-1. Povinné.
API klíč pro převod řeči na textAM_CALLS_TRANSCRIBE_API_OPEN_AI_KEYOdesílá se jako bearer token. Nechte prázdné, pokud API žádný klíč nevyžaduje.
Povolit titulky v reálném čase (Beta)AM_CALLS_ENABLE_LIVE_CAPTIONStrue pro titulky v reálném čase během hovoru.
Jazyk titulků v reálném časeAM_CALLS_LIVE_CAPTIONS_LANGUAGEMluvený jazyk jako dvoumístný kód (výchozí je en). Tento kód se odesílá i do rozhraní pro přepis řeči, proto ho nastavte i v případě, že titulky nebudete používat.
Shrnutí přepisůAM_CALLS_SUMMARIZE_TRANSCRIPTIONStrue pro AI shrnutí po skončení hovoru.
V Systémové konzoli se nastavení přepisů zobrazí až po zapnutí možnosti Povolit nahrávání hovorů, přestože tento typ přepisu nahrávání nevyžaduje. Nastavení pomocí proměnných výše tomu zabrání. Nepoužívejte nahrávání hovorů společně s přepisovačem openai: spuštění nahrávání by pak pokusilo o spuštění přepisovače služby pro úlohy a selhalo.

Zvuk všech, kdo mluví, když je přepis zapnutý, se odesílá na server pro přepis řeči, který jste nakonfigurovali. Přepis se poté zveřejní na místě, kde ho může přečíst každý v kanálu. Informujte o tom své uživatele a pokud jsou hovory důvěrné, nechte tento server ve vlastní síti.

Nahrávky

Nahrávání hovorů (a přepisování pomocí vestavěných přepisovačů whisper.cpp nebo Azure) běží ve samostatných kontejnerech, které spouští služba úloh, open-source nástroj calls-offloader od Mattermostu. Ten je nutné nasadit ručně vedle Antimatteru. Nastavení jsou Povolit nahrávání hovorů (AM_CALLS_ENABLE_RECORDINGS, ve výchozím nastavení vypnuto), URL služby úloh (AM_CALLS_JOB_SERVICE_URL), Maximální délka nahrávání hovoru (ve výchozím nastavení 60 minut, rozsah 15 až 180) a Kvalita nahrávání hovorů (nízká, střední nebo vysoká; ve výchozím nastavení střední). Není vyžadována žádná licence. Jakmile je nahrávání povoleno, hostitel hovoru spustí a zastaví nahrávání pomocí tlačítka Nahrát hovor v ovládacích prvcích hovoru. Všichni účastníci hovoru vidí, že je nahráván, a po ukončení nahrávání se nahrávka zveřejní ve vlákně hovoru. Hovory v hlasových kanálech nemají vlákno, a proto nelze nahrávat. Pokud vám stačí pouze přepisy a titulky, je výše uvedená konfigurace převodu řeči na text jednodušší: nevyžaduje žádnou službu úloh.