Hívások és hang

A hívások és hangcsatornák hangot, videót és képernyőmegosztást közvetlenül a szerverre küldenek a saját portjukon. Ez az oldal a hálózati oldalt, a telepítés utáni ellenőrizendő beállításokat, valamint a saját futtatású beszédfelismerő modelllel készült átiratokat tárgyalja.

A hívások működése

A hívásokat a Hívások alkalmazás (azonosító: com.mattermost.calls) biztosítja, amely alapértelmezés szerint telepítve és engedélyezve van. A hangcsatornák (a Hangcsatornák alkalmazás, antimatter-next image) állandó hívási szobák, amelyek a Hívásokra épülnek: a Hívások engedélyezése szükséges, és ugyanazokat a beállításokat, portokat és szervereket használják.

A Hívások alkalmazás egy médiaszervert futtat az Antimatteren belül. A webböngészős, asztali és mobil alkalmazások WebRTC-vel kapcsolódnak hozzá:

  • a jelzés (signalling) a szokásos webes kapcsolat (HTTPS proxy) keresztül történik;
  • a média (hang, videó, képernyőmegosztás) nem: közvetlenül a szerverre megy a hívások portján, alapértelmezés szerint 8443 UDP és TCP.

A beállítások a Rendszerkonzol › Bővítmények › Hívások alatt találhatók. Mindegyik beállítás beállítható az antimatter szolgáltatáson egy AM_CALLS_ környezeti változóval is, amely ekkor felülírja a Rendszerkonzol beállításait, és ott zárolja az értéket. A régebbi MM_CALLS_ nevek is működnek.

Ezeket ellenőrizd a telepítés után

  1. Nyisd meg a hívások portját. Engedd át a 8443/udp és 8443/tcp portokat a szerver és a felhőszolgáltató tűzfalán.
  2. Check test mode. Test mode (DefaultEnabled) is off by default, so everyone can start calls. Turn it On in System Console › Plugins › Calls to let only system administrators start calls in channels while you check that calls work, then turn it off again. The variable is AM_CALLS_DEFAULT_ENABLED: true means test mode is off. A server moved from Mattermost keeps the choice saved in its configuration.
  3. Döntse el a videó kérdésében. Az Engedélyezze a videót (EnableVideo, AM_CALLS_ENABLE_VIDEO) alapértelmezés szerint bekapcsolva van: mindenki bekapcsolhatja a kameráját ott, ahol a hívások engedélyezve vannak, közvetlen és csoportos üzenetekben, valamint csatornákban. Hangcsatornákban a Hangcsatornák alkalmazás Engedélyezze a videót hangcsatornákban beállítása dönt. Ha kikapcsolja, senki nem kapcsolhatja be a kameráját, még hangcsatornákban sem.
  4. NAT mögött állítsd be a nyilvános címet (következő szakasz).

Hol vannak bekapcsolva a hívások

Minden közösségnek van egy típusa: Munkahely vagy Közösség (lásd: Az új közösségek típusa). Egy csatorna, amelynek adminisztrátorai nem kapcsolnak be vagy ki expliciten a hívásokat, a közösség típusát követi:

  • egy munkahelyen a csatornák a szerver alapértelmezését követik: a hívások mindenki számára bekapcsolva vannak, amíg a teszt mód kikapcsolva van;
  • egy közösségben a hívások kikapcsolva vannak a csatornákban: az emberek hangcsatornákban beszélgetnek. A csatorna- és közösségadminisztrátorok mégis bekapcsolhatják a hívásokat egy csatornában.

A csatorna saját beállítása mindig elsőbbséget élvez. A közvetlen és csoportos üzenetek nem tartoznak egy közösséghez: ott a hívások mindenki számára bekapcsolva vannak, amíg a teszt mód kikapcsolva van. Egy közösség típusának megváltoztatása 30 másodpercen belül hat a hívásokra.

Portok, NAT és STUN

BeállításVáltozóAlapérték
RTC-szerver port (UDP)AM_CALLS_UDP_SERVER_PORT8443
RTC-szerver port (TCP)AM_CALLS_TCP_SERVER_PORT8443
RTC-szerver cím (UDP), (TCP)AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESSüres: minden cím
ICE host felülírásAM_CALLS_ICE_HOST_OVERRIDEüres: STUN-nal keresve
ICE host port felülírásAM_CALLS_ICE_HOST_PORT_OVERRIDEüres: a szerver portja
ICE-szerverek konfigurációiAM_CALLS_ICE_SERVERS_CONFIGS[{"urls":["stun:stun.cloudflare.com:3478"]}]
(Kísérleti) IPv6-támogatás engedélyezése(Rendszerkonzol)ki

