A voice agent hears the caller through a speech-to-text API. That API decides how soon the agent sees words, whether it knows the caller has finished, and whether a surname or an order number survives the trip. Transcribing a recorded meeting is a different job. Details below were checked against each provider's official pages in October 2026.
What is the best speech-to-text API for voice agents?
For most voice agents, start with Deepgram Flux: it streams transcripts and tells you when the caller has finished speaking. Compare it with AssemblyAI for prompting with the agent's last reply, ElevenLabs Scribe if you already use ElevenLabs voices, and Speechmatics when calls have several speakers. Use OpenAI when the rest of your stack is there, Gladia for broad language coverage, Google Chirp 3 inside Google Cloud, and Groq for cheap, fast batch transcription.
| API | Consider it when you need… | What to evaluate |
|---|---|---|
| Deepgram | Streaming with built-in end-of-turn events | Turn timing on your callers, and the extra LLM calls eager end-of-turn creates |
| AssemblyAI | A streaming model you can prompt with context and keyterms | Punctuation-based turn detection on hesitant speakers, and billing for idle session time |
| ElevenLabs Scribe | Speech in and speech out from one vendor | Realtime keyterm limits and the lack of realtime diarization |
| OpenAI | Transcription next to OpenAI models you already use | Client-side turn detection and the higher live per-minute price |
| Speechmatics | Realtime speaker labels with a voice-agent model | Pause-based turn detection, and accuracy on your languages |
| Gladia | Many languages and code-switching on one API | Live latency, which Gladia does not publish, and the real-time price |
| Google Chirp 3 | Speech recognition inside Google Cloud | Streaming list price and diarization outside batch |
| Groq Whisper | The lowest price for recorded audio | No streaming endpoint; a 10-second billing minimum |
How do speech-to-text APIs compare on pricing and features?
Providers bill per minute or per hour, and streaming usually costs more than batch. Latency figures are each provider's own claims, measured in different ways, so treat them as a starting point. All figures come from the linked official pages.
| API | Batch price | Streaming price | Free tier | Stated streaming latency | Languages | Diarization | Custom vocabulary |
|---|---|---|---|---|---|---|---|
| Deepgram | Nova-3 $0.0043 a minute pay-as-you-go (pricing) | Flux English $0.0065, Nova-3 $0.0048 a minute; promotional rates | $200 credit, no expiry | About 260 ms end-of-turn detection (Flux docs) | Flux: English, or 10 languages in the multilingual model (models) | Included in batch; $0.0020 a minute when streaming | Keyterms on Nova-3 and Flux, 500 tokens a request (docs) |
| AssemblyAI | Universal-3.5 Pro $0.21 an hour; Universal-2 $0.15 (pricing) | Universal-3.6 Pro Realtime $0.45 an hour; Universal-Streaming $0.15; billed on session time | $50 credit, no card | About 200–300 ms speech-to-text (LiveKit guide) | 32 on Universal-3.6 Pro, with code-switching | $0.02 an hour batch; $0.12 an hour streaming | Keyterms, up to 100 terms streaming, included on Universal-3.6 Pro |
| ElevenLabs Scribe | Scribe v2 $0.22 an hour (API pricing) | Scribe v2 Realtime $0.39 an hour | 10,000 shared credits a month on the Free plan (plans) | About 150 ms (docs) | 90+ | Batch, up to 32 speakers; not listed for Realtime | Keyterms: 1,000 batch, 50 realtime; $0.08 an hour realtime add-on |
| OpenAI | gpt-transcribe $0.0045 a minute (pricing) | gpt-live-transcribe $0.017 a minute | Not stated on the pages we checked | No figure; five delay settings from minimal to xhigh (realtime guide) | Not stated for current models | File transcription only, through a deprecated model; not in realtime sessions | Prompt, keywords, and expected languages |
| Speechmatics | Melia 1 $0.24 an hour; Enhanced $0.75 (pricing) | Linden 1 $0.30 an hour; Enhanced $0.80 | $100 credit, no card | Under 350 ms mean finalization, about 440 ms P95, internal (Linden 1 post) | 55+ | Realtime on Linden, no stated speaker limit | Custom dictionary, up to 1,000 terms on Linden |
| Gladia | Solaria-3 €0.16 an hour (pricing) | €0.68 an hour | €50 credit, valid one year | Not stated on the pages we checked (live docs) | 100+ | Async only; live separates speakers by channel | Custom vocabulary included |
| Google Chirp 3 | $0.016 a minute standard; $0.003 dynamic batch (pricing) | $0.016 a minute for the first 500,000 minutes | 60 free minutes a month are listed for the V1 API only; not stated for V2 | No figure published (Chirp 3 docs) | 29 generally available, about 80 more in preview | 14 languages; batch per the feature table | Speech adaptation, up to 1,000 phrases |
| Groq Whisper | Large v3 Turbo $0.04 an hour; Large v3 $0.111 (docs) | No streaming endpoint on the pages we checked | Free plan with lower limits (rate limits) | Not applicable | Whisper's multilingual set | Not stated on the pages we checked | Prompt up to 224 tokens |
What does a voice agent need from speech-to-text?
A voice agent needs text quickly, a reliable signal that the caller has finished, and the exact words that matter for the task. Consider a call to a dental clinic:
Hi, it's Siobhan Ó Briain. Can I move my cleaning on the 14th to, um, the 21st? Actually, the 22nd, if you have anything after three.
That one turn touches five capabilities:
- Partial transcripts: the agent can look up the booking while the caller is still talking.
- End-of-turn detection: the "um" is a pause, not the end. Reply there and the agent talks over the caller. Wait a full second after every turn and the call feels slow.
- Custom vocabulary: "Siobhan Ó Briain" is easy to get wrong without a hint. Keyterms or a prompt fix that.
- Numbers and corrections: the final transcript must keep "22nd" and "after three", and keep the correction from the 21st.
- Phone audio: real calls arrive at low sample rates with background noise. Accuracy on clean recordings does not carry over.
Speech-to-text is one half of the voice. The other half turns the agent's reply back into speech; our audio generation comparison covers those models.
Deepgram
The default choice when you want transcripts and turn-taking from one streaming model.
Flux
is Deepgram's streaming model for voice agents. It sends an
EndOfTurn event when it decides the caller has finished,
with a confidence threshold you can tune. An optional
EagerEndOfTurn event lets the agent start drafting a reply
early, and TurnResumed tells it to discard the draft. The
docs warn this can raise LLM calls by 50–70%. Flux covers English, plus
a multilingual model for 10 languages.
Pricing lists Flux English at $0.0065 a minute and Nova-3 streaming at $0.0048, both marked as limited-time promotional rates. New accounts get $200 of credit with no expiry. Keyterm prompting works on Nova-3 and Flux, up to 500 tokens a request, and costs extra.
AssemblyAI
Worth comparing when you want to steer recognition with context from the conversation.
Universal-3.6 Pro Realtime accepts a natural-language prompt, a list of keyterms, and up to 1,750 characters of the agent's last reply as context for the next turn, according to the LiveKit guide. It supports 32 languages and switches between them mid-call. Turn detection is punctuation based: after a pause, it checks for a final period or question mark. Presets trade latency for accuracy.
Pricing is $0.45 an hour for Universal-3.6 Pro Realtime and $0.15 for Universal-Streaming. Streaming is billed on session duration, including idle time while the WebSocket is open, so close sessions you are not using. Streaming diarization adds $0.12 an hour. Sign-up includes $50 of credit.
ElevenLabs Scribe
A good fit when ElevenLabs already speaks for your agent.
Scribe v2 Realtime lists latency of about 150 ms, 90+ languages, word-level timestamps, and up to 50 keyterms of 20 characters each. The batch model, Scribe v2, adds diarization for up to 32 speakers and 1,000 keyterms. Diarization is not listed for Realtime.
The API pricing page lists Scribe v2 at $0.22 an hour and Scribe v2 Realtime at $0.39, with realtime keyterm prompting at $0.08 an hour extra. The Free plan includes 10,000 credits a month shared across products, and the plans page prices speech to text at 330 credits a minute.
OpenAI
An option when your agent already runs on OpenAI and you want one bill.
OpenAI now recommends gpt-live-transcribe for live audio
and gpt-transcribe for files. The
realtime guide
streams transcript deltas over a WebSocket and accepts a prompt,
keywords, and expected languages. The live model does not support
server-side voice activity detection. Your client decides when speech
has ended and commits the turn. It returns no speaker labels or word
timestamps.
Pricing
estimates $0.017 a minute for gpt-live-transcribe and
$0.0045 for gpt-transcribe. The
speech-to-text guide
marks gpt-4o-transcribe, its mini and diarize variants, and
whisper-1 as deprecated, shutting down on February 26,
2027. Plan a migration if you use them.
Speechmatics
A candidate when calls have more than one speaker and you need to know who said what.
Agent STT runs on Linden 1, announced in September 2026. Speechmatics says it tags every word with a speaker in real time, with no limit on speakers, and accepts up to 1,000 custom dictionary terms. It reports finalization under 350 ms mean and about 440 ms at P95 in internal measurements. Turn detection is based on pauses for now; the post says smarter turn detection is coming.
Pricing lists Linden 1 at $0.30 an hour for real time, and Melia 1 at $0.24 an hour for recorded audio. New accounts get $100 of credit without a card. Linden launched with 55+ languages; the post says fully multilingual agents arrive with Linden 2.
Gladia
Worth evaluating when callers switch languages or speak one of many languages.
Gladia's pricing page lists 100+ languages, automatic language detection, custom vocabulary, and word-level timestamps on its self-serve plan. Live transcription uses the Solaria-1 model, returns partial transcripts, has a code-switching setting, and runs sessions up to three hours. The docs state no latency figure.
Real time costs €0.68 an hour, against €0.16 for Solaria-3 on recorded audio. Diarization is marked async only. In live sessions, you separate speakers by sending each one on its own channel, up to eight. New accounts get €50 of credit for one year.
Google Cloud Chirp 3
An option when your stack and contracts are on Google Cloud.
Chirp 3 runs on the Speech-to-Text V2 API with streaming, synchronous, and batch recognition. It lists 29 generally available languages and about 80 more in preview. Speech adaptation accepts up to 1,000 phrases. Diarization covers 14 languages, and the feature table limits it to batch. A "supershort" endpointing setting finalizes results as soon as speech ends; Google publishes no latency figure.
Pricing is $0.016 a minute for standard recognition up to 500,000 minutes a month, falling with volume. Dynamic batch, which is not real time, is $0.003 a minute. At low volume, streaming here costs more than every provider above except OpenAI's live model.
Groq Whisper
The low-cost option for recorded audio, not for live calls.
Groq hosts OpenAI's open Whisper models. Its docs list Whisper Large v3 Turbo at $0.04 an hour and Large v3 at $0.111. Each request is billed for at least 10 seconds, which adds up if you send short utterances one by one. Prompts up to 224 tokens guide spelling, and timestamps come at word or segment level.
We found no streaming endpoint or diarization on the pages we checked. Use it for voicemail, call recordings, and post-call summaries, where the agent can wait for a whole file. A free plan exists with lower rate limits.
What do the benchmarks say about speech-to-text APIs?
Published benchmarks agree that accuracy differences between the top providers are now a few points of word error rate. We have not run our own benchmark. The results below are published by others.
Artificial Analysis speech-to-text leaderboard
Artificial Analysis is an independent benchmarking company. Its AA-WER index weights three datasets: its own AA-AgentTalk (50%), VoxPopuli (25%), and Earnings22 (25%). Snapshot of the non-streaming leaderboard for the providers above, read on October 27, 2026:
| Model | AA-WER | Speed factor | USD per 1,000 minutes |
|---|---|---|---|
| ElevenLabs Scribe v2 | 2.2% | 69.5 | 3.67 |
| AssemblyAI Universal-3.5 Pro | 3.0% | 101.5 | 3.50 |
| Gladia Solaria-3 | 3.2% | 91.5 | 10.16 |
| OpenAI GPT Transcribe | 3.3% | 48.5 | 4.50 |
| Google Chirp 3 | 4.3% | 29.6 | 16.00 |
| Groq Whisper Large v3 Turbo | 4.6% | 253.7 | 0.67 |
| Speechmatics Melia | 4.9% | 178.6 | 4.00 |
| Deepgram Nova-3 | 5.2% | 571.9 | 4.30 |
These are batch results: whole files, not live audio. Artificial Analysis also runs a separate streaming leaderboard that measures accuracy and the time from the end of speech to the final transcript. It includes Flux, Universal-3.6 Pro Realtime, Scribe v2 Realtime, Linden 1, and gpt-live-transcribe. That is the closer match for a voice agent, so check it for the models you shortlist.
Hugging Face Open ASR Leaderboard
The Open ASR Leaderboard is hosted by Hugging Face's audio team. Its paper, last revised in March 2026, describes 86 open-source and proprietary systems across 12 datasets, scored on word error rate and speed. It is the most useful public reference if you are considering self-hosting an open model. It does not measure streaming latency.
Vendor-run claims
Deepgram's Flux announcement reports end-of-turn at a p90 of 1 second and roughly 30% fewer false interruptions than pipeline approaches, without naming the systems compared. Speechmatics' Linden 1 latency figures come from its own measurements. Both are useful for understanding the design and are not independent results.
Deepgram vs AssemblyAI vs ElevenLabs: which should you choose?
Choose by the hardest part of your calls:
- Deepgram Flux for turn-taking. End-of-turn events come from the model itself, with an eager mode for faster replies.
- AssemblyAI for context-heavy calls. A prompt, keyterms, and the agent's last reply all inform the next transcript.
- ElevenLabs Scribe for one voice vendor. The shortest latency claim in this list, though providers measure it differently, and it pairs with ElevenLabs text-to-speech.
Pick the closest fit, then run one alternative on the same audio.
How do you test speech-to-text APIs on your own audio?
Collect 30 to 50 real caller turns, write the correct transcript for each by hand, and stream the same audio to two or three providers in real time. Keep the rest of the agent fixed so only the transcriber changes.
| Audio type | What a useful result looks like |
|---|---|
| Phone call at 8 kHz with background noise | Accuracy close to your clean recordings |
| Names, emails, and order numbers | Exact spelling, with and without keyterms |
| Dates, times, and amounts | Formatted consistently, so your agent can parse them |
| A caller who pauses mid-sentence | No end-of-turn until they have finished |
| A self-correction ("the 21st, actually the 22nd") | Both words kept, so the agent can use the last one |
| A caller who switches language | Both languages transcribed, not translated |
Record word error rate on the words that matter, time to first partial, time from end of speech to final transcript, false end-of-turn events, and cost per call minute. Then listen to the failures. A misheard name, a late final, and a reply that cut the caller off need different fixes.
Where does Dexto fit?
Dexto is the agent that runs the evaluation and keeps the results. A speech-to-text API returns a transcript; you still need something to send the same audio to each provider, score the output, and remember what you decided. That surrounding system is the harness, and it is what Dexto provides.
- A computer: Dexto has a persistent cloud computer where it stores files and runs code. It can keep your test audio and reference transcripts there, run the comparison script, and save each provider's output next to the last run.
- Tools: connections include more than 50 built-in integrations and any custom MCP server, so results can go to Slack, Notion, or GitHub.
- Process: a skill holds your evaluation rules, such as which words must be exact and how to score a late end-of-turn. An agent configured for the job applies them every time you add a provider.
For the dental clinic example, that means: upload the recorded turns, describe the scoring in a skill, and have the agent write a comparison table you can rerun when a provider ships a new model.
Try it in Dexto
Pick two APIs from the table, gather a few real calls, and ask Dexto to compare them. Open Dexto or read the quickstart.