A barge-in voicebot is a voice agent that detects when a caller starts talking over its own playback and stops speaking fast enough to listen. The engineering focus is latency and reliability: tuning Voice Activity Detection (VAD), guaranteeing Acoustic Echo Cancellation (AEC), trimming TTS buffer size, and instrumenting every stage so you can measure the barge-in interrupt rate directly, not guess at it.
TL;DR:
- Proper AEC setup and tuning VAD, end-of-turn detection, and TTS buffering are critical to minimize false triggers and ensure reliable barge-in performance.
- Using semantic endpointing improves detection accuracy to approximately 0.92 F1 but introduces 60 to 120 milliseconds of additional latency.
- The recommended default modes are soft-fade for PSTN legs and hard-cut where AEC is reliable, but provider constraints may limit mid-stream cancellation on certain TTS and LLM platforms.
- Instrumenting VAD onset, TTS stop, and playback stop spans allows precise measurement of barge-in latency and interrupt success rate, informing effective tuning.
- Prioritize AEC and streaming provider support in initial setup and gather real interruption attempt data before fine-tuning thresholds or making major changes.
Table of Contents
- Where barge-in signals live in a voice stack
- VAD, AEC, endpointing, and TTS buffering: what to implement and why
- Barge-in modes and runtime patterns
- Stepwise troubleshooting and parameter tuning checklist
- Instrumenting barge-in: what traces and metrics to collect
- How Monobot supports barge-in: configuration, tutorials, and analytics
- What to prioritize when shipping barge-in
- Try barge-in without building the pipeline yourself
- FAQ
- Sources
- Primary docs and papers referenced
Where barge-in signals live in a voice stack
A barge-in voicebot runs on a pipeline, and knowing where each signal fires tells you where to instrument and where to fix problems.
- Capture: raw audio comes in from the mic or telephony leg, with AEC applied before anything else touches the signal.
- VAD: scans frames for speech onset and flags the moment a caller starts talking.
- ASR: transcribes speech in near real time, producing partial and final hypotheses.
- Endpoint detector: decides whether the caller has finished a turn or is just pausing.
- LLM: generates a response, ideally streaming tokens as they’re produced.
- TTS: synthesizes audio, chunked for playback rather than rendered as one block.
- Playback: sends audio to the speaker or call leg, and must be cancelable mid-stream.
Client-side code typically owns capture, playback, and local echo suppression, while the server owns VAD, ASR, endpointing, and generation. The handoff between them is exactly where you want tracing spans: one at VAD onset, one at the TTS cancel command, and one at playback stop, so you can see the full chain from detection to silence.
VAD, AEC, endpointing, and TTS buffering: what to implement and why
Each subsystem has its own tuning surface, and getting one wrong undoes the other three.
- VAD framing: most implementations process audio in 15 to 30 millisecond frames, with a sliding window that smooths out noise spikes before declaring speech onset.
- AEC: required on any leg with speaker playback, whether through browser
echoCancellation,webrtc-audio-processing, orspeexdsp; skip it and the bot will interrupt itself. - Endpointing style: acoustic, heuristic, or semantic detectors trade speed for accuracy.
- TTS buffering: smaller chunks flush faster when a barge-in fires, at the cost of slightly less efficient synthesis.
A sliding window of 48 frames at 30 milliseconds each is a common VAD configuration, and the choice between detector types has measurable consequences: semantic endpointing, which layers STT partials and an LLM on top of raw audio, reaches roughly 0.92 F1 compared to about 0.78 for energy-based VAD alone, but adds 60 to 120 milliseconds of trigger latency. That trade-off, accuracy against speed, shapes almost every other decision in this section: a heuristic detector is cheap and fast but trips on filler sounds, while a fully semantic one is precise but too slow for a bot that needs to yield the instant someone says “wait.”
Barge-in modes and runtime patterns
Once detection works, you need a policy for what happens next. Three patterns cover most production voicebots:
- Hard-cut: TTS playback stops immediately on VAD confirmation. Use this when AEC is reliable and your TTS provider supports mid-stream cancelation.
- Soft-fade: playback fades out over a short window instead of cutting abruptly, which works well for backchannel sounds like “mm-hmm” that shouldn’t kill a full response.
- Disabled: the agent finishes speaking regardless of input. This fits short prompts, low-interrupt use cases, or transports without AEC, where a false cut is worse than a slightly slower reply.
The AgentOS voice pipeline documents these modes alongside an event model (voice_barge_in, voice_turn_complete, voice_audio) that gives handlers a concrete shape to build against.
Provider constraints matter as much as the mode you pick. Non-streaming LLMs and TTS engines can’t be canceled mid-generation on the server side, so a hard-cut policy against a batch TTS call will still finish rendering audio it never plays, wasting compute and adding latency to the next turn.
Pro Tip: Default to soft-fade on PSTN legs and hard-cut on WebRTC legs where client-side AEC is confirmed working.
Stepwise troubleshooting and parameter tuning checklist
When barge-in doesn’t fire, or fires on the bot’s own voice, work through the pipeline in order rather than guessing at a single parameter.
- Step 1: confirm AEC is active on the transport leg; test separately on browser and PSTN, since PSTN legs often lack client-side echo cancellation entirely.
- Step 2: verify VAD actually fires by inspecting
frame_ms,threshold, andwindow_size, and check the onset span against the raw waveform. - Step 3: inspect the mic gate or
margin_while_ttssetting, since a gate set too high blocks legitimate interrupts while one set too low causes self-triggering. - Step 4: check whether your LLM and TTS providers support cancelation; if not, move the critical path to streaming or realtime endpoints.
Most failures trace back to one of four root causes, and the TeleQuick troubleshooting guide maps them cleanly:
| Symptom | Likely cause | Fix |
|---|---|---|
| Bot interrupts itself | Agent audio leaking into mic (no AEC) | Enable AEC, raise margin_while_tts on PSTN |
| Caller interrupts don’t register | Mic gate too conservative | Lower gate, shorten confirm window on WebRTC |
| Interrupt detected but audio keeps playing | TTS provider not cancelable | Move to a streaming TTS node |
| Interrupt lag feels sluggish | End-of-turn timer too short or too long | Retune endpoint detector thresholds |
On PSTN legs without reliable AEC, keep the confirm window non-zero and raise the margin; on browser legs with confirmed client AEC, you can drop the confirm window close to zero for a near-instant cut.
Instrumenting barge-in: what traces and metrics to collect

