Voicebot Latency for Developers: Get Under 1.5 Seconds
Cut voicebot latency by tracing endpointing, ASR, LLM, TTS, and network delays. Set stage budgets, measure P95, and target replies under 1.5 seconds.
Aim for a mouth-to-ear gap, the time from the caller finishing a turn to hearing the first audio frame, under 1.5 seconds, with sub-500ms time to first audio as the gold standard. Three levers move voicebot latency optimization most: stream and overlap pipeline stages, tune voice activity detection and endpointing, and co-locate your models. Measure per-turn latency first, find the stage that dominates at P95, then fix that one.
TL;DR:
- Record per turn P50 and P95 timings for every stage, and timestamp speech end and playback at the client to expose delays outside server traces.
- An aggressive voice activity threshold shortens endpointing, but it can clip slow speakers; add cancellation so the agent can discard premature responses.
- Sequential speech recognition, language generation, and synthesis can add around 2 seconds of waiting; streaming overlap brings many setups to roughly 700 milliseconds.
- Choose cascaded systems when tool calls, audit trails, and stage debugging matter; speech to speech lowers delay but limits control, language coverage, and telemetry.
- Route sessions by active streams, keep sticky sessions and warm regional capacity, and trigger autoscaling before tests show per stage times climbing.
Table of Contents
- What do TTFA, TTFT and mouth-to-ear actually measure?
- Where does voicebot latency come from, stage by stage?
- How do you measure and instrument latency?
- Which pipeline techniques cut latency fastest?
- What model and infrastructure changes lower per-stage time?
- How do you keep tool calls from stalling the conversation?
- How do you test and benchmark latency improvements?
- Cascaded pipeline or end-to-end speech-to-speech?
- What is the order of work for cutting mouth-to-ear latency?
- How do you hold latency steady under heavy traffic?
- How do you optimise latency for multilingual and multi-accent voicebots?
- What does the full end-to-end latency breakdown look like, including the client?
- Where should you start, and what mindset keeps latency low?
- How we can help you reduce voicebot latency
- FAQ
- Sources
What do TTFA, TTFT and mouth-to-ear actually measure?
Before you tune anything, agree on terms. Mouth-to-ear is the full gap from the end of the user’s speech to the first audible agent audio. TTFA (time to first audio) is the same moment viewed from the pipeline. TTFT (time to first token) is how long the LLM takes to emit its first output token, and each other stage has its own equivalent, such as ASR finalisation time and TTS time to first byte.
People hear a conversational gap from about 500ms of silence and often interrupt by about 1 second, so the practical ceiling sits between 800ms and 1.5s. Here is a starting budget you can copy and adjust:
- Endpointing: the silence you wait before deciding the user has finished
- ASR: finalising the transcript after end of speech
- LLM: time to first token, not full completion
- TTS: time to first audio byte
- Network and telephony: the sum of every hop between caller and models
Mouth-to-ear target: sub-1.5 seconds roundtrip, sub-500ms TTFA as the gold standard. Every stage budget you set should add up to this, with headroom for network variance.
Where does voicebot latency come from, stage by stage?
Each pipeline stage adds its own delay, and the fix differs by stage. Treat the table below as a map of where to look first, then confirm with your own traces.
| Stage | Main delay driver | First fix to try |
|---|---|---|
| Endpointing / VAD | Silence threshold before end of turn | Tighter threshold plus a cancel path |
| Audio buffering | Frame size, jitter buffers | Smaller Opus frames, right-sized buffers |
| ASR | Waiting for a final transcript | Streaming interim results, regional hosting |
| LLM | Time to first token, long context | Faster tier, trimmed context, KV cache |
| TTS | Waiting for a full sentence | Streaming, chunked generation |
| Network / telephony | SIP hops, round-trip time | Co-location, sticky sessions |
- Endpointing and VAD: an aggressive silence threshold shortens the wait, but it will clip slow speakers. Pair it with a cancel path so the bot can discard a premature response when the caller carries on.
- Buffering and codecs: every buffered frame is added delay, so size jitter buffers to your measured network variance, not to a safe-looking default.
- ASR: stream interim transcripts and host the model in the same region as your agent.
- LLM: TTFT dominates here. Long context inflates it, so trim history and reuse the KV cache across turns.
- TTS: start synthesis on the first clause rather than the full reply.
- Network: each SIP trunk hop and cross-region call adds round-trip time you cannot buffer away.
How do you measure and instrument latency?
You cannot fix what you cannot see, and an average hides the slow turns that callers remember. Record these per-turn metrics: end-to-end latency, LLM TTFT, TTS time to first byte, ASR timings, and VAD or end-of-utterance duration. NVIDIA’s best practices guide recommends component-wise measurement and a 600–1500ms latency target.
- Emit a span per stage on every turn, tagged with session ID and caller region.
- Baseline P50 and P95 for each stage over a representative week of traffic.
- Set alert thresholds on P95, not the mean, for each stage and for end-to-end.
- Store traces outside the agent process so you can replay a bad session later.
- Run a regression check on every deploy against the stored baseline.
Pro Tip: Slice P95 by caller region and by whether the turn used a tool call. The slowest bucket is usually one or the other, and it points straight at the fix.
An open-source SDK example shows what good looks like: it reports P50 total latency of 412ms and P95 of 512ms, with STT, LLM and TTS numbers broken out per layer.
Which pipeline techniques cut latency fastest?
Overlapping stages is the biggest architectural lever. Sequential STT, then LLM, then TTS can add around 2 seconds of waiting, while streaming brings that to roughly 700ms in many setups.
- Stream partial transcripts: feed interim STT results into your prompt builder and start LLM streaming before the final transcript lands.
- Overlap generation and synthesis: pipe LLM tokens to TTS at sentence or clause boundaries so playback starts before the reply is complete. Open-source stacks such as LLMRTC start playing responses before generation finishes, reporting voice-to-voice times around 300–500ms in experimental modes.
- Speculate: pre-generate likely responses while the user is still speaking, and keep the result only if the final transcript matches. Done well, this saves a few hundred milliseconds on predictable turns.
- Handle barge-in: when the caller interrupts, cancel in-flight TTS, flush the audio buffer and keep conversation state consistent with what was actually heard.
Pro Tip: Write the barge-in path first. Streaming makes interruptions far more frequent, and a bot that talks over callers feels slower than one that is simply late.
What model and infrastructure changes lower per-stage time?
Once the pipeline streams, the remaining gains come from where and how the models run.
- Co-locate: host ASR, LLM and TTS near one another and near the telephony trunk. LiveKit lists co-locating the agent and models among its highest-impact steps.
- Pick faster tiers: a smaller or distilled model often cuts TTFT enough to matter more than any prompt tweak. Re-evaluate tiers every few months.
- Quantise: INT8 or FP16 weights, with inference-runtime optimisation such as TensorRT, trade a little accuracy for speed. Check word error rate and response quality before and after.
- Manage context: enable KV caching, trim stale turns and summarise long histories.
- Self-host where SLAs are tight: NVIDIA’s Nemotron blueprint shows cascaded ASR, LLM and TTS pipelines reaching sub-second end-to-end latency on GPU-optimised hardware, with recommended configurations for self-hosting.
How do you keep tool calls from stalling the conversation?
External lookups can cause sudden pauses. LiveKit’s guidance includes limiting tool steps and playing “thinking” sounds during execution.
- Consolidate API calls so one turn makes one round trip, not four.
- Set a hard time budget per tool call. On timeout, return a fallback answer and continue.
- Play a short acknowledgement or thinking sound when a call will run long, so silence never reads as a dropped line.
- Track average tool-call duration and count per turn, and alert when either drifts upward.
How do you test and benchmark latency improvements?
A change is only an improvement if the numbers say so under realistic load.
- Measure P50 and P95 per stage using synthetic calls and recorded sessions at representative concurrency.
- Scale from a single stream up to target concurrency, and watch for CPU or GPU saturation, where per-stage times start climbing non-linearly.
- Automate regression tests that fail the build when P95 rises past your threshold.
- Run synthetic calls continuously in production, so a provider-side slowdown shows up before callers report it.
Cascaded pipeline or end-to-end speech-to-speech?
The choice comes down to latency against control. Research on full-duplex voice agents finds cascaded pipelines easier to build and debug but usually slower, with more than a second of first-word delay, while speech-to-speech models cut latency and handle interruptions better but give you less control and observability.
- Cascaded: keep it when tool calls, audit trails and per-stage debugging matter to your workflow.
- End-to-end: choose it for the lowest latency and natural prosody, accepting narrower language coverage and thinner telemetry.
- Hybrid: realtime comprehension with controlled TTS output can give you low-latency understanding without surrendering the voice. Realtime APIs such as the Gemini Live API support continuous audio streaming and barge-in, and client-to-server streaming cuts hops but needs careful token handling in production.
What is the order of work for cutting mouth-to-ear latency?
- Measure baseline P50 and P95 per stage, then target the stage that dominates at P95.
- Quick wins: tune VAD with an aggressive threshold and cancel path, switch to streaming ASR with interim transcripts, and start incremental TTS playback.
- Medium work: trim context, quantise models, co-locate services and consolidate external calls.
- Deep work: self-host on GPU instances, adopt realtime models, and rework network topology and trunk placement.
Pro Tip: Re-run your baseline after each step and write the delta down. A fix that moves P50 but not P95 has not solved the problem callers actually hear.
How do you hold latency steady under heavy traffic?
Median latency can look fine while P95 collapses at peak, because queues build the moment GPU or CPU capacity runs out. Consistency under load comes from capacity planning and routing, not from faster code.
Route new sessions to the least-loaded node, measured by active streams rather than raw connection count, since a long call costs far more than a short one. Use sticky sessions so a conversation stays on the node that holds its KV cache and audio state. Moving a live call mid-turn costs you the cached context and adds a cold-start penalty.
Keep headroom. Find the concurrency at which per-stage times begin to climb in your load tests, and set autoscaling to trigger well before it. GPU-backed stages scale slowly, so warm capacity beats reactive scaling for ASR and TTS.
Plan failover as a latency problem, not only an availability one. A standby region that is cold, or far from your telephony trunk, trades an outage for a slow, unusable bot. Keep warm standbys in the same region as the trunk, health-check on latency as well as liveness, and fail a node out when its P95 breaches budget. For provider-hosted stages, hold a second provider configured and tested, with a circuit breaker that shifts traffic after repeated timeouts.
Finally, shed load gracefully. When capacity is exhausted, queue briefly with a short spoken acknowledgement, or hand off to a callback, rather than letting every active call degrade together.

