Opkald og lyd

Opkald og lydkanaler sender lyd, video og skærmdeling direkte til serveren på deres egen port. Denne side dækker netværksaspektet, de indstillinger, der skal kontrolleres efter installationen, samt transkription med et tale-til-tekst-model, som du kører selv.

Sådan fungerer opkald

Opkald leveres af Opkald-appen (id com.mattermost.calls), som er installeret og aktiveret som standard. Lydkanaler (Lydkanaler-appen, antimatter-next-billedet) er permanente opkaldsrum bygget på Opkald: de kræver, at Opkald er aktiveret, og de bruger de samme indstillinger, porte og servere.

Opkaldsappen kører en medieserver inde i Antimatter. Webappen, desktopappen og mobilappene forbinder sig til den med WebRTC:

  • signaleringen går gennem den normale webforbindelse (din HTTPS-proxy);
  • mediet (lyd, video, skærmdeling) gør det ikke: det går direkte til serveren på opkaldsporten, 8443 UDP og TCP som standard.

Indstillingerne findes i Systemkonsol › Plugins › Opkald. Hver af dem kan også indstilles med en AM_CALLS_ miljøvariabel på antimatter-tjenesten, som derefter har forrang over Systemkonsolen og låser indstillingen der. De ældre MM_CALLS_-navne virker også.

Kontroller disse efter installationen

  1. Åbn opkaldsporten. Tillad 8443/udp og 8443/tcp i serverens og din cloududbyders firewall.
  2. Tjek testtilstand. Testtilstand (DefaultEnabled) er slået fra som standard, så alle kan starte opkald. Slå Til i Systemkonsol › Plugins › Opkald, hvis du kun vil lade systemadministratorer starte opkald i kanaler, mens du kontrollerer, at opkald fungerer, og slå det derefter fra igen. Variablen er AM_CALLS_DEFAULT_ENABLED: true betyder, at testtilstand er slået fra. En server, der er flyttet fra Mattermost, beholder det valg, der er gemt i dens konfiguration.
  3. Bestem om video skal være tilgængelig. Slå video til (EnableVideo, AM_CALLS_ENABLE_VIDEO) er slået til som standard: folk kan slå deres kamera til, hvor opkald er tilladt, i direkte og gruppebeskeder samt i kanaler. I lydkanaler afgøres det af Lydkanaler-appens Tillad video i lydkanaler. Slå det fra, og ingen kan slå et kamera til, heller ikke i lydkanaler.
  4. Bag NAT, sæt den offentlige adresse (næste afsnit).

Hvor opkald er slået til

Alle fællesskaber har en type, arbejdsområde eller guild (se Guild eller arbejdsområde). En kanal, hvis administratorer ikke har aktiveret eller deaktiveret opkald, følger fællesskabets type:

  • i et arbejdsområde følger kanalerne serverens standard: opkald er aktiveret for alle, mens testtilstand er slået fra;
  • i en guild er opkald deaktiveret i kanaler: folk taler i lydkanaler i stedet. Kanal- og fællesskabsadministratorer kan stadig aktivere opkald i en kanal.

En kanals egne indstillinger har altid forrang. Direkte og gruppebeskeder tilhører ikke et fællesskab: opkald er slået til for alle der, mens testtilstand er slået fra. En ændring af et fællesskabs type gælder for opkald inden for 30 sekunder.

Porte, NAT og STUN

IndstillingVariabelStandard
RTC-serverport (UDP)AM_CALLS_UDP_SERVER_PORT8443
RTC-serverport (TCP)AM_CALLS_TCP_SERVER_PORT8443
RTC-serveradresse (UDP), (TCP)AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESStom: alle adresser
ICE Host OverrideAM_CALLS_ICE_HOST_OVERRIDEtom: fundet via STUN
ICE Host Port OverrideAM_CALLS_ICE_HOST_PORT_OVERRIDEtom: serverporten
ICE Servers ConfigurationsAM_CALLS_ICE_SERVERS_CONFIGS[{"urls":["stun:stun.cloudflare.com:3478"]}]
(Eksperimentelt) Aktiver IPv6-understøttelse(Systemkonsol)Fra

Porte skal være mellem 80 og 49151. Med webstedets compose-fil, ændr CALLS_PORT i .env: det sætter begge variabler og udgiver porten, samme nummer på værten og i containeren. Klienter forsøger først UDP og falder tilbage til TCP på samme port.

Hvilken adresse klienter sender medie til

Serveren fortæller hver klient adressen, de skal sende medie til (deres "host candidate"). Som standard finder den sin offentlige adresse ved at spørge en STUN-server, en offentlig tjeneste, der svarer med adressen og porten, en anmodning kom fra. Standarden er Cloudflares offentlige STUN-server, stun:stun.cloudflare.com:3478. Serveren er ikke den eneste, der bruger den: hver klient, der deltager i et opkald, spørger også den om sin egen offentlige adresse. STUN-serveren ser kun IP-adresser og porte, aldrig opkaldslyd, video eller beskeder.

En server, der stadig har Mattermosts STUN-server (stun.global.calls.mattermost.com) gemt i ICE Servers Configurations, for eksempel efter et skift fra Mattermost, bruger i stedet Cloudflares. Den gemte indstilling ændres ikke.

Sæt adressen selv, når:

  • serveren er bag NAT, eller har flere offentlige adresser: sæt ICE Host Override til den offentlige IP-adresse (eller et hostname, der løses til den);
  • NAT kortlægger en anden offentlig port til 8443: sæt også ICE Host Port Override til den offentlige port;
  • serveren har ingen internetadgang, eller du ikke ønsker, at serveren og klienterne skal kontakte en ekstern STUN-server: sæt ICE Host Override, og tom STUN-listen med AM_CALLS_ICE_SERVERS_CONFIGS=[]. Med ICE Host Override sat, spørger serveren ikke længere en STUN-server om sin adresse; den tomme liste forhindrer klienterne i at spørge en.
services:
  antimatter:
    environment:
      AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
      AM_CALLS_ICE_SERVERS_CONFIGS: "[]"

For at beholde STUN uden en tredjepart, kør din egen STUN-server (en TURN-server, såsom coturn, svarer også på STUN-anmodninger) og list den i ICE Servers Configurations i stedet, som i TURN-eksemplet nedenfor.

På et lokalt netværk alene, brug serverens LAN-adresse. Genstart serveren efter ændring af porte, adresser eller ICE-indstillinger, eller deaktiver og aktiver Calls-appen: medieserveren opsættes, når appen starter.

TURN, for strenge firewalls

Nogle netværk blokerer både UDP og udgående forbindelser til usædvanlige TCP-porte. Brugere på disse netværk har brug for en TURN-server, der videresender mediet via en port, de kan nå (ofte 443). Antimatter indeholder ikke en TURN-server; kør en TURN-server som coturn og tilføj den til ICE Servers Configurations, en JSON-liste:

[
  {"urls": ["stun:turn.example.com:3478"]},
  {"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
  • Ved brug af en fælles hemmelig nøgle (coturns use-auth-secret), skal du indsætte den samme nøgle i TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET): serveren udsteder kortvarige legitimationsoplysninger til hver klient, der er gyldige i TURN Credentials Expiration (minutes) (240 som standard).
  • Ved brug af faste legitimationsoplysninger, tilføj "username" og "credential" til TURN-posten i stedet.
  • Server Side TURN (slået fra som standard) bruger også TURN-serverne til forbindelser, der startes af serveren.

Andre opkaldsindstillinger

IndstillingVariabelStandardHvad den gør
Max call participantsAM_CALLS_MAX_CALL_PARTICIPANTS0 (ingen begrænsning)Største antal personer i ét opkald.
Allow screen sharing(Systemkonsol)tilGør det muligt for deltagere at dele deres skærm.
Enable call ringingAM_CALLS_ENABLE_RINGINGtilRinger til de andre i en direkte eller gruppebesked, når et opkald startes der.
Enable simulcast for screen sharing (Experimental)(Systemkonsol)FraSender skærmdelinger i flere kvaliteter.
Enable AV1 codec for screen sharing (Experimental)(Systemkonsol)FraIgnoreret, mens simulcast er slået til.

Lydkanalappen har to indstillinger i Systemkonsol › Plugins › Lydkanaler: Deltag, når en lydkanal åbnes (aktiveret som standard) og Tillad video i lydkanaler (aktiveret som standard, men se videoen ovenfor). Stemme er en kanaltype, der vælges, når kanalen oprettes (se Opret en kanal); der er ingen senere trin for at "omdanne til en lydkanal". Disse to indstillinger gælder stadig for alle lydkanaler. Oprettelse kræver, at Lydkanalappen er aktiv; uden den er Stemme gråtonet i dialogboksen for oprettelse af kanal.

The create-channel dialog with Voice picked: the Talk and Stage preset cards, Voice Channels app active
Stemme, når Lydkanalappen er aktiv: kortene Talk og Stage.
For at slukke for opkald helt, deaktiverer du Opkald-appen i Systemkonsol › Plugins › Plugin-håndtering eller sætter AM_CALLS_DISABLE=true. Lydkanalerne holder også op med at fungere.

Større servere: en ekstern rtcd

Som standard håndterer én Antimatter-server al medie til opkald. Ved mange samtidige opkald, eller for at holde mediet væk fra chatserveren, kan Calls-appen overføre mediet til rtcd, en separat medieserver (Mattermosts open-source rtcd, version 0.17 eller nyere). Indstil RTCD service URL (AM_CALLS_RTCD_SERVICE_URL), for eksempel https://rtcd.example.com: alle opkald går derefter igennem den, og klienter sender deres medie til rtcd's egen port i stedet for Antimatters. Kredensialer kan angives med AM_CALLS_RTCD_CLIENT_ID og AM_CALLS_RTCD_AUTH_KEY; uden dem registrerer appen sig selv hos rtcd. Der kræves ingen licens. Calls-appen viser administratorer en advarsel, der anbefaler rtcd, når en server ofte har mere end 50 personer i opkald samtidigt.

Transkription og live undertitler

Antimatter kan transkribere opkald med et tale-til-tekst-model, som du kører selv, og vise live undertitler, mens folk taler. Antimatter bruger enhver server, der tilbyder en OpenAI-kompatibel /v1/audio/transcriptions-endepunkt, såsom en Whisper-server på dit netværk. Der kræves ingen ekstra service fra Antimatter.

Sådan fungerer det

  • Værten for et opkald starter transkriptionen med Transkriber opkaldet i opkaldskontrollerne. Et Transkriberer-mærke giver besked til alle.
  • Hver deltagers app lytter til sin egen mikrofon, skærer talen op i korte stykker (op til 12 sekunder, aldrig mens de er lydløse) og sender dem til Antimatter, som videresender dem til din tale-til-tekst-server.
  • Med live undertitler slået til, vises teksten for hvert stykke straks som en undertitel for deltagerne.
  • Når transkriptionen stopper eller opkaldet slutter, poster Calls-botten transkriptet som en tekstfil og en WebVTT-undertitelfil i opkaldets tråd (i lydkanaler, i kanalen).
  • Når Opsummer transkriptioner er aktiveret, udsender AI-chatappens standardagent også en opsummering i tråden (se 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.
Efter opkaldet: transkriptet og dets opsummering i opkaldets tråd.

Sådan indstiller du det

Indstil disse på antimatter-tjenesten:

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
IndstillingVariabelHvad der skal indtastes
Slå opkaldstranskriptioner til (Beta)AM_CALLS_ENABLE_TRANSCRIPTIONStrue
Opkaldstranskribent-APIAM_CALLS_TRANSCRIBE_APIopenai (vises som "OpenAI-kompatibelt API (ingen jobtjenest)")
Tale-til-tekst-API URLAM_CALLS_TRANSCRIBE_API_OPEN_AIURLAPI'ets basis-URL, op til og med /v1.
Tale-til-tekst-modelAM_CALLS_TRANSCRIBE_API_OPEN_AI_MODELModelnavnet, som API'et kender det, for eksempel whisper-1. Påkrævet.
Tale-til-tekst-API-nøgleAM_CALLS_TRANSCRIBE_API_OPEN_AI_KEYSendes som en bearer token. Lad den stå tom, hvis API'et ikke kræver nogen.
Aktivér live undertitler (Beta)AM_CALLS_ENABLE_LIVE_CAPTIONStrue for undertitler under opkaldet.
Sprog for live undertitlerAM_CALLS_LIVE_CAPTIONS_LANGUAGEDet talte sprog som en to-bogstavskode (standard er en). Det sendes også til tale-til-tekst-API'et for transkriptioner, så sæt det, selvom du ikke bruger undertitler.
Opsummer transkriptionerAM_CALLS_SUMMARIZE_TRANSCRIPTIONStrue for en AI-opsummering efter opkaldet.
I Systemkonsolen vises transkriptionsindstillingerne først, når Aktivér optagelser af opkald er slået til, selvom denne type transkription ikke kræver en optagelse. Ved at indstille dem med de ovennævnte variabler undgår du dette. Slå ikke optagelser til sammen med openai-transkriptoren: Hvis en optagelse startes, forsøges der ellers at starte job-service-transkriptoren, hvilket vil fejle.

Lyden fra alle, der taler, mens transkription er aktiv, sendes til den tale-til-tekst-server, du har konfigureret, og transkriptionen lægges der, hvor alle i kanalen kan læse den. Giv dine brugere besked, og hold serveren på dit eget netværk, hvis opkaldene er fortrolige.

Optagelser

Optagelser af opkald (og transkription med den indbyggede whisper.cpp eller Azure-transkribenter) køres i separate containere, der startes af en jobtjeneste, Mattermosts open source calls-offloader, som du selv udruller ved siden af Antimatter. Indstillingerne er Enable call recordings (AM_CALLS_ENABLE_RECORDINGS, slukket som standard), Job service URL (AM_CALLS_JOB_SERVICE_URL), Maximum call recording duration (60 minutter som standard, 15 til 180) og Call recording quality (lav, medium eller høj; medium som standard). Der kræves ingen licens. Når optagelser er slået til, starter og stopper værten for et opkald en optagelse med Record the call i opkaldskontrollerne; alle i opkaldet kan se, at det optages, og optagelsen indlægges i opkaldets tråd, når den stopper. Opkald i lydkanaler har ingen tråd, så de kan ikke optages. Hvis du kun ønsker transkriptioner og undertitler, er den ovenstående tale-til-tekst-opsætning enklere: den kræver ingen jobtjeneste.