Barge-in latency is the gap between VAD onset and the moment TTS playback actually stops, and barge-in interrupt rate is the share of interruption attempts that succeed within your target window. Neither shows up in a standard end-to-end latency dashboard, which is why p99 end-to-end timing alone misses the problem: it averages across turns that never involved an interruption at all.
Emit these spans on every turn:
vad_onset: timestamp when speech is first detected during playback.barge_pending: timestamp when the system provisionally flags an interrupt.barge_confirm: timestamp when the interrupt is confirmed past the debounce window.tts_stop: timestamp when the cancel command reaches the synthesis engine.playback_started: timestamp when the next response begins.
Subtracting vad_onset from tts_stop gives you barge-in latency per turn, and the percentage of turns landing under your target window gives you the interrupt rate. A barge-in interrupt rate tracked over time tells you more about perceived responsiveness than any single latency average, because it isolates the exact interactions where users expected to be heard.
How Monobot supports barge-in: configuration, tutorials, and analytics
We built barge-in technology directly into our voice agent runtime, so VAD sensitivity and AEC-aware transport settings are configurable without touching backend code. A recorded walkthrough on real-time chat interruptions shows the configuration flow end to end, including how interrupt behavior changes across different voice settings.
On the observability side, we expose the same kind of spans this article recommends:
- Interaction logs capturing VAD onset and TTS stop events per call.
- A dashboard surfacing interrupt rate trends across agents and time windows.
- A related post on why instrumenting voice pipelines matters before tuning them.
These pieces give engineering teams a working reference implementation rather than a blank configuration file.
What to prioritize when shipping barge-in
Measure before you tune. Instrument your VAD onset and TTS stop spans before touching a single threshold, because without that data you’re adjusting parameters blind. Favor AEC and streaming providers early, since they fix perceived latency more reliably than threshold tweaks ever will. Then run a small test corpus of real interruption attempts, not synthetic ones, before calling any change done.
— Alex
Try barge-in without building the pipeline yourself
We handle VAD tuning, AEC-aware transport selection, and interrupt analytics inside the platform, so you configure behavior through settings instead of maintaining the instrumentation stack described above with the help of a conversational search audit tool.

Our pricing page lists the Starter plan at $200 per month, Growth at $500 per month, and Business at $1,000 per month, each including voice interaction and analytics access; Enterprise pricing is available on request. If you want to see interrupt handling before committing, the barge-in webinar linked above walks through live configuration, and our team is available for a demo on enterprise setups including HIPAA-compliant deployments.
FAQ
What is a voice bot?
A voice bot is a software agent that listens to spoken input, processes it through speech recognition and a language model, and responds with synthesized speech in real time. It’s used for tasks like scheduling, order status, and customer inquiries without a live agent on the line.
What does barge mean on a Cisco phone?
On Cisco Unified Communications Manager, “barge” refers to a person joining an existing shared-line call as a conference participant, a telephony feature unrelated to automated voice interruption. It’s worth distinguishing from voicebot barge-in, which refers to a caller interrupting an AI agent’s speech, since the two terms describe different mechanisms entirely.
What does it mean to barge in?
In a voicebot context, barging in means a caller starts speaking while the agent is still playing audio, and the system detects that speech and stops its own output to listen. The goal is to make the exchange feel like a normal conversation rather than a scripted announcement.
What are some common use cases for voice assistants?
Voice assistants handle appointment scheduling, order status lookups, account inquiries, and lead qualification, often in call centers or customer support lines. Barge-in matters most in these settings when callers already know what they want and need to correct or redirect the bot mid-sentence.
How does a barge-in voicebot work?
It works by continuously running Voice Activity Detection against the live microphone feed, even while the agent’s own text-to-speech audio plays, and canceling that playback the moment genuine speech is confirmed. Acoustic Echo Cancellation keeps the bot from triggering on its own voice, and the full cycle, from detection to silence, is what engineers track as barge-in latency.
Sources
- Pipeline Stage 1 – XCORE-VOICE SOLUTION v2.4.0
- Endpoint Anticipation for Low-Latency Spoken Dialogue
- Voice agent latency is a lie. The number you care about is barge-in interrupt rate. – DEV Community
- Voice Pipeline | AgentOS Docs
- Barge-in Not Working – TeleQuick
Primary docs and papers referenced
- Endpoint Anticipation for Low-Latency Spoken Dialogue
- Pipeline Stage 1 – XCORE-VOICE SOLUTION v2.4.0
- Voice agent latency is a lie. The number you care about is barge-in interrupt rate.
- Voice Pipeline | AgentOS Docs
- Barge-in Not Working – TeleQuick