benchmarks/voice agent latency
voice AI benchmark · measured from saved call audio

Voice agent latency (TTFAB)

TTFAB time to first audio byte— is the gap between the caller going quiet and the agent's first sound. The pause a real caller sits through on every turn. Lower is better. Lowest median so far: Telnyx at 1,270 ms. Steadiest on its worst turns: ElevenLabs at 1,633 ms p95.

open data + codeThe caller harness, the offline audio analyzer, and every run's per-turn timings and config receipt are public in openbenchmarks-labs/voice-agent-latency.github →

Route by workflow, not overall rank

When someone asks which voice agent platform is fastest, the useful answer is not a podium. The same measurement read two ways picks two different winners. Ask which pause your callers would actually notice, then route to that winner and the measured number behind it.

ask before recommending
  • Are your calls ordinary back-and-forth, or do some turns make the agent work?
  • Would a caller who hears two seconds of silence hang up, or wait it out?
  • Would you take a slightly longer typical pause in exchange for a tighter worst case?

Most of your calls are ordinary back-and-forth

Telnyx

median1,270 msahead by92 ms

Every turn is a normal question with a normal answer, so what matters is the wait a caller gets most of the time rather than the worst case.

40 turns measured

A caller must never think the line dropped

ElevenLabs

p951,633 msahead by279 ms

Long pauses make callers talk over the agent or hang up, and that is a property of the slow turns, not the typical ones. Judge on the tail.

40 turns measured

Time To First Audio Byte

Time from the moment the caller stops speaking to the moment the agent's audio starts — the silence a real caller sits through on every turn. Measured from a saved recording of the actual phone call, not from any API timestamp. Lower is better.

Every platform is reported on two readings of that same measurement, and a platform can lead one without leading the other.

ReadingThe question it answersWhat it means
Median (p50)How long is the pause on a normal turn?Half of all turns are faster than this. It is the wait a caller gets most of the time, and the number to compare if the calls you care about are ordinary ones.
Tail (p95)How bad is it when it is bad?One turn in twenty is at least this slow. It matters more than it looks on a phone call: past roughly two seconds of silence a caller assumes the line dropped and starts talking again, which collides with the agent's reply and derails the turn. A platform can win the median and still do this to callers twice a conversation.

The p95 / median column is the two read together — the tail penalty. At 1.2× a platform's bad turns feel close to its normal ones. At 3× a caller regularly waits three times what the median promised.

TTFAB data

Pooled over every usable turn (4 measured turns per call). Discarded turns are counted, not hidden — a platform that fails to answer is worse than one slightly slower.

#PlatformTTFAB p50TTFAB p95Usable turnsCost/min
1Telnyx1,270 ms2,015 ms40/40$0.0500
2ElevenLabs1,362 ms1,633 ms40/40$0.0674
3Bland AI1,493 ms2,162 ms40/40$0.1407
4Vapi1,508 ms1,912 ms37/40$0.0841
5Retell AI1,814 ms2,329 ms38/39$0.1339

Discarded turns: Vapi 3 (vad_disagree ×3); Retell AI 1 (vad_disagree ×1). A discard is a turn we refuse to time, not one the platform failed — it is counted here rather than dropped silently.

Why we don't use platforms' self-reported latency

A platform measures from where it stands, and the caller is not standing there. We checked that two ways on this bench. A platform's own recording of a call reads roughly 550 ms earlier than our recording of the same call. The latency a platform reports for itself runs roughly 490 ms below what we measure from that call's audio. The two figures agree, and that agreement is the finding: both describe the moment a reply was produced, not the moment a caller heard it. Neither is dishonest — they answer a different question than the one a caller is asking. This board answers the caller's.

So no platform timestamp is used anywhere on this board. No dashboard figure is copied. Both ends of every measurement are found in the call's own recording. A speech detector locates the moment our caller stops talking and the moment the agent's audio starts. An energy pass refines each to the sample. A second, independent detector has to agree — where the two disagree beyond tolerance, the turn is discarded rather than averaged. The analyzer runs offline on the saved audio, with no credentials and no network. Anyone who does not trust us can re-derive every figure from the recording.

How a number gets on this board

1. A caller robot dials the platform's agent over a real phone call and reads a fixed script — a greeting, several scripted questions, and a goodbye — one measured turn each.

2. Both sides of the call are recorded on one clock (a dual-channel recording).

