Fix echo-induced silence with a half-duplex audio gate

A caller's reply was generated but never heard: 0.65s after the agent started
speaking, the VAD fired "user started speaking" (NO transcript) and broadcast an
interruption that cancelled the agent's audio -> ~24s of silence until the caller
spoke again. Cause: the agent's own TTS echoes back the phone line and the
always-on VAD interruption treats it as a barge-in. (PipelineParams has no
allow_interruptions in this pipecat build — it was a silent no-op.)

Fix: HalfDuplexGate before the VAD withholds inbound audio while the bot speaks
(+ECHO_TAIL_SECS, default 0.5s), so echo can't trigger a false barge-in.
Half-duplex (no mid-utterance barge-in); HALF_DUPLEX=false to restore it.
Runtime-tested the gate (pass idle / drop while speaking / drop in tail / resume).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
tocmo0nlord
2026-06-27 16:44:00 +00:00
parent ceea3d151c
commit 32a3bb7136
3 changed files with 50 additions and 0 deletions

View File

@@ -59,3 +59,7 @@ AGENT_NAME=AVA
AGENT_NAME_SPOKEN=Eva
# Grace pause after the goodbye before the carrier leg is dropped (seconds).
HANGUP_DELAY_SECS=4.0
# Half-duplex: ignore caller audio while the agent speaks (+ tail) so its own echo on the
# phone line can't trigger a false barge-in that cancels its reply. false = allow barge-in.
HALF_DUPLEX=true
ECHO_TAIL_SECS=0.5