How do you optimise latency for multilingual and multi-accent voicebots?
Language and accent handling can add latency in places a single-language pipeline never shows. The common culprit is language identification: if the bot waits for detection before choosing a model, every turn pays for it.
Where you can, decide the language once per session and carry it forward. Use the caller’s number, a prior interaction or a quick opening question to set it, then re-check only on low-confidence turns. Run detection in parallel with transcription rather than ahead of it, and keep the streaming path identical across languages.
Model choice matters too. A large multilingual ASR model is convenient but is often slower than a smaller model tuned to one language or accent group. Measure P95 per language, not just overall, because a fast English path can hide a slow path for another language. Keep frequently used language models loaded and warm, since cold-loading a model mid-call produces exactly the multi-second stall you are trying to avoid.
Accent robustness affects perceived latency through retries. A transcript retry can add substantial delay, so track re-prompt rates alongside latency. Track word error rate and re-prompt rate by accent group alongside latency.
Check TTS coverage as well. Voices differ in time to first byte across languages, so benchmark each voice you ship rather than assuming parity. Where a language lacks a fast streaming voice, plan a clause-level chunking strategy and a shorter first sentence to compensate.
What does the full end-to-end latency breakdown look like, including the client?
Server-side traces miss the delay the caller actually experiences. Mouth-to-ear starts at the user’s microphone and ends at their speaker, so the budget has to include both ends.
On the capture side, the audio path from microphone to your server includes device capture buffering, encoding (Opus frame length sets a floor on delay), and the network leg. Browsers and mobile devices vary widely here, and Bluetooth headsets can add noticeable delay of their own. Telephony callers add carrier and SIP trunk hops you cannot see in application logs.
On the server side sit your measured stages: endpointing wait, ASR finalisation, LLM TTFT, TTS time to first byte and the return network leg.
On the playback side, the client decodes audio, fills a jitter buffer and hands samples to the output device. A large jitter buffer protects against choppy audio but delays every response by its full depth, so size it to observed variance. Echo cancellation and audio processing on the device add small, consistent amounts as well.
To measure the whole chain, timestamp at the client: when end of speech was detected locally and when the first agent audio frame played. Compare those against server-side spans to see how much of the gap sits outside your control. Where the client-side portion is large, shorter frames, a tighter jitter buffer and a nearer media edge are cheaper wins than another model swap.

