Barge-in im Telefon-Voicebot: wenn der Bot sich selbst ins Wort fällt
Ein Voicebot soll unterbrechbar sein. Am Telefon hört er aber auch sein eigenes Echo. Wie wir echte Unterbrechungen von Selbstgesprächen trennen: Sperrzeit, lokale Sprachdetektion, Abklingzeit und das Wegwerfen alter Antworten.
Ein Voicebot, den man nicht unterbrechen kann, fühlt sich an wie eine Warteschleife mit Wortschatz. Also baut man Barge-in ein: Sobald der Anrufer spricht, hört der Bot auf. Am Telefon hat diese Regel einen Haken, den man erst im Livebetrieb sieht – der Bot hört auch sich selbst.
Das Problem: der Bot unterbricht sich selbst
Die Kette ist schnell erzählt. Der Bot beginnt zu sprechen. Der Anrufer telefoniert über Freisprechen, Lautsprecher oder einen Softphone-Client, und ein Teil der Bot-Stimme läuft über das Mikrofon zurück in die Leitung. Die Sprachaktivitätserkennung auf der Gegenseite meldet daraufhin „Nutzer spricht“, und die Barge-in-Logik tut, was sie soll: Sie bricht die laufende Antwort ab.
In unseren Protokollen sah das so aus, dass Antworten nach 4 beziehungsweise 109 Millisekunden abgeschnitten wurden, mit dem Vermerk, dass kein einziges abgespieltes Audiostück behalten wurde. Für den Anrufer heißt das: Der Bot setzt an, verstummt, setzt wieder an. Kein Mensch unterbricht nach vier Millisekunden. Ein Echo schon.
Das Tückische daran: Im Test am Headset tritt der Fehler nicht auf. Er hängt am Endgerät des Anrufers, also an genau dem Teil der Strecke, den man nicht kontrolliert.
Erste Maßnahme: eine Sperrzeit nach dem Sprechbeginn
Die einfachste wirksame Regel lautet: Unterbrechungen, die sehr kurz nach dem Beginn der Bot-Ausgabe eintreffen, gelten als Echo und werden verworfen. Bei uns liegt die Grenze bei 400 Millisekunden ab dem Moment, in dem das erste Audio an die Telefonie geht.
ECHO_GUARD_MS = 400
if state.audio_send_started_at is not None:
spoken_ms = int((loop.time() - state.audio_send_started_at) * 1000)
if spoken_ms < ECHO_GUARD_MS:
logger.info("Echo-Schutz: Interrupt nach %d ms verworfen", spoken_ms)
returnDas ist eine Heuristik, und man sollte sie auch so nennen. Sie verhindert die Selbstunterbrechungs-Schleife, nimmt dem Anrufer aber die Möglichkeit, den Bot in den ersten Sekundenbruchteilen abzuwürgen. Dieser Preis ist vertretbar, weil ein echter Anrufer in diesem Fenster ohnehin selten etwas Sinnvolles sagt. Eine saubere Echounterdrückung ersetzt sie nicht.
Zweite Lektion: ein Abbruch muss wirklich abbrechen
Eine frühere Fassung war an anderer Stelle zu höflich. Hatte das Sprachmodell seine Antwort bereits vollständig erzeugt, verzichteten wir auf das Abbrechen und Leeren des Puffers – die Idee war ein natürlicher Sprecherwechsel am Satzende. In der Praxis lagen beim Telefonie-Anbieter aber oft noch mehrere Sekunden gepuffertes Audio. Der Anrufer redete, der Bot redete einfach weiter.
Heute gilt: Spricht der Bot noch, wird bei einer echten Unterbrechung immer abgebrochen und der Puffer auf der Telefonieseite geleert. Dass dabei gelegentlich die letzte Silbe eines Satzes fehlt, ist der bewusst akzeptierte Preis. Ein abgeschnittenes Wort ärgert weniger als ein Bot, der nicht zuhört.
Bei einer anderen Modellanbindung kam ein zweiter Effekt hinzu: Das Modell erzeugt nach dem Abbruch noch eine Weile Audio der alten, eigentlich verworfenen Antwort. Ohne Gegenmaßnahme füllt das den gerade geleerten Puffer sofort wieder. Deshalb unterdrücken wir nach einem Barge-in jedes Bot-Audio für bis zu fünf Sekunden – oder bis die neue Transkription des Anrufers eintrifft, je nachdem, was zuerst passiert. Erst danach ist das nächste Audio wirklich die neue Antwort.
Dritte Maßnahme: eigene Sprachdetektion mit mehreren Bedingungen
Für die Anbindung über eine eigene Telefonanlage prüfen wir Unterbrechungen zusätzlich selbst, in 20-Millisekunden-Rahmen. Ein Rahmen zählt nur dann als Sprache, wenn zwei Bedingungen gleichzeitig erfüllt sind: Die Sprachdetektion hält ihn für stimmhaft, und die Lautstärke liegt über einer Mindestschwelle. Leises Echo und Umgebungsgeräusche wirken für eine reine Stimmhaft-Prüfung nämlich erstaunlich oft wie Sprache.
Dazu kommen drei weitere Bremsen:
- Mehrere Rahmen am Stück: Ein Barge-in löst erst nach einer Folge von Sprachrahmen aus, je nach Einstellung zwischen 80 und 400 Millisekunden. Schon 100 Millisekunden Stille setzen den Zähler zurück.
- Einmal pro Antwort: Eine Sperre sorgt dafür, dass derselbe Redebeitrag nicht mehrfach abbricht.
- Abklingzeit: Zwischen zwei Unterbrechungen liegen mindestens zwei Sekunden.
Parallel bleibt das Modell selbst eine Quelle: Liefert es eine fertige Transkription des Anrufers, während der Bot noch spricht, werten wir das als verbindliche Unterbrechung. Die lokale Detektion ist schnell, das Transkript ist sicher – beide zusammen decken mehr ab als jedes für sich.
Die Erkenntnis: Empfindlichkeit ist eine Eigenschaft des Bots
Anfangs waren Schwellen und Rahmenzahl globale Konstanten. Das ging so lange gut, bis Anrufer mit sehr kurzen Antworten wie „ja“ oder „moin“ nicht mehr erkannt wurden. Ein Bot, der Ja-Nein-Fragen stellt, braucht eine andere Empfindlichkeit als einer, der lange Erklärungen gibt, bei denen Hintergrundlärm nicht stören soll.
Deshalb hängen Rahmenzahl und Lautstärkeschwelle heute an einem einzigen Regler pro Bot. Der Standardwert reproduziert genau die früheren globalen Werte, sodass sich für niemanden etwas ändert, solange niemand den Regler bewegt. Das ist unspektakulär, aber wichtig: Eine Änderung an der Sprachdetektion, die bestehende Bots still anders reagieren lässt, ist am Telefon schwer zu bemerken und noch schwerer zu erklären.
Fazit
Barge-in ist keine einzelne Funktion, sondern eine Abwägung zwischen zwei Fehlern: Der Bot hört nicht zu, oder der Bot hört sich selbst zu. Was bei uns trägt, ist eine Schichtung aus kleinen, einzeln begründbaren Regeln – Sperrzeit nach dem Sprechbeginn, harter Abbruch mit leerem Puffer, Wegwerfen alter Antworten, eine Sprachdetektion mit Lautstärke, Dauer und Abklingzeit sowie ein Regler pro Bot. Keine davon ist elegant. Zusammen sorgen sie dafür, dass der Bot den Anrufer ausreden lässt und sich selbst nicht mehr ins Wort fällt. Am Telefon ist das schon eine ganze Menge.
- #Voicebot
- #Barge-in
- #Sprachdetektion
- #VAD
- #Telefonie
- #Echo
- #Turn-Taking
Weiterlesen
Zeichen sind keine Token: wie ein Embedding-Stapel an 300.000 Token scheiterte
13. November 2026 · RAG, KI-Agenten, Engineering · 5 Min. Lesezeit
Der Rückweg zerstört die Messung: wie git checkout meine Mutationsbatterie entwertete
9. November 2026 · Engineering, Testing, KI-Agenten · 4 Min. Lesezeit
Der Wächter, der den ganzen Agenten anhält: was ein Fehlalarm wirklich kostet
8. November 2026 · KI-Agenten, Security, Engineering · 5 Min. Lesezeit