A portoknak 80 és 49151 között kell lenniük. A webhely compose-fájljában módosítsa a .env fájlban a CALLS_PORT értékét: ez mindkét változót beállítja, és publikálja a portot, ugyanazzal a számmal a hoston és a konténerben is. A kliensek először UDP-t próbálnak, majd ugyanazon a porton TCP-re váltanak.

Az a cím, ahová a kliensek a médiát küldik

A szerver minden kliensnek megadja azt a címet, ahová a médiát kell küldeni (ezt nevezi „host jelöltnek”). Alapértelmezés szerint a STUN-szerverrel – egy nyilvános szolgáltatással, amely a kérés forrásának címét és portját adja vissza – keresi meg a nyilvános címét. Az alapértelmezett a Cloudflare nyilvános STUN-szervere, a stun:stun.cloudflare.com:3478. Nem csak a szerver használja: minden, amely csatlakozik egy híváshoz, ugyanígy kérdez rá a saját nyilvános címére. A STUN-szerver csak IP-címeket és portokat lát, soha nem hallja a hívás hangját, nem látja a videót, és nem olvassa az üzeneteket.

Ha a szerverben még a Mattermost STUN-szervere (stun.global.calls.mattermost.com) van mentve a ICE-szerverek konfigurációi beállításban, például Mattermost-ról való átvándorlás után, akkor a Cloudflare-ét használja. A mentett beállítás nem módosul.

Állítsa be a címet manuálisan, ha:

  • a szerver NAT mögött van, vagy több nyilvános címe is van: állítsa be az ICE host felülírást a nyilvános IP-címre (vagy egy olyan hostnévre, amely erre mutat);
  • a NAT egy másik nyilvános portot rendel a 8443-hoz: állítsa be az ICE host port felülírást is erre a nyilvános portra;
  • a szervernek nincs internetkapcsolata, vagy nem szeretné, hogy a szerver és a kliensek külső STUN-szervert érnék el: állítsa be az ICE host felülírást, és üresse ki a STUN-listát a AM_CALLS_ICE_SERVERS_CONFIGS=[] beállítással. Ha be van állítva az ICE host felülírás, a szerver már nem kérdez rá a címére STUN-szervernél; az üres lista pedig megakadályozza, hogy a kliensek ilyen szervert keressenek.
services:
  antimatter:
    environment:
      AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
      AM_CALLS_ICE_SERVERS_CONFIGS: "[]"

Ha STUN-t szeretne használni harmadik fél bevonása nélkül, futtasson saját STUN-szervert (egy TURN-szerver, például a coturn, szintén válaszol STUN-kérésekre), és ezt adja meg a ICE-szerverek konfigurációi beállításban, ahogy az alábbi TURN-példában is.

Csak helyi hálózaton használja a szerver LAN-címét. A portok, címek vagy ICE-beállítások módosítása után indítsa újra a szerveret, vagy tiltsa le, majd engedélyezze a Calls-alkalmazást: a médiaszerver az alkalmazás indításakor áll be.

TURN szigorú tűzfalakkal

Néhány hálózat mind a UDP-t, mind a nem szabványos TCP-portokra kimenő kapcsolatok is blokkolja. Ezek használóihoz TURN-szerverre van szükség, amely egy elérhető porton (gyakran a 443-as) közvetíti a médiát. Az Antimatter nem tartalmaz ilyen szervert; futtasson egy TURN-szervert, például a coturn-t, és adja hozzá a ICE-szerverek konfigurációi nevű JSON-listához:

