Guides

Why Your Voice Agent Keeps Getting Interrupted by Background Noise (and How to Stop It)

TL;DR: First find out what reached the agent when it stopped speaking. If a nearby voice or environmental sound was mistaken for the caller, cleaner input or voice isolation may help. If the agent stopped for a real acknowledgment, echo, or a turn-handling rule, changing the audio filter alone may not solve it.

A false interruption occurs when an agent pauses or cuts off its own reply even though the caller did not intend to take the turn. The symptom may sound like stuttering or an unfinished sentence. LiveKit's turn-taking guide describes interruption handling, false-interruption recovery, and noise cancellation as separate parts of the conversation pipeline. That distinction matters: the same symptom can have different causes.

What made the agent stop talking?

Inspect a short recording around each interruption together with the incoming audio track, transcript, and interruption event. Listen for four common triggers:

  • Traffic, a door slam, or other non-speech sound: Investigate input noise suppression and speech-detection settings.

  • Another person speaking near the caller: Consider primary-speaker isolation if only the caller should reach the agent.

  • The agent's own voice coming back through a speakerphone: Check echo cancellation and audio routing.

  • The caller saying “uh-huh” while the agent speaks: Review interruption mode and thresholds for brief acknowledgments.

The last case is a real human voice, but it may not be a request to interrupt. LiveKit's tuning documentation lists adaptive interruption handling, minimum speech duration, and false-interruption recovery among the relevant controls. It also distinguishes voice isolation from background noise suppression. Review the options your own agent framework actually supports before changing them.

When should you add voice isolation before barge-in detection?

If a second person repeatedly triggers the agent, test an isolation step on the incoming caller track before the components that transcribe speech and decide whether to interrupt. LiveKit describes voice isolation as emphasizing the primary speaker while reducing competing speech and noise. For this use case, our Eigen processor offers primary-speaker isolation and real-time processing.

Check that the processor retains the intended caller when people overlap, the caller moves away from the microphone, or the call begins with a background voice. “Primary” is a model decision, not a guarantee that it will always select the person your workflow wants. For multi-party calls where both voices matter, preserve separate tracks or use a workflow designed to retain multiple speakers.

If the trigger is non-speech noise, background suppression may be the simpler first test. If the agent hears its own output, investigate echo cancellation. LiveKit treats these as different processing choices, and applying more of the wrong one can leave the interruption problem intact.

How do you measure fewer false interruptions without making the agent unresponsive?

Create a small set of consented calls that includes noisy rooms, competing speakers, quiet callers, and genuine attempts to interrupt. Mark each point where the caller actually tried to speak over the agent. Run the same audio through the existing path and a candidate processed path, keeping the turn detector and other settings fixed initially.

Count false stops per call and missed genuine interruptions separately. Also measure time from a genuine interruption to the agent yielding, because a high threshold can reduce false stops while making the agent feel slow. Review the audio at each changed decision; a lower false-stop count is not useful if quiet callers are filtered out.

We specify Eigen processing latency below 10 ms. That figure does not include audio buffering, transport, speech recognition, or the agent's response. Measure the full path in your deployment. The real-time processing guide explains how to separate those delays. Use our 14-day trial to compare calls with and without Eigen; the processing specification alone cannot establish the result for your calls.