Where should you start, and what mindset keeps latency low?
Measure before you change anything, then start with the cheap wins: VAD tuning and streaming. Both usually pay back more than any infrastructure project, and neither needs new hardware. Expensive changes, such as self-hosting or an architecture swap, belong after you know which stage dominates at P95.
While you optimise, work on perceived latency in parallel. An acknowledgement sound or incremental audio can make a gap feel shorter than silence does. Then keep per-turn observability and regression tests running permanently. Latency drifts upward one innocent change at a time, and only a baseline catches it.
— Sowrabh
How we can help you reduce voicebot latency

Learn more about our Voice AI Agents and on-premises deployment.
- Voice AI agents with CRM integration across voice, SMS, email and live chat
- Private cloud and on-premises options for co-located models
- Discuss your latency targets with our team
Contact our team to discuss your latency requirements.
FAQ
What is a good latency target for a voicebot?
Aim for a total roundtrip under 1.5 seconds. Time to first audio under 500ms is the gold standard for natural-feeling conversation.
Which change reduces voicebot latency the most?
Overlapping the pipeline stages usually delivers the largest gain. Stream partial transcripts into the LLM and send tokens to TTS at sentence boundaries so speech starts before the reply is finished.
How do I find which stage is causing delays?
Record per-turn timings for each stage and compare their P95 values. The stage with the largest P95 share of the total is where you should work first, whether that is endpointing, ASR, LLM, TTS or network.
Is a speech-to-speech model faster than a cascaded pipeline?
Generally yes, since it removes the hand-offs between stages. The cost is less control, narrower language coverage and thinner observability, so cascaded designs remain a sound choice when tool calls and debugging matter.
Does self-hosting reduce latency?
It can, because you control co-location and hardware. Running ASR, LLM and TTS on GPU-optimised infrastructure near your telephony trunk removes network hops and queueing you cannot influence on shared services.
Sources
- The 800ms Rule: Budgeting Latency for a Real-Time Voice Agent on AWS | AWS Builder Center
- Understand and improve voice agent latency | LiveKit
- Give your AI agent a phone number