[
  {"urls": ["stun:turn.example.com:3478"]},
  {"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
  • Ha közös titkot használ (a coturn use-auth-secret beállítása), azonos titkot adjon meg a TURN statikus hitelesítési titok (AM_CALLS_TURN_STATIC_AUTH_SECRET) mezőben is: a szerver ekkor rövid ideig érvényes hitelesítő adatokat ad ki minden kliensnek, amelyek TURN hitelesítő adatok érvényességi ideje (percben) (alapértelmezés szerint 240) ideig érvényesek.
  • Ha rögzített hitelesítő adatokat használ, a TURN-bejegyzéshez adja hozzá a "username" és a "credential" mezőket.
  • A Szerveroldali TURN (alapértelmezés szerint kikapcsolva) a szerver által kezdeményezett kapcsolatokhoz is a TURN-szervereket használja.

Egyéb hívásbeállítások

BeállításVáltozóAlapértékMire szolgál
Maximális híváshoz csatlakozók számaAM_CALLS_MAX_CALL_PARTICIPANTS0 (korlát nélkül)Egy hívásban részt vevő személyek maximális száma.
Képernyőmegosztás engedélyezése(Rendszerkonzol)bekapcsolvaLehetővé teszi a résztvevők számára, hogy megossák a képernyőjüket.
Hívás csengésének engedélyezéseAM_CALLS_ENABLE_RINGINGbekapcsolvaAmikor egy közvetlen vagy csoportos üzenetben hívás indul, a többi résztvevő készüléke cseng.
Simulcast engedélyezése képernyőmegosztáshoz (Kísérleti)(Rendszerkonzol)kiA képernyőmegosztást több minőségben is elküldi.
AV1-kódék engedélyezése képernyőmegosztáshoz (Kísérleti)(Rendszerkonzol)kiHa a simulcast be van kapcsolva, ez a beállítás figyelmen kívül marad.

A Hangcsatornák alkalmazásnak két beállítása van a Rendszerkonzol › Bővítmények › Hangcsatornák menüben: Automatikus csatlakozás hangcsatorna megnyitása esetén (alapértelmezés szerint bekapcsolva) és Videó engedélyezése hangcsatornákon (alapértelmezés szerint bekapcsolva, de lásd a fenti videót). A közösségi adminisztrátorok a csatorna beállításaiban alakíthatják át egy csatornát hangcsatornává.

A hívások teljes kikapcsolásához tiltsa le a Hívások alkalmazást a Rendszerkonzol › Bővítmények › Bővítmény kezelés menüben, vagy állítsa be: AM_CALLS_DISABLE=true. Ekkor a hangcsatornák sem működnek tovább.

Nagyobb szerverek: külső rtcd

Alapértelmezés szerint egy Antimatter-szerver kezeli az összes híváshoz tartozó médiát. Ha sok párhuzamos hívás zajlik, vagy a médiát a csevegőszerverről el szeretnéd távolítani, a Hívások app átadhatja a médiát az rtcd nevű különálló médiaszervernek (a Mattermost nyílt forráskódú rtcd szervere, 0.17-es vagy újabb verzió). Állítsd be az RTCD-szerver URL-címét (AM_CALLS_RTCD_SERVICE_URL), például https://rtcd.example.com: ekkor minden hívás ezen keresztül zajlik, és a kliensek a médiát az rtcd saját portjára küldik, nem az Antimatterére. A hitelesítő adatokat az AM_CALLS_RTCD_CLIENT_ID és az AM_CALLS_RTCD_AUTH_KEY segítségével adhatod meg; ha ezeket nem állítod be, az app önmagát regisztrálja az rtcd-nél. Licenc nem szükséges. A Hívások app figyelmeztetést jelenít meg az adminisztrátorok számára, amely az rtcd használatát javasolja, ha a szerveren gyakran 50-nél több ember vesz egyszerre részt hívásokban.

Átirat és élő feliratok

Az Antimatter beszéd-főszövégi (speech-to-text) modell segítségével, amelyet saját magad futtatsz, átiratot készíthet a hívásokról, és élő feliratokat jeleníthet meg, amíg a beszélők szólnak. Az Antimatter bármilyen szerverrel működik, amely nyújt OpenAI-kompatibilis /v1/audio/transcriptions végpontot, például egy a hálózaton futó Whisper-szerverrel. Nem szükséges hozzá további Antimatter-szolgáltatás.

Így működik

  • A hívás háziasszonya a Átirat készítése a hívásról gombbal indítja el az átírást a hívás vezérlőin. Egy Átírás folyamatban jelvény tájékoztatja mindenkit.
  • Minden résztvevő appja a saját mikrofonját hallgatja, a beszédet rövid darabokra vágja (legfeljebb 12 másodperces, soha nem némítás közben), és ezeket elküldi az Antimatternek, amely továbbítja őket a beszéd-főszövégi szerveredre.
  • Ha az élő feliratok be vannak kapcsolva, minden darab szövege azonnal feliratként jelenik meg a résztvevők előtt.
  • Amikor az átiratkészítés leáll, vagy a hívás véget ér, a Hívások bot szövegfájlként és WebVTT-feliratként beküldi az átiratot a hívás üzenetszálába (a hangcsatornákban a csatornába).
  • Ha a Átiratok összefoglalása be van kapcsolva, az Ügynökök app alapértelmezett ügynöke is beküld egy összefoglalót a szálba (lásd MI).
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.
A hívás után: az átirat és annak összefoglalója a hívás üzenetszálában.

Beállítás

Állítsd be ezeket az antimatter szolgáltatáson:

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
BeállításVáltozóMit kell beírni
Hívások átiratának engedélyezése (Beta)AM_CALLS_ENABLE_TRANSCRIPTIONStrue
Hívás átiratkészítő APIAM_CALLS_TRANSCRIBE_APIopenai (megjelenik „OpenAI-kompatibilis API (munkafolyamat-szolgáltatás nélkül)” néven)
Beszéd-főszövégi API URL-címeAM_CALLS_TRANSCRIBE_API_OPEN_AIURLAz API alap URL-címe, a /v1-ig, beleértve azt.
Beszéd-főszövégi modellAM_CALLS_TRANSCRIBE_API_OPEN_AI_MODELA modell neve, ahogy az API ismeri, például whisper-1. Kötelező.
Beszéd-főszövégi API-kulcsAM_CALLS_TRANSCRIBE_API_OPEN_AI_KEYBearer tokenként küldődik. Hagyd üresen, ha az API nem igényel kulcsot.
Élő feliratok engedélyezése (Beta)AM_CALLS_ENABLE_LIVE_CAPTIONStrue a hívás alatti feliratokhoz.
Élő feliratok nyelveAM_CALLS_LIVE_CAPTIONS_LANGUAGEA beszélt nyelv kétbetűs kódja (alapértelmezés szerint en). Ez az érték a hangszövegfelismerő API-hoz is továbbításra kerül az átiratokhoz, ezért akkor is állítsa be, ha nem használ élő feliratokat.
Átiratok összefoglalásaAM_CALLS_SUMMARIZE_TRANSCRIPTIONStrue az AI által generált összefoglalóhoz a hívás után.
A Rendszerkonzolban az átirat beállításai csak akkor jelennek meg, ha az Enable call recordings (Hívásfelvételek engedélyezése) be van kapcsolva, pedig ez az átiratfajta nem igényel felvételt. A fenti változók beállítása elkerüli ezt a korlátot. Ne kapcsolja be a felvételeket az openai átiratolóval együtt: ekkor a felvétel indításakor a job-service átiratoló indítását próbálná meg, ami hibával járna.

Az átiratolás bekapcsolása esetén mindenki hangja, aki beszél, a beállított hangszövegfelismerő szerverre kerül, és az átirat ott jelenik meg, ahol a csatorna minden tagja elolvashatja. Tájékoztassa a felhasználókat, és ha a hívások bizalmasak, tartsa a szervert a saját hálózatában.

Felvételek

A hívások felvétele (a beépített whisper.cpp vagy Azure átiratolóval) külön konténerekben fut, amelyeket a Mattermost nyílt forráskódú calls-offloader feladatszolgáltatása indít, és amelyet Ön telepít az Antimatter mellé. A beállítások: Hívásfelvételek engedélyezése (AM_CALLS_ENABLE_RECORDINGS, alapértelmezés szerint kikapcsolva), Feladatszolgáltatás URL-címe (AM_CALLS_JOB_SERVICE_URL), Hívásfelvétel maximális időtartama (alapértelmezés szerint 60 perc, 15 és 180 perc között) és Hívásfelvétel minősége (alacsony, közepes vagy magas; alapértelmezés szerint közepes). Nem szükséges licenc. Amint a felvételek engedélyezve vannak, a hívás gazdája a hívásvezérlőknél a Hívás felvétele gombbal indítja és állítja le a felvételt; a hívásban mindenki látja, hogy felvétel készül, és a felvétel a hívás üzenetszálába kerül, amikor leáll. A hangcsatornákban zajló hívásoknak nincs üzenetszáluk, ezért nem rögzíthetők. Ha csak átiratokat és feliratokat szeretne, a fenti beszédfelismerő beállítás egyszerűbb: nem igényel feladatszolgáltatást.