Sprecher-Diarisierung in Echtzeit im großen Maßstab
July 20, 2025
•min read
Engineering
Abbildung 1: Trennung von Audioströmen in Echtzeit
Das „Cocktailparty“-Problem
Menschen können sich hervorragend auf eine einzelne Stimme in einem lauten Raum konzentrieren. Computern fällt das schwer.
In einem Mono-Kanal-VoIP-Anruf (üblich in älterer Telefonie) sind Agent und Kunde in einem einzigen Strom vermischt.
Um einen KI-Agenten zu bauen, der weiß, wann er unterbrechen soll, müssen Sie wissen, wer spricht.
Die Architektur
1. Embedding auf Frame-Ebene
Wir zerlegen das Audio in 500-ms-Fenster und leiten sie durch einen leichtgewichtigen Encoder (SpeechBrain ECAPA-TDNN).
Ausgabe: ein 192-dimensionaler Vektor, der die „Klangfarbe“ dieses Abschnitts beschreibt.
2. Hybride Architektur
Wir sind von rein anwendungsinterner Diarisierung (Pyannote) zu einem hybriden Ansatz übergegangen:
- Externe Diarisierung: Wir übernehmen vordiarisierte Segmente aus durchsatzstarken APIs (etwa Google speech-to-text oder OpenAI).
- Interne Verifizierung: Wir führen unsere 192-dim-ECAPA-TDNN-Verifizierung lokal aus, um „gegenzuprüfen“ und Identitäten an bekannte Stimmprofile zu binden.
3. Latenzbeschränkungen
Cloud-APIs übernehmen die Karte „Wer sprach wann?“.
IdentityCall übernimmt die Verifizierung „Ist das Agent X?“.
- Budget: 50 ms Verarbeitungszeit pro Frame für die Verifizierung.
- Optimierung: Wir führen den Encoder in ONNX Runtime auf der GPU aus, quantisiert auf INT8.
Umgang mit Überlappung
Der schwierigste Teil ist „überlappende Sprache“ (etwa 10–15 % eines Anrufs).
Standardmodelle wählen den „lautesten“ Sprecher.
Wir verwenden Multi-Label-Diarisierung und weisen einem einzigen Zeitfenster zwei Sprecher-Labels zu, wenn das Embedding auf eine Mischung hindeutet.
Fazit
Eine gute Diarisierung ist die Voraussetzung für eine gute Transkription. Wenn Sie das „Hallo“ des Agenten dem Kunden zuordnen, ist Ihr gesamter Kontext von Anfang an fehlerhaft.
Tags: