What do speech APIs cost in 2026? For text-to-speech, per million characters: OpenAI tts-1 $15 and tts-1-hd $301, Deepgram Aura-2 $302, ElevenLabs Flash and Turbo $40, ElevenLabs v3 and Multilingual v2 $803. OpenAI's gpt-4o-mini-tts and Google's Gemini TTS models bill per token instead. For pre-recorded transcription, per audio hour: AssemblyAI Universal-2 $0.15 and Universal-3.5 Pro $0.214, ElevenLabs Scribe v2 $0.223, Deepgram Nova-3 about $0.262, OpenAI gpt-transcribe $0.27 and Whisper $0.361.
Those numbers are only the start. Streaming, speaker labels, idle sessions and the unit each vendor bills in change the real cost, and voice quality is something you can only judge by listening.
Text-to-speech
| Model | Billing unit | Rate | Per 1M characters |
|---|---|---|---|
| OpenAI tts-1 | Characters | $15 per 1M | $15 |
| OpenAI tts-1-hd | Characters | $30 per 1M | $30 |
| Deepgram Aura-2 | Characters | $0.030 per 1K | $30 |
| ElevenLabs Flash / Turbo | Characters | $0.04 per 1K | $40 |
| ElevenLabs v3 / Multilingual v2 | Characters | $0.08 per 1K | $80 |
| OpenAI gpt-4o-mini-tts | Tokens | $0.60 per 1M text in, $12 per 1M audio out | Depends on audio length |
| Gemini 3.8 Flash TTS | Tokens | $0.50 per 1M text in, $9 per 1M audio out (until 31 Dec 2026) | Depends on audio length |
Three notes from the pages:
- ElevenLabs keeps the per-unit rate the same across plans; plans change the included allowance, from 10,000 characters to over 12 million, with monthly fees from $6 to $9903.
- Gemini's TTS rates double on 1 January 2027 for the 3.8 Flash TTS and Flash-Lite TTS models, to $1.00 per million text tokens and $18 and $12 per million audio tokens respectively, and both have a free tier5.
- Token-billed TTS is priced on the audio produced, so the cost per character depends on how long the speech is. Measure it on your own scripts before comparing it with a per-character rate.
Speech-to-text
| Model | Mode | Rate | Per audio hour |
|---|---|---|---|
| AssemblyAI Universal-2 | Pre-recorded | $0.15/hr | $0.15 |
| AssemblyAI Universal-3.5 Pro | Pre-recorded | $0.21/hr | $0.21 |
| ElevenLabs Scribe v2 | Pre-recorded | $0.22/hr | $0.22 |
| Deepgram Nova-3 (monolingual) | Pre-recorded | $0.0043/min | $0.26 |
| OpenAI gpt-transcribe | Pre-recorded | $0.0045/min | $0.27 |
| OpenAI Whisper | Pre-recorded | $0.006/min | $0.36 |
| OpenAI gpt-4o-mini-transcribe | Pre-recorded | est. $0.003/min | about $0.18 |
| AssemblyAI Universal-Streaming | Streaming | $0.15/hr | $0.15 |
| Deepgram Nova-3 (monolingual) | Streaming | $0.0048/min | $0.29 |
| Deepgram Flux English | Streaming | $0.0065/min | $0.39 |
| AssemblyAI Universal-3.6 Pro Realtime | Streaming | $0.45/hr base | $0.45 |
| OpenAI gpt-realtime-whisper | Streaming | $0.017/min | $1.02 |
What the table does not show:
- Multilingual costs more on several vendors: Deepgram Nova-3 multilingual is $0.31 per hour pre-recorded against $0.26 monolingual2.
- Speaker labels are often extra. AssemblyAI adds $0.02 per hour for standard async speaker labels and $0.12 per hour on streaming4.
- Streaming can bill idle time. AssemblyAI notes that streaming "is billed per session duration", so an open connection with nobody speaking still counts4. Close sessions when a call ends.
- Promotional rates expire. Deepgram marks its streaming prices as limited-time2; budget at the regular rate.
Worked examples
What to test before you choose
- Your audio, not a demo clip. Phone-line audio, accents, crosstalk and domain vocabulary change word error rates more than vendor benchmarks show.
- Latency where it matters. For voice agents, time to first audio byte (TTS) and time to final transcript (STT) decide whether a conversation feels natural.
- Languages. Check every language you serve, including mixed-language speech.
- Features you need. Diarization, timestamps per word, punctuation, profanity filtering, custom vocabulary — and which of them cost extra.
- Voice licensing. Read the vendor's terms for commercial use of generated voices and for cloned voices.
Reliability: why voice failover is different
For text models, failover to another provider serving the same model is close to invisible. For speech it is not:
- TTS voices are vendor-specific. A voice id on one vendor does not exist on another, so a fallback changes how your product sounds. Prefer failover to the same vendor on another account, or choose a fallback voice deliberately and accept the change.
- Transcripts differ. A fallback STT model produces different punctuation, casing and segmentation; downstream parsing must tolerate both.
- Long files need chunking. Split long recordings on silence and transcribe chunks in parallel, offsetting timestamps, rather than holding one connection open for an hour.
Speech through INFRO
INFRO serves POST /v1/audio/speech and POST /v1/audio/transcriptions on your own provider connections, such as OpenAI, ElevenLabs and OpenAI-compatible speech services you connect. Speech requests are estimated per character of input and transcription per second of audio the provider reports, with the estimate in the X-INFRO-Cost header or usage.cost, so budgets at organization, project, member and key level cover voice traffic like any other. The text of a speech request passes your input guardrails. INFRO does not store synthesized audio, input text, recordings or transcripts from these endpoints; it records request metadata. Its documentation says plainly that fallbacks across TTS vendors rarely works, because voice ids are not portable.
Summary
Convert every speech rate to the same unit before comparing: per million characters for TTS, per audio hour for transcription. Then add the costs a rate card hides — streaming, speaker labels, idle sessions, multilingual premiums, expiring promotions — and choose on your own audio, because accuracy and voice quality vary more than price does.
