Why WebRTC Jitter Destroys Full-Duplex Voice AI
When packet jitter hits streaming audio, server VAD mistakes burst arrivals for human speech. Here is why full-duplex voice breaks on cellular links.
By Cogniq Labs ResearchEvidence policy

Real-time voice AI architectures frequently report sub-300ms latency benchmarks under pristine local test environments. In those controlled conditions, fiber-connected endpoints deliver steady 20ms Opus audio frames directly to GPU inference clusters, maintaining a natural conversational cadence.
When those same models are deployed to real-world mobile callers over cellular networks (4G LTE or variable 5G), the conversational illusion frequently disintegrates. The agent interrupts callers mid-sentence, pauses unexpectedly after direct questions, or fails to detect when the user has actually begun speaking.
The primary culprit is rarely model inference latency. It is network packet delay variation (jitter) on the WebRTC transport layer, which fundamentally destabilizes the server's Voice Activity Detection (VAD) state machine.
Pristine Network (Steady Frames):
[20ms] ──► [20ms] ──► [20ms] ──► [20ms] ──► VAD State: Stable Speech Stream
Cellular Link Under Jitter (Burst & Starvation):
[20ms] ──► [ Gap: 75ms ] ──► [20ms][20ms][20ms Burst] ──► VAD State: Thrashing (False Interruption)
The Fragility of Full-Duplex Audio
In human conversation, turn-taking operates within an extraordinarily tight temporal window. As explored in our benchmark on the 200ms turn-taking problem in streaming voice AI, conversational delays exceeding 250–300ms register as awkward hesitation, while response latencies above 800ms feel fundamentally broken.
Full-duplex voice AI requires two continuous, simultaneous data paths:
- Downstream: The model continuously generates and streams synthesized speech tokens over WebRTC audio tracks to the user's speaker.
- Upstream: The client microphone continuously samples and transmits 16kHz or 48kHz PCM audio back to the server.
To permit natural human interruptions (barge-in), the server must monitor the upstream audio while transmitting downstream. If the user speaks during playback, the server must halt model generation within 50–100ms, silence the downstream buffer, and switch to speech recognition.
This feedback loop relies on a critical assumption: that incoming audio packets accurately represent the exact temporal spacing of the speaker's vocal cords. Under network jitter, that assumption collapses.
How WebRTC Jitter Buffers Corrupt VAD State
WebRTC audio engines use an adaptive jitter buffer (such as WebRTC's NetEQ) to smooth out network irregularities. When packets arrive out of order or in irregular clumps, the jitter buffer holds or accelerates frames to deliver a continuous stream.
In human-to-human VoIP (e.g., Zoom or Discord), NetEQ prioritizes smooth playback. If packets are delayed, the buffer expands by 60–120ms; if packets arrive in a burst, it accelerates playback slightly through pitch-preserving time stretching. Humans barely notice a 40ms adaptive buffer dilation.
For server-side Voice Activity Detection, however, buffer dilation is fatal:
1. Packet Starvation Misinterpreted as Speech Completion
If a mobile user is speaking continuously and the cellular tower drops into a 60ms radio link retransmission window, the server experiences packet starvation. To the server-side VAD, the energy level drops to absolute zero for three consecutive frame windows.
If the VAD's silence-hangover parameter is calibrated aggressively (e.g., 80–120ms to minimize turn-taking latency), the server concludes the user has finished speaking and immediately begins generating its response—talking directly over the user when the delayed packets arrive.
2. Packet Bursts Misinterpreted as Intentional Barge-In
When the cellular connection clears the backlog, several queued RTP packets arrive at the server within a 2ms window. NetEQ flushes these frames rapidly to catch up with real-time clock synchronization.
This artificial compression of audio frames causes sudden energy spikes in the VAD filter bank. The sudden surge of audio energy triggers a false positive barge-in event. The agent abruptly cuts off its own sentence mid-word, only to discover that the "interruption" was merely delayed background noise delivered in a burst.
Latency Budget Breakdown: WiFi vs. Variable Cellular
The table below illustrates the end-to-end processing pipeline for a streaming voice agent under varying network transport conditions.
| Pipeline Stage | Low-Jitter Fiber / WiFi | 5G Mid-Band (Moderate Jitter) | 4G LTE Edge (High Jitter) |
|---|---|---|---|
| Microphone Capture & Opus Framing | 20 ms | 20 ms | 20 ms |
| One-Way Network Transit | 15 ms | 35 ms | 65 ms |
| Jitter Buffer Dilation Delay | 10 ms | 45 ms | 110 ms |
| Server VAD Window & Silence Verification | 60 ms | 90 ms | 160 ms |
| Speech-to-Speech / Streaming TTFT | 95 ms | 105 ms | 120 ms |
| Audio Synthesis Chunk Buffering | 30 ms | 35 ms | 40 ms |
| Return Network Transit | 15 ms | 35 ms | 65 ms |
| Total Turn-Taking Latency | 245 ms | 365 ms | 580 ms |
| Observed Failure Behavior | Crisp, natural turn-taking | Occasional clipped syllables | Frequent conversational collision |
Notice that the actual model inference time (TTFT) remains relatively stable (95–120ms). The entire 335ms degradation between fiber and 4G LTE occurs in the jitter buffer dilation, transit, and widened VAD hangover windows required to prevent false triggering.
Architectural Safeguards Against Jitter-Induced Thrashing
Building production voice AI that functions reliably across mobile devices requires redesigning the boundary between transport and intelligence. In our voice systems research, three architectural safeguards have proven essential:
1. Client-Side Edge VAD Filtering
Instead of relying solely on server-side energy detection across a raw WebRTC stream, lightweight acoustic classifiers should run directly on the client (browser or mobile SDK). The client has zero-latency access to the hardware microphone stream before any transport packetization occurs. The client transmits explicit binary speech state metadata alongside the RTP stream, eliminating server-side guessing.
2. Dual-Threshold Semantic Barge-In
Acoustic energy should not trigger an immediate hard reset of downstream playback. Instead, implement a two-stage interrupt:
- Soft Pause (Energy Trigger): Lower downstream audio volume by 12dB while continuing token generation in the background.
- Hard Interrupt (Semantic Trigger): Wait 80ms for the first transcribed phoneme from the streaming ASR layer. If valid speech tokens appear, cancel generation. If the burst was network noise or a brief cough, restore volume without losing conversational context.
3. Jitter-Aware Dynamic VAD Hangover
Dynamically scale the VAD end-of-speech silence window based on real-time RTCP receiver reports. When network RTCP jitter metric $J > 40\text{ ms}$, automatically widen the VAD completion window by $1.5 \times J$. While this temporarily increases turn-taking latency by 60–80ms, it completely eliminates conversational collisions, preserving conversational intelligibility when network conditions degrade.
Sources
Frequently asked questions
What is the primary cause of turn-taking failure in cellular voice AI?
Packet arrival jitter. Bursty packet delivery forces server-side jitter buffers to dilate or flush
Why does full-duplex conversational AI suffer more from jitter than VoIP calls?
Human listeners naturally tolerate subtle temporal warping and 50ms packet buffering. Voice AI models require continuous
How can developers mitigate jitter-induced false barge-ins?
By combining acoustic echo cancellation with semantic barge-in validation
Related reading
The 200ms Turn-Taking Problem in Streaming Voice AI
A practical latency budget for voice agents, and why endpointing—not only model speed—determines whether a conversation feels responsive.
Why Voice Agents Feel Broken at 800ms
Total latency is the wrong number to optimise. What decides whether a voice agent feels alive is time to first audio, and where those milliseconds go.
Why Multi-Agent Consensus Collapses into Hallucination
Without deterministic grounding, agent debate loops converge on shared falsehoods rather than truth. Here is the mechanism and how to anchor it.