Ölçekte Gerçek Zamanlı Konuşmacı Ayrıştırma
July 20, 2025
•min read
Mühendislik
Şekil 1: Ses akışlarını gerçek zamanda ayırma
”Kokteyl Partisi” Problemi
İnsanlar gürültülü bir odada tek bir sese odaklanmakta çok iyidir. Bilgisayarlar zorlanır.
Tek kanallı bir VoIP çağrısında (eski telefon sistemlerinde yaygındır), temsilci ve müşteri tek bir akışta karışır.
Ne zaman araya gireceğini bilen bir yapay zekâ temsilcisi kurmak için, kimin konuştuğunu bilmeniz gerekir.
Mimari
1. Kare Düzeyinde Embedding
Sesi 500 ms’lik pencerelere böler ve bunları hafif bir kodlayıcıdan (SpeechBrain ECAPA-TDNN) geçiririz.
Çıktı: O dilimin “tınısını” tanımlayan 192 boyutlu bir vektör.
2. Hibrit Mimari
Yalnızca uygulama içi ayrıştırmadan (Pyannote) Hibrit Bir Yaklaşıma geçtik:
- Harici Ayrıştırma: Yüksek verimli API’lerden (Google speech-to-text veya OpenAI gibi) önceden ayrıştırılmış segmentleri alırız.
- Dahili Doğrulama: 192 boyutlu ECAPA-TDNN doğrulamamızı yerel olarak çalıştırarak “çift kontrol” yapar ve kimlikleri bilinen ses profillerine bağlarız.
3. Gecikme Kısıtları
Bulut API’leri “Kim ne zaman konuştu?” haritasını işler.
IdentityCall ise “Bu, Temsilci X mi?” doğrulamasını işler.
- Bütçe: Doğrulama için kare başına 50 ms işleme süresi.
- Optimizasyon: Kodlayıcıyı, INT8’e nicelenmiş olarak GPU üzerinde ONNX Runtime’da çalıştırırız.
Örtüşmeyi Ele Alma
En zor kısım “Örtüşen Konuşma”dır (bir çağrının yaklaşık %10-15’i).
Standart modeller “en yüksek sesli” konuşmacıyı seçer.
Biz Çok Etiketli Ayrıştırma kullanırız; embedding bir karışım olduğunu düşündürüyorsa tek bir zaman aralığına iki konuşmacı etiketi atarız.
Sonuç
İyi ayrıştırma, iyi transkripsiyonun ön koşuludur. Temsilcinin “Merhaba”sını müşteriye atfederseniz, tüm bağlamınız bozuk başlar.
Tags: