The best TTS API for a voice agent streams its first word fast and still sounds clear on a phone line. ElevenLabs and Cartesia top blind listening votes, Deepgram and Rime publish simple usage rates, and Kokoro is the open choice. Dograh, the open-source AI voice agent platform you can self-host or run on Dograh Cloud, runs them all.
Key Takeaways
- Vendors measure latency their own way, so time first audio on your phone line.
- Eleven v4 and Sonic 3.6 lead blind votes. kokoro-82m led our open-model reading test.
- In Dograh the voice is a per-agent setting, so the choice stays reversible.
This post is part of our guide to open-source TTS models, where a hosted API is the other path when voice quality matters more than keeping audio in-house. Below, we compare hosted and open voices on speed, sound, cloning and list price, then show how each runs in Dograh.
What a live call asks of a TTS API
A voice on a phone call has one hard job, which is to start talking fast. A natural turn needs speech-to-text, the language model and the voice to come back in under about 800 ms together, and speech-to-text usually takes the biggest share. So the voice has to stream, sending its first audio before the whole sentence is ready.
Vendor speed figures do not line up. ElevenLabs quotes about 75 ms for Flash, and Rime quotes a median of 37 ms to first audio for Mist v3 at one request at a time. Each vendor measures from its own servers in its own way, so the only number that counts is the one you time on your own phone path, from your own region.

The line matters too. Most phone calls still reach the agent as 8 kHz audio, while a browser demo runs at 16 kHz, so a voice that sounds rich in the browser can sound flat on a call. Numbers are the other trap, since hosted voices misread prices and dates as well. Our post on how to reduce robotic TTS in voice agents shows how to have the language model write them as spoken words.
Hosted and open TTS options compared
This table lists each option's list price, how it handles cloned or custom voices, and how it runs in Dograh. Prices come in different units, so compare within a unit.
| Option | List price | Cloned or custom voices | How it runs in Dograh |
|---|---|---|---|
| Dograh (orchestration layer for the rows below) | Self-hosted Dograh has no per-minute platform fee, but servers, model keys and phone minutes still cost money. Dograh Cloud charges a 1¢-a-minute platform fee. Voice usage is billed by each provider | Uses the provider's voice IDs, plus pre-recorded clips for fixed lines | Open source. Self-host it or use Dograh Cloud |
| ElevenLabs Flash v2.5 | $0.04 per 1K characters | Paste any voice ID from your library, clones included | Built in, the default ElevenLabs model |
| ElevenLabs Multilingual v2 and v3 | $0.08 per 1K characters | Same voice IDs | Built in, with v3 and v4 models listed |
| Cartesia Sonic 3.6 | Credits, 1 per character. Plans from $5 a month for 100K | Instant clone from the Pro plan | Built in, the default Cartesia model |
| Deepgram Aura-2 | $0.030 per 1K characters ($0.045 for Flux voices) | Custom voice ID field | Built in, with Aura-2, Aura-1 and Flux voices |
| OpenAI gpt-4o-mini-tts | $0.60 per 1M text tokens in, $12 per 1M audio tokens out | Named voices such as alloy | Built in |
| Inworld TTS-2 | $15 to $25 per 1M characters on demand | Cloning and voice design on every plan | Built in |
| Rime Mist v3 and Coda v2 | $0.030 and $0.050 per minute (Flex) | Custom cloning on Enterprise | Built in, with Arcana and Mist v3 listed |
| Kokoro 82M (open) | Your own GPU time | Fixed voices only | Local Models, the default local voice |
| Chatterbox (open) | Your own GPU time | Clones from a short clip | Local Models, behind a server that returns raw 24 kHz PCM |
Every hosted row is a built-in provider in Dograh, so you add your own key and pick the voice per agent. The open rows run on your own GPU through the Local Models (Speaches) option.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
Price per character and per minute
Most TTS APIs bill per character of text, so cost follows how much the agent says. ElevenLabs charges $0.04 per 1,000 characters for Flash and Turbo and $0.08 for Multilingual v2 and v3. Deepgram lists Aura-2 at $0.030 per 1,000 characters on pay-as-you-go and its Flux voices at $0.045. Inworld's on-demand rates run from $15 per million characters for TTS-2 Flash to $25 for Realtime TTS-2.
Others bill in other units. Cartesia sells credits, with Sonic using 1 credit per character and about 750 to 800 credits per minute of audio. Rime bills by the minute on its Flex plan, $0.030 for Mist v3 and $0.050 for Coda v2. OpenAI bills gpt-4o-mini-tts by tokens. To compare them fairly, count how many characters a typical call speaks and price that.
The biggest saving is often the text you never send. Lines the agent says on every call, such as the greeting or a policy notice, can play as pre-recorded clips that skip the voice model, so they cost no characters and sound the same every time. Self-hosted Dograh has no per-minute platform fee, but servers, model keys and phone minutes still cost money. Dograh Cloud charges a 1¢-a-minute platform fee.
Voice quality and cloning
For how a voice sounds, the fairest public guide is a blind listening test. On the Artificial Analysis Speech Arena, where listeners vote between pairs of clips, Eleven v4 ranks first of 103 and Eleven v4 Turbo second. Sonic 3.6 ranks fourth, Inworld Realtime TTS-2 ninth and Rime Coda v2 43rd. ElevenLabs Flash v2.5, the default ElevenLabs model in Dograh, ranks 55th, and Kokoro 82M v1.0 ranks 63rd.
Ranks move as votes come in, and they come from short clips, not phone calls. Use the board to shortlist two or three voices, then judge them over a real call with your own script.
Cloning happens at the provider. Cartesia offers instant cloning from its Pro plan, Inworld includes cloning and voice design on every plan, and Rime keeps custom cloning for Enterprise. With ElevenLabs you paste the ID of a cloned voice from your library. In Dograh, each of these providers takes a custom voice ID, so a clone you made at the provider is one field away. Clone only a voice whose owner has agreed to it.
Open voices when audio stays in-house
A hosted API receives every sentence your agent says. When that is not allowed, an open voice on your own GPU keeps the audio in-house, as long as speech-to-text and the language model run there too.
In our benchmark of seven open TTS models, kokoro-82m read tricky text such as prices and abbreviations most accurately, with a score of 0.61, and used about 18x less compute per clip than orpheus-3b. Hosted APIs were not part of that test, so its scores compare open models only. Kokoro's model card puts it under Apache-2.0, with 54 voices across 8 languages and no cloning.
Chatterbox is the open option that clones, under the MIT license. The trade is the setup. You run the GPU, and each model needs a server that returns the audio format Dograh plays, which the guide covers in its section on running an open voice.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Which TTS providers Dograh runs
Dograh is the orchestration layer that runs the call flow, tools and telephony, and the voice is a model setting you choose per agent. Its built-in TTS providers are Deepgram, ElevenLabs, Google, OpenAI, Cartesia, Inworld, Sarvam, Camb.ai, Rime, MiniMax, Azure Speech, Smallest AI, xAI, Speechify and Dograh's own voice, plus Local Models (Speaches) for open models on your servers. The newest additions are Deepgram's Flux voices and Sarvam's bulbul:v4-flash.
You bring your own key for each provider and pick the voice in the voice settings. Switching an agent from Cartesia to ElevenLabs, or to Kokoro on your own GPU, changes its model configuration and leaves the flow alone.
Call traces show the speech-to-text, AI and voice time for every turn, so you can compare two voices on the same script with real numbers. If a provider caps how many streams one key can open, several keys can share the load, as our post on STT and TTS concurrency limits explains.
Start with a voice that ranks well and reads your numbers right, time it on a real call, and keep a second voice configured so you can swap it in.
Glossary
- First audio
- The first sound a voice sends back after it gets the text. On a call it is the silence after the caller stops talking, so it matters more than how fast a whole sentence is made.
- Blind listening test
- A ranking where listeners compare two clips without knowing which model made each. It measures how a voice sounds in short clips, not how it reads numbers or how it holds up on a phone line.
- Voice ID
- The identifier a TTS provider gives a voice, including a cloned one. In Dograh you paste it into the voice field with your own key, so a clone made at the provider works in the agent.
- Pre-recorded clip
- A recorded line the agent plays instead of sending text to the voice model. It costs no TTS characters and sounds the same on every call, which suits greetings and fixed notices.