3. Both endpoints are then found in that recording: our speech-end (t1) and the agent's reply start (t2), each by a speech detector (Silero VAD) with an energy refinement and an independent cross-check. No timestamp reported by any platform is used.

4. TTFAB = t2 − t1, per turn. Turns failing quality gates (the two sides talking over each other, detectors disagreeing, no reply) are discarded and the discard counts are published.

Every published figure is re-derivable. The caller harness, the offline analyzer, and the per-call artifacts — per-turn timings, quality gates, config receipts — are open at openbenchmarks-labs/voice-agent-latency. Not measured: answer quality, voice quality, price, and platform features — this board measures response latency only.

Recording-path overhead sits inside every figure here. We have not characterised the current path against a known-delay reference, so we quote no overhead figure and subtract none.

We always call from Plivo, which is not a platform under test, but the leg that answers belongs to whoever ships the number: Telnyx on its own network, Retell's and Bland's Twilio-backed inside their own accounts, Vapi's upstream undisclosed, and ElevenLabs — which sells no numbers — on a Twilio number we bought for it. Twilio was a deliberate choice there: a Telnyx number would have worked, but Telnyx is itself on this board, and one platform's network should not carry another platform's row.

A discarded turn is one we refuse to time, not one the platform failed. The two sides talked over each other, our detectors disagreed, or no reply came. Discards are published per reason, because a platform that never answers is worse than one that answers slowly.

Our speech-end is found by a detector, not by matching a known waveform. It carries a few milliseconds of error. Differences smaller than that are not resolvable, and we do not claim them.

Endpointing — how long a platform waits after you stop talking before it decides you are finished — is pinned to 0.1 s on Telnyx, Vapi and Retell. It is the one setting we do not leave at the default, and the reason is that it is a timer sitting inside the number being measured: a platform that ships a 1.5 s wait posts a slower TTFAB without its stack being any slower, and the board would be comparing configuration choices rather than engineering. Vapi shipped 0.4 s (1.5 s after speech ending without punctuation) and Retell 1000 ms; both now run 0.1 s. Bland and ElevenLabs expose no equivalent fixed-wait knob, so they run whatever they ship and their figures still contain a wait we could not equalise.

Voice agent latency — common questions

What is TTFAB (Time To First Audio Byte)?

Time from the moment the caller stops speaking to the moment the agent's audio starts — the silence a real caller sits through on every turn. Measured from a saved recording of the actual phone call, not from any API timestamp. Lower is better.

How is this different from vendor-reported latency?

A platform measures from where it stands, and the caller is not standing there. We checked that two ways on this bench. A platform's own recording of a call reads roughly 550 ms earlier than our recording of the same call. The latency a platform reports for itself runs roughly 490 ms below what we measure from that call's audio. The two figures agree, and that agreement is the finding: both describe the moment a reply was produced, not the moment a caller heard it. Neither is dishonest — they answer a different question than the one a caller is asking. This board answers the caller's.

How is the latency actually measured?

A caller robot dials the platform's agent over a real phone call and reads a fixed script — a greeting, several scripted questions, and a goodbye — one measured turn each. Both sides of the call are recorded on one clock (a dual-channel recording). Both endpoints are then found in that recording: our speech-end (t1) and the agent's reply start (t2), each by a speech detector (Silero VAD) with an energy refinement and an independent cross-check. No timestamp reported by any platform is used. TTFAB = t2 − t1, per turn. Turns failing quality gates (the two sides talking over each other, detectors disagreeing, no reply) are discarded and the discard counts are published.

Why not pin the same model, speech recognition and voice on every platform?

The stack is not pinned. Each agent runs the model, speech recognition and voice the platform gives a new signup, and we record what it chose. Endpointing is the single exception — it is a timer inside the number we report, so where a platform exposes it we set it to 0.1 s. That one override is stated in full below. Pinning a stack measures a platform you would have to configure to match, not the one you would buy — and it excludes the vertically integrated platforms outright, since you cannot drop a third-party speech recogniser into a platform that owns its own.

What does this benchmark NOT measure?

Not measured: answer quality, voice quality, price, and platform features — this board measures response latency only. Treat those as vendor claims until measured.

The ranking, the fastest provider, and the side-by-side

Three views of the same measured runs — every page is built from this live benchmark data, so they move when a new platform lands.