Samtaler og tale

Samtaler og talekanaler sender lyd, video og skjermdeling direkte til tjeneren på deres egen port. Denne siden dekker nettverksaspektet, innstillingene du bør sjekke etter installasjon, og transkripsjon med en tale-til-tekst-modell du kjører selv.

Slik fungerer samtaler

Samtaler leveres av Samtaler-appen (id com.mattermost.calls), som er installert og aktivert som standard. Talekanaler (appen Talekanaler, antimatter-next-bilde) er permanente samtalerom bygget på Samtaler: de krever at Samtaler er aktivert og bruker de samme innstillingene, portene og tjenerne.

Samtaler-appen kjører en medietjener inne i Antimatter. Nettappen, skrivebordsappen og mobilappene kobler seg til den med WebRTC:

  • signaleringen går gjennom den vanlige nettforbindelsen (din HTTPS-proxy);
  • mediet (lyd, video, skjermdeling) gjør det ikke: det går direkte til tjeneren på samtaleporten, 8443 UDP og TCP som standard.

Innstillingene finnes i Systemkonsoll › Plugins › Samtaler. Hver av dem kan også settes med en AM_CALLS_-miljøvariabel på antimatter-tjenesten, som da har forrang over Systemkonsollen og låser innstillingen der. De eldre MM_CALLS_-navnene fungerer også.

Sjekk disse etter installasjon

  1. Åpne samtaleporten. Tillat 8443/udp og 8443/tcp i brannmuren på tjeneren og hos din skytjenesteleverandør.
  2. Kontroller testmodus. Testmodus (DefaultEnabled) er slått av som standard, slik at alle kan starte samtaler. Slå den På i Systemkonsoll › Plugins › Samtaler for å la kun systemadministratorer starte samtaler i kanaler mens du sjekker at samtaler fungerer, og slå den av igjen. Variabelen er AM_CALLS_DEFAULT_ENABLED: true betyr at testmodus er av. En server som er flyttet fra Mattermost beholder valget som er lagret i konfigurasjonen.
  3. Velg om video skal brukes. Slå på video (EnableVideo, AM_CALLS_ENABLE_VIDEO) er på som standard: folk kan slå på kameraet der samtaler er tillatt, i direktemeldinger, gruppemeldinger og kanaler. I talekanaler avgjør Tillat video i talekanaler i appen Talekanaler. Slå det av, og ingen kan slå på kameraet, heller ikke i talekanaler.
  4. Bak NAT, sett den offentlige adressen (neste avsnitt).

Der samtaler er på

Hvert fellesskap har en type, Arbeidsplass eller Fellesskap (se Type for nye fellesskap). En kanal hvis administratorer ikke har slått samtaler på eller av, følger fellesskapets type:

  • i en arbeidsplass følger kanaler serverens standard: samtaler er på for alle mens testmodus er av;
  • i et fellesskap er samtaler av i kanaler: folk snakker i talekanaler i stedet. Kanal- og fellesskapsadministratorer kan fortsatt slå på samtaler i en kanal.

Kanalens egne innstillinger har alltid forrang. Direktemeldinger og gruppemeldinger tilhører ikke et fellesskap: samtaler der er på for alle mens testmodus er av. En endring av fellesskapets type gjelder for samtaler innen 30 sekunder.

Porter, NAT og STUN

InnstillingVariabelStandard
RTC Server Port (UDP)AM_CALLS_UDP_SERVER_PORT8443
RTC Server Port (TCP)AM_CALLS_TCP_SERVER_PORT8443
RTC Server Address (UDP), (TCP)AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESStom: alle adresser
ICE Host OverrideAM_CALLS_ICE_HOST_OVERRIDEtom: funnet 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-støtte(Systemkonsoll)av

Portene må være mellom 80 og 49151. Med nettstedets compose-fil, endre CALLS_PORT i .env: den setter begge variablene og publiserer porten, samme nummer på verten og i containeren. Klienter prøver først UDP og faller tilbake til TCP på samme port.

Hvilken adresse klienter sender medier til

Serveren forteller hver klient adressen de skal sende medier til (deres "host candidate"). Som standard finner den sin offentlige adresse ved å spørre en STUN-server, en offentlig tjeneste som svarer med adressen og porten en forespørsel kom fra. Standarden er Cloudflares offentlige STUN-server, stun:stun.cloudflare.com:3478. Serveren er ikke den eneste som bruker den: hver klient som blir med i en samtale spør også den om sin egen offentlige adresse. STUN-serveren ser bare IP-adresser og porter, aldri lyd, video eller meldinger fra samtalen.

