Aramalar ve ses
Aramalar ve ses kanalları, ses, video ve ekran paylaşımını doğrudan sunucuya, kendi portları üzerinden gönderir. Bu sayfa, ağ tarafını, kurulumdan sonra kontrol etmeniz gereken ayarları ve kendi çalıştırdığınız bir konuşma-dan-metne modeliyle transkripsiyonu kapsar.
Aramalar nasıl çalışır
Çağrılar, Çağrılar uygulaması (com.mattermost.calls kimliği) tarafından sağlanır ve bu uygulama varsayılan olarak yüklü ve etkinleştirilidir. Ses kanalları (Ses Kanalları uygulaması, antimatter-next imajı), Çağrılar üzerine inşa edilmiş kalıcı arama odalarıdır: Çağrıların etkin olması gerekir ve aynı ayarları, portları ve sunucuları kullanırlar.
Aramalar uygulaması, Antimatter içinde bir medya sunucusu çalıştırır. Web uygulaması, masaüstü uygulaması ve mobil uygulamalar WebRTC ile bu sunucuya bağlanır:
- sinyalizasyon (signalling), normal web bağlantısı üzerinden (HTTPS proxy'niz) geçer;
- medya (ses, video, ekran paylaşımı) ise bu yoldan geçmez: doğrudan sunucuya, varsayılan olarak 8443 UDP ve TCP portuna gider.
Ayarlar Sistem Konsolu › Uygulama Ekleri › Çağrılar bölümündedir. Bunların her biri, antimatter servisindeki AM_CALLS_ ortam değişkeniyle de ayarlanabilir; bu durumda Sistem Konsolu'na göre öncelikli olur ve oradaki ayarı kilitler. Eski MM_CALLS_ adları da çalışır.
Kurulumdan sonra şunları kontrol edin
- Aramalar portunu açın. Sunucunun ve bulut sağlayıcınızın güvenlik duvarında 8443/udp ve 8443/tcp'yi izin verin.
- Sınav modunu kontrol edin. Sınav modu (
DefaultEnabled) varsayılan olarak kapalıdır, bu nedenle herkes arama başlatabilir. Çağrıların çalıştığını kontrol ederken yalnızca sistem yöneticilerinin kanallarda arama başlatmasına izin vermek için Sistem Konsolu › Uygulama Ekleri › Çağrılar bölümünde Açık olarak ayarlayın, ardından tekrar kapatın. DeğişkenAM_CALLS_DEFAULT_ENABLED'dir:truedeğeri sınav modunun kapalı olduğunu belirtir. Mattermost'tan taşınan bir sunucu, yapılandırmasında kaydedilen seçimi korur. - Video konusunda karar verin. Videoyu etkinleştir (
EnableVideo,AM_CALLS_ENABLE_VIDEO) varsayılan olarak açıktır: çağrıların etkin olduğu her yerde, doğrudan ve grup iletilerinde ve kanallarda kişiler kameralarını açabilir. Ses kanallarında ise Ses kanallarında videoya izin ver ayarı (Ses Kanalları uygulamasından) belirleyicidir. Bunu kapatırsanız, ses kanallarında bile kimse kamerasını açamaz. - NAT arkasındaysanız, herkese açık adresi ayarlayın (aşağıdaki bölüm).
Çağrıların açık olduğu yerler
Her topluluğun bir türü vardır: Çalışma alanı veya Topluluk (bkz. Yeni toplulukların türü). Yöneticileri çağrıları açık veya kapalı olarak ayarlamamış bir kanal, topluluğun türüne uyar:
- bir çalışma alanında, kanallar sunucunun varsayılanını izler: sınav modu kapalıyken herkes için çağrılar açıktır;
- bir toplulukta, kanallarda çağrılar kapalıdır: kişiler bunun yerine ses kanallarında konuşur. Kanal ve topluluk yöneticileri yine de bir kanalda çağrıları açabilir.
Bir kanalın kendi ayarı her zaman önceliklidir. Doğrudan ve grup iletiler bir topluluğa ait değildir: sınav modu kapalıyken oradaki çağrılar herkes için açıktır. Bir topluluğun türündeki değişiklik, çağrılara 30 saniye içinde yansır.
Portlar, NAT ve STUN
| Ayar | Değişken | Varsayılan |
|---|---|---|
| RTC Sunucu Portu (UDP) | AM_CALLS_UDP_SERVER_PORT | 8443 |
| RTC Sunucu Portu (TCP) | AM_CALLS_TCP_SERVER_PORT | 8443 |
| RTC Sunucu Adresi (UDP), (TCP) | AM_CALLS_UDP_SERVER_ADDRESS, AM_CALLS_TCP_SERVER_ADDRESS | boş: tüm adresler |
| ICE Host Geçersiz Kılma | AM_CALLS_ICE_HOST_OVERRIDE | boş: STUN ile bulundu |
| ICE Host Port Geçersiz Kılma | AM_CALLS_ICE_HOST_PORT_OVERRIDE | boş: sunucu portu |
| ICE Sunucuları Yapılandırmaları | AM_CALLS_ICE_SERVERS_CONFIGS | [{"urls":["stun:stun.cloudflare.com:3478"]}] |
| (Deneysel) IPv6 desteğini etkinleştir | (Sistem Konsolu) | kapalı |
Portlar 80 ile 49151 arasında olmalıdır. Sitein compose dosyasında .env içindeki CALLS_PORT değerini değiştirin: bu, her iki değişkeni de ayarlar ve portu, hem ana makinede hem de konteynerde aynı numarayla yayınlar. İstemciler önce UDP'yi dener, aynı portta TCP'ye geri döner.
İstemcilerin medya gönderdiği adres
Sunucu, her istemciye medya göndermesi gereken adresi ("host adayı") bildirir. Varsayılan olarak, isteğin geldiği adresi ve portu yanıt olarak veren herkese açık bir STUN sunucusuna sorarak herkese açık adresini bulur. Varsayılan, Cloudflare'ın herkese açık STUN sunucusudur: stun:stun.cloudflare.com:3478. Bunu kullanan tek taraf sunucu değildir: bir aramaya katılan her istemci de kendi herkese açık adresini bu sunucudan sorar. STUN sunucusu yalnızca IP adreslerini ve portları görür; asla arama sesini, videosunu veya iletilerini görmez.
Örneğin Mattermost'tan taşınma sonrasında ICE Sunucuları Yapılandırmaları içinde hâlâ Mattermost'un STUN sunucusu (stun.global.calls.mattermost.com) kayıtlı olan bir sunucu, bunun yerine Cloudflare'ınkini kullanır. Kayıtlı ayar değiştirilmez.
Adresi kendiniz ayarlayın:
- sunucu NAT arkasındaysa veya birden fazla herkese açık adresi varsa: ICE Host Geçersiz Kılma değerini herkese açık IP adresine (veya bu adrese çözülen bir ana makine adına) ayarlayın;
- NAT, 8443 portuna farklı bir herkese açık portu eşliyorsa: ICE Host Port Geçersiz Kılma değerini de o herkese açık porta ayarlayın;
- sunucunun internet erişimi yoksa veya sunucu ile istemcilerin dış bir STUN sunucusuna bağlanmasını istemiyorsanız: ICE Host Geçersiz Kılma değerini ayarlayın ve STUN listesini
AM_CALLS_ICE_SERVERS_CONFIGS=[]ile boşaltın. ICE Host Geçersiz Kılma ayarlandığında sunucu adresi için bir STUN sunucusuna soru sormaz; boş liste, istemcilerin soru sormasını engeller.
services:
antimatter:
environment:
AM_CALLS_ICE_HOST_OVERRIDE: 203.0.113.10
AM_CALLS_ICE_SERVERS_CONFIGS: "[]"
STUN'u üçüncü taraflar olmadan kullanmaya devam etmek için kendi STUN sunucunuzu çalıştırın (coturn gibi bir TURN sunucusu da STUN isteklerine yanıt verir) ve aşağıdaki TURN örneğinde olduğu gibi ICE Sunucuları Yapılandırmaları içinde onu listeleyin.
Yalnızca yerel ağda, sunucunun LAN adresini kullanın. Portları, adresleri veya ICE ayarlarını değiştirdikten sonra sunucuyu yeniden başlatın veya Calls uygulamasını devre dışı bırakıp etkinleştirin: medya sunucusu, uygulama başlatıldığında yapılandırılır.
Katı güvenlik duvarları için TURN
Bazı ağlar, hem UDP'yi hem de alışılmadık TCP portlarına giden bağlantıları engeller. Bu ağlardaki kullanıcılar, medyanın erişilebilir bir port üzerinden (genellikle 443) iletilmesini sağlayan bir TURN sunucusuna ihtiyaç duyar. Antimatter bir TURN sunucusu içermez; coturn gibi bir TURN sunucusu çalıştırın ve bunu ICE Servers Configurations adlı JSON listesine ekleyin:
[
{"urls": ["stun:turn.example.com:3478"]},
{"urls": ["turn:turn.example.com:3478?transport=udp", "turns:turn.example.com:443?transport=tcp"]}
]
- Paylaşılan bir gizli anahtar kullanıyorsanız (coturn'ün
use-auth-secretözelliği), aynı gizli anahtarı TURN Static Auth Secret (AM_CALLS_TURN_STATIC_AUTH_SECRET) alanına girin: sunucu, her istemciye TURN Credentials Expiration (minutes) (varsayılan olarak 240) süresince geçerli olan kısa ömürlü kimlik bilgileri verir. - Sabit kimlik bilgileri kullanıyorsanız, bunun yerine TURN girdisine
"username"ve"credential"alanlarını ekleyin. - Server Side TURN (varsayılan olarak kapalı), sunucunun başlattığı bağlantılar için de TURN sunucularını kullanır.
Diğer arama ayarları
| Ayar | Değişken | Varsayılan | Ne işe yarar |
|---|---|---|---|
| Max call participants | AM_CALLS_MAX_CALL_PARTICIPANTS | 0 (sınırsız) | Tek bir aramada bulunabilecek en yüksek kişi sayısı. |
| Allow screen sharing | (Sistem Konsolu) | açık | Katılımcıların ekranlarını paylaşmasına olanak tanır. |
| Enable call ringing | AM_CALLS_ENABLE_RINGING | açık | Bir doğrudan veya grup iletisinde arama başladığında, o iletideki diğer kişileri çalar. |
| Enable simulcast for screen sharing (Experimental) | (Sistem Konsolu) | kapalı | Ekran paylaşımlarını birden fazla kalitede gönderir. |
| Enable AV1 codec for screen sharing (Experimental) | (Sistem Konsolu) | kapalı | Simulcast açıkken yok sayılır. |
Ses Kanalları uygulamasının Sistem Konsolu › Uygulama ekleri › Ses Kanalları bölümünde iki ayarı vardır: Ses kanalını açarken katıl (varsayılan olarak açıktır) ve Ses kanallarında videoya izin ver (varsayılan olarak açıktır, ancak yukarıdaki videoya bakın). Topluluk yöneticileri, bir kanalı ayarları bölümünden ses kanalına dönüştürür.
AM_CALLS_DISABLE=true değerini ayarlayın. Bu durumda ses kanalları da çalışmayı durdurur.Daha büyük sunucular: harici rtcd
Varsayılan olarak bir Antimatter sunucusu tüm arama medyasını taşır. Birçok eşzamanlı arama için veya medyayı sohbet sunucusundan uzak tutmak için, Calls uygulaması medyayı rtcd adlı ayrı bir medya sunucusuna (Mattermost'un açık kaynaklı rtcd sürümü 0.17 veya üzeri) devredebilir. RTCD service URL (AM_CALLS_RTCD_SERVICE_URL) ayarını yapılandırın, örneğin https://rtcd.example.com: bu durumda tüm aramalar bu sunucu üzerinden geçer ve istemciler medyalarını Antimatter'in portuna değil, rtcd'nin kendi portuna gönderir. Kimlik bilgileri AM_CALLS_RTCD_CLIENT_ID ve AM_CALLS_RTCD_AUTH_KEY ile verilebilir; bunlar verilmezse uygulama kendisini rtcd'ye kaydeder. Lisans gerekmez. Calls uygulaması, sunucuda aynı anda 50'den fazla kişinin aramada olduğu durumlarda yöneticilere rtcd kullanmalarını öneren bir uyarı gösterir.
Transkripsiyon ve canlı altyazılar
Antimatter, kendinizin çalıştırdığı bir konuşma-metin modelini kullanarak aramaları transkribe edebilir ve kişiler konuşurken canlı altyazılar gösterebilir. Antimatter, ağınızda bir Whisper sunucusu gibi, OpenAI uyumlu /v1/audio/transcriptions uç noktası sunan herhangi bir sunucuyu kullanabilir. Antimatter'den ek bir hizmet gerekmez.
Nasıl çalışır
- Bir aramanın ev sahibi, arama kontrollerindeki Aramayı transkribe et seçeneğiyle transkripsiyonu başlatır. Transkripsiyon yapılıyor rozeti, bu durumu herkesin bilmesini sağlar.
- Her katılımcının uygulaması kendi mikrofonunu dinler, konuşmayı kısa parçalara böler (en fazla 12 saniye, sessize alındığında asla) ve bunları Antimatter'e gönderir; Antimatter de onları konuşma-metin sunucunuza iletir.
- Canlı altyazılar açıkken, her parçanın metni katılımcılara anında bir altyazi olarak gösterilir.
- Transkripsiyon durduğunda veya arama sona erdiğinde, Calls botu transkripti bir metin dosyası ve bir WebVTT altyazı dosyası olarak, aramanın konusuna (ses kanallarında, kanala) gönderir.
- Summarize transcriptions açıkken, Agents uygulamasının varsayılan ajanı da konuya bir özet gönderir (bkz. AI).

Yapılandırma
Bunları antimatter hizmetinde yapılandırın:
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
| Ayar | Değişken | Girilecek değer |
|---|---|---|
| Enable call transcriptions (Beta) | AM_CALLS_ENABLE_TRANSCRIPTIONS | true |
| Call transcriber API | AM_CALLS_TRANSCRIBE_API | openai ("OpenAI-compatible API (no job service)" olarak gösterilir) |
| Speech-to-text API URL | AM_CALLS_TRANSCRIBE_API_OPEN_AIURL | API'nin temel URL'si, /v1 dahil. |
| Speech-to-text model | AM_CALLS_TRANSCRIBE_API_OPEN_AI_MODEL | API'nin bildiği model adı, örneğin whisper-1. Zorunludur. |
| Speech-to-text API key | AM_CALLS_TRANSCRIBE_API_OPEN_AI_KEY | Bearer token olarak gönderilir. API gerekmiyorsa boş bırakın. |
| Canlı altyazıları etkinleştir (Beta) | AM_CALLS_ENABLE_LIVE_CAPTIONS | Arama sırasında altyazılar için true. |
| Canlı altyazı dili | AM_CALLS_LIVE_CAPTIONS_LANGUAGE | Konuşulan dil, iki harfli kod olarak (en varsayılan). Transkripsiyonlar için de konuşmadan metne dönüştürme API'sine gönderildiğinden, altyazı olmasa bile ayarlayın. |
| Transkripsiyonları özetle | AM_CALLS_SUMMARIZE_TRANSCRIPTIONS | Arama sonrasında bir yapay zeka özeti için true. |
openai transkripsiyoneriyle birlikte kayıtları açmayın: kayıt başlatıldığında job-service transkripsiyonerini başlatmaya çalışır ve başarısız olur.Transkripsiyon açıkken konuşan herkesin sesi, yapılandırdığınız konuşmadan metne dönüştürme sunucusuna gider ve transkripsiyon, kanaldaki herkesin okuyabileceği şekilde paylaşılır. Kullanıcılarınıza bunu bildirin ve aramalar gizliyse bu sunucuyu kendi ağınızda tutun.
Kayıtlar
Arama kayıtları (ve yerleşik whisper.cpp veya Azure transkripsiyon araçlarıyla transkripsiyon), Antimatter'in yanına kendiniz dağıtmanız gereken, Mattermost'un açık kaynaklı calls-offloader görev hizmeti tarafından başlatılan ayrı konteynerlerde çalışır. Ayarlar şunlardır: Arama kayıtlarını etkinleştir (AM_CALLS_ENABLE_RECORDINGS, varsayılan olarak kapalı), Görev hizmeti URL'si (AM_CALLS_JOB_SERVICE_URL), Maksimum arama kaydı süresi (varsayılan olarak 60 dakika, 15 ile 180 arasında) ve Arama kaydı kalitesi (düşük, orta veya yüksek; varsayılan olarak orta). Lisans gerekmez. Kayıtlar etkinleştirildiğinde, bir aramanın ev sahibi, arama kontrollerindeki Aramayı kaydet seçeneğiyle kaydı başlatır ve durdurur; aramada bulunan herkes kaydın yapıldığını görür ve kayıt durduğunda, kayda ait dosya aramanın konusuna gönderilir. Ses kanallarındaki aramaların konusu olmadığından kaydedilemez. Sadece transkripsiyon ve altyazılar için, yukarıdaki konuşmadan metne ayarları daha basittir: görev hizmeti gerektirmez.