Sprecher-Diarization auf dem Telefon: ein Deep Dive
Wie wir End-to-End-Sprecher-Diarization in Echtzeit unter 4 W laufen lassen — ohne eine einzige Audiosekunde hochzuladen.
Das Problem
Diarization beantwortet "wer wann gesprochen hat". Sie ist der Unterschied zwischen einem Transkript, das eine Textwand ist, und einem, das ein Gespräch ist. Ohne Diarization gehört "lass uns rausgehen" niemandem; mit landet es auf einem konkreten Namen und wird zur Aufgabe.
Die Pipeline
- VAD (Sprachaktivitätserkennung) — Tor zu allem Weiteren. Wir verbrennen nur Zyklen, wenn echte Sprache anliegt. Unser VAD ist ein 200 KB CNN auf log-mel-Features, das alle 10 ms läuft.
- Sprecher-Embedding — extrahiert pro Sprachsegment einen 192-dimensionalen, fix langen Vektor. Wir nutzen ein ECAPA-TDNN-artiges Modell, destilliert auf 12 MB int8.
- Online-Clustering — agglomerativ mit Verfeinerung. Neue Evidenz aktualisiert vergangene Labels.
- Glättung — kurze Wechsel unter 400 ms werden verschmolzen, um UI-Flackern zu verhindern.
Was auf Mobile schwer ist
- Das Embedding-Modell muss klein genug sein, um neben dem ASR-Modell und einem LLM-Summarizer im selben Speicherbudget zu wohnen.
- Clustering muss inkrementell sein — wir können nicht in jedem Schritt das gesamte Meeting neu clustern. Wir nutzen einen Online-agglomerativen Clusterer mit konstantem Speicher und Cosinus-Distanz.
- Die UI darf beim Verfeinern von Labels nicht flackern. Wir animieren den Wechsel mit 200 ms Crossfade statt Text zu tauschen.
- Überlappende Sprache (zwei Personen gleichzeitig) bricht die Single-Label-Annahme. Solche Bereiche labeln wir auf den dominanten Sprecher und markieren das Segment als "overlap", damit die nachgelagerte Zusammenfassung Gewicht reduziert.
Wo wir gelandet sind
Ein 12-MB-Embedding-Modell, ein Streaming-Clustering-Algorithmus mit 6-Sekunden-Update-Fenster und eine Transkriptansicht, die Label-Wechsel animiert statt springen lässt. Median-Latenz End-to-End bis zum ersten Label: 950 ms auf iPhone 15 Pro, 1,6 s auf Pixel 8a.
Was noch wehtut
- Ähnliche Stimmen — gleiche Tonlage, gleicher Akzent, gleiches Geschlecht — verwirren das Embedding für die ersten ~30 Sekunden. Wir blenden das in der UI als "Stimmen werden noch gelernt" ein.
- Crosstalk in lauten Räumen verschlechtert sich abrupt. Wir testen eine winzige On-Device-Quellseparations-Vorstufe.