En server som fortsatt har Mattermosts STUN-server (stun.global.calls.mattermost.com) lagret i ICE Servers Configurations, for eksempel etter en flytting fra Mattermost, bruker Cloudflares i stedet. Den lagrede innstillingen endres ikke.

Sett adressen selv når:

  • serveren er bak NAT, eller har flere offentlige adresser: sett ICE Host Override til den offentlige IP-adressen (eller et vertsnavn som løses til den);
  • NAT-mappingen kobler en annen offentlig port til 8443: sett også ICE Host Port Override til den offentlige porten;
  • serveren har ingen internetttilgang, eller du ikke ønsker at serveren og klientene skal kontakte en ekstern STUN-server: sett ICE Host Override, og tøm STUN-listen med AM_CALLS_ICE_SERVERS_CONFIGS=[]. Når ICE Host Override er satt, spør serveren ikke lenger en STUN-server om sin adresse; den tomme listen stopper klientene fra å gjøre det.
services:
  antimatter:
    environment:
      AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
      AM_CALLS_ICE_SERVERS_CONFIGS: "[]"

For å beholde STUN uten en tredjepart, kjør din egen STUN-server (en TURN-server som coturn svarer også på STUN-forespørsler) og list den i ICE Servers Configurations i stedet, som i TURN-eksemplet nedenfor.

På et lokalt nettverk, bruk serverens LAN-adresse. Start serveren på nytt etter å ha endret porter, adresser eller ICE-innstillinger, eller deaktiver og aktiver Calls-appen: medieserveren settes opp når appen starter.

TURN, for strenge brannmurer

Noen nettverk blokkerer både UDP og utgående tilkoblinger til uvanlige TCP-porter. Folk som bruker slike nettverk trenger en TURN-tjener, som vider media over en port de kan nå (ofte 443). Antimatter inneholder ikke en TURN-tjener; kjør en TURN-tjener som coturn og legg den til i 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"]}
]
  • Med en delt nøkkel (coturns use-auth-secret), legg den samme nøkkelen i TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET): Tjeneren gir hver klient kortvarige legitimasjonspapirer, gyldige i TURN Credentials Expiration (minutes) (240 som standard).
  • Med faste legitimasjonspapirer, legg "username" og "credential" i TURN-posten i stedet.
  • Server Side TURN (av som standard) bruker også TURN-tjenerne for tilkoblinger som tjeneren starter.

Andre samtaleinnstillinger

InnstillingVariabelStandardHva det gjør
Max call participantsAM_CALLS_MAX_CALL_PARTICIPANTS0 (ingen grense)Største antall personer i én samtale.
Allow screen sharing(Systemkonsoll)påGir deltakerne mulighet til å dele skjermen sin.
Enable call ringingAM_CALLS_ENABLE_RINGINGpåRinger de andre i en direktemelding eller gruppemelding når en samtale starter der.
Enable simulcast for screen sharing (Experimental)(Systemkonsoll)avSender skjermdelinger i flere kvalitetsnivåer.
Enable AV1 codec for screen sharing (Experimental)(Systemkonsoll)avIgnorerer mens simulcast er på.

Talekanal-appen har to innstillinger i Systemkonsoll › Plugins › Talekanaler: Bli med når en talekanal åpnes (på som standard) og Tillat video i talekanaler (på som standard, men se videoen over). Administratører i fellesskapet gjør en kanal om til en talekanal i kanalens innstillinger.

For å slå av samtaler helt, deaktiverer du Samtaler-appen i Systemkonsoll › Plugins › Pluginhåndtering, eller du setter AM_CALLS_DISABLE=true. Da slutter talekanaler også å fungere.

Større servere: en ekstern rtcd

Som standard håndterer én Antimatter-server all samtalemedie. For mange samtidige samtaler, eller for å holde mediet vekk fra chatserveren, kan Samtale-appen overlate mediet til rtcd, en separat medieserver (Mattermosts open source rtcd, versjon 0.17 eller nyere). Sett RTCD service URL (AM_CALLS_RTCD_SERVICE_URL), for eksempel https://rtcd.example.com: da går alle samtaler gjennom den, og klientene sender mediet til rtcds egen port i stedet for Antimatters. Kredensialer kan gis med AM_CALLS_RTCD_CLIENT_ID og AM_CALLS_RTCD_AUTH_KEY; uten dem registrerer appen seg selv hos rtcd. Ingen lisens er nødvendig. Samtale-appen viser administratorer en advarsel som anbefaler rtcd når en server ofte har mer enn 50 personer i samtaler samtidig.

Transkripsjon og live-tekst

Antimatter kan transkribere samtaler med et tale-til-tekst-modell som du kjører selv, og vise live-tekst mens folk snakker. Antimatter bruker enhver server som tilbyr en OpenAI-kompatibel /v1/audio/transcriptions-endpoint, for eksempel en Whisper-server på nettverket ditt. Ingen ekstra tjeneste fra Antimatter er nødvendig.

Slik fungerer det

  • Verten for en samtale starter transkripsjon med Transkriber samtalen i samtalekontrollene. Et Transkriberer-merke forteller alle om dette.
  • Hver deltakers app lytter til sin egen mikrofon, kutter talen i korte stykker (opp til 12 sekunder, aldri mens dempet) og sender dem til Antimatter, som vider dem til din tale-til-tekst-server.
  • Med live-tekst på, vises teksten for hvert stykke til deltakerne som en tekstlinje umiddelbart.
  • Når transkripsjonen stopper eller samtalen slutter, poster Samtale-botten transkriptet som en tekstfil og en WebVTT-undertekstfil, i samtaletråden (i talekanaler, i kanalen).
  • Med Oppsummer transkripsjoner på, poster også standardagenten i Agents-appen en oppsummering 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.
Etter samtalen, transkriptet og dens oppsummering i samtaletråden.

Sett det opp

Sett 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
InnstillingVariabelHva du skal oppgi
Slå på samtaletranskripsjoner (Beta)AM_CALLS_ENABLE_TRANSCRIPTIONStrue
Samtaletranskribator APIAM_CALLS_TRANSCRIBE_APIopenai (vises som "OpenAI-compatible API (no job service)")
Tale-til-tekst API URLAM_CALLS_TRANSCRIBE_API_OPEN_AIURLAPIs basis-URL, opp til og med /v1.
Tale-til-tekst modellAM_CALLS_TRANSCRIBE_API_OPEN_AI_MODELModellnavnet slik APIet kjenner det, for eksempel whisper-1. Påkreves.
Tale-til-tekst API-nøkkelAM_CALLS_TRANSCRIBE_API_OPEN_AI_KEYSendes som en bearer token. La den stå tom hvis APIet ikke krever noen.
Slå på live-tekst (Beta)AM_CALLS_ENABLE_LIVE_CAPTIONStrue for live-tekst under samtalen.
Språk for live-tekstAM_CALLS_LIVE_CAPTIONS_LANGUAGEDet talte språket, som en to-bokstavs-kode (en som standard). Det sendes også til tale-til-tekst-API-et for transkripsjoner, så sett det selv uten live-tekst.
Oppsummer transkripsjonerAM_CALLS_SUMMARIZE_TRANSCRIPTIONStrue for en AI-sammendrag etter samtalen.
I Systemkonsollen vises transkripsjonsinnstillingene bare når Slå på opptak av samtaler er på, selv om denne typen transkripsjon ikke krever opptak. Ved å sette dem med variablene ovenfor unngår du dette. Slå ikke på opptak sammen med openai-transkribenten: Da ville starten på et opptak forsøke å starte job-service-transkribenten og feile.

Lyden fra alle som snakker mens transkripsjon er på, sendes til tale-til-tekst-serveren du har konfigurert, og transkripsjonen publiseres der alle i kanalen kan lese den. Informer brukerne dine, og hold serveren på ditt eget nettverk hvis samtaler er fortrolige.

Opptak

Opptak av samtaler (og transkripsjon med innebygde whisper.cpp- eller Azure-transkribenter) kjøres i separate containere som startes av en jobb-tjeneste, Mattermosts open source-løsning calls-offloader, som du selv må distribuere ved siden av Antimatter. Innstillingene er Enable call recordings (AM_CALLS_ENABLE_RECORDINGS, av 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, middels eller høy; middels som standard). Ingen lisens er nødvendig. Når opptak er aktivert, starter og stopper verten for en samtale opptaket med Record the call i samtalekontrollene. Alle i samtalen ser at det foregår et opptak, og opptaket legges i samtaletråden når det stoppes. Samtaler i talekanaler har ingen tråd, og kan derfor ikke tas opp. Hvis du bare trenger transkripsjoner og live-tekst, er oppsettet for tale-til-tekst over enklere: det krever ingen jobb-tjeneste.