OpenAI charges $15 per million characters for tts-1, $30 for tts-1-hd, and $0.60 per million text tokens plus $12 per million audio tokens for gpt-4o-mini-tts. They leave the API on 6 January 2027. In our example call, each costs under 1.5 cents a call minute. Dograh, the open-source AI voice agent platform, runs it, self-hosted or on Dograh Cloud.
Key Takeaways
- OpenAI removes tts-1, tts-1-hd and gpt-4o-mini-tts on 6 January 2027.
- In our example call, OpenAI's voice costs under 1.5 cents per call minute.
- OpenAI's named replacement is a speech-to-speech model on the Realtime API.
OpenAI's text-to-speech prices apply only until its three voice models leave the API. Below, we turn those prices into a cost per call minute, price the replacement OpenAI names and compare the voices you can move to, then show how Dograh runs the switch as the worked example.
The shutdown date comes first
Any plan built on OpenAI's text-to-speech now has an end date. OpenAI's deprecation schedule says tts-1, tts-1-hd and gpt-4o-mini-tts, including both gpt-4o-mini-tts snapshots, will be removed from the API on 6 January 2027, and tells developers to migrate to gpt-realtime-2.1-mini before then.
That replacement is a different kind of model. OpenAI's text-to-speech guide says gpt-realtime-2.1-mini is not supported on the speech endpoint that the three voice models use. It runs on the Realtime API, where one model hears the caller, decides what to say and speaks, all in one session. Moving there changes how the whole agent works, not only which voice it uses.
So the prices below cover the weeks left, and the real choice is where to go next. If you plan to take OpenAI's route, our guide to the OpenAI Realtime API on phone calls covers the setup and its limits on a phone line.
Whichever way you go, start before the last weeks. Build the new voice or the realtime agent next to the current one, send a share of real calls to it, and compare transcripts and call outcomes before you move every agent across.

OpenAI's text-to-speech prices
The three models are billed in two different units, which makes them hard to compare at a glance. The older two bill per character of text, and gpt-4o-mini-tts bills per token, with audio tokens priced far above text. These are OpenAI's API prices:
| Model | Billed on | Price | Built-in voices | Tone instructions |
|---|---|---|---|---|
| tts-1 | Characters of text | $15.00 per 1M characters | 9 | No |
| tts-1-hd | Characters of text | $30.00 per 1M characters | 9 | No |
| gpt-4o-mini-tts | Text tokens in, audio tokens out | $0.60 per 1M text tokens, $12.00 per 1M audio tokens | 13 | Yes |
gpt-4o-mini-tts also takes instructions for tone, accent and speed, and OpenAI recommends its marin or cedar voices for the best quality. All three take up to 4,096 characters per request, and OpenAI says the voices are currently optimized for English.
For a phone line, ask for raw audio rather than MP3. OpenAI's guide recommends WAV or PCM for the lowest latency, and its PCM output is raw 24 kHz, 16-bit samples with no header, so audio can start playing as soon as the first chunk arrives. The format does not change the price, since billing follows the characters or tokens, not the file type.
OpenAI's usage policies require a clear disclosure to callers that the voice they hear is AI-generated. If you use these voices on calls, write that notice into the Greeting Text on the Start Call node. Switch off Allow Greeting Interruption on the same node, since it is on by default, so the full notice plays before a caller can talk over it.
From characters to a cost per call minute
A call is billed by what the agent says, so the useful unit is characters per call. To turn those units into minutes of audio, one developer measured it. S Anand sent the same 4,096-character script to both models. gpt-4o-mini-tts returned 268 seconds of audio for $0.0652, and tts-1 returned 256 seconds for $0.0614. That works out to about $0.0146 and $0.0144 per minute of audio, and about $15.92 per million characters on gpt-4o-mini-tts.
Now take the 5-minute example call from our LLM pricing guide. The agent speaks 12 replies of about 198 characters each, so it sends 12 x 198 = 2,376 characters to the voice model per call. Priced as an example, line by line:
- tts-1: 2,376 x $15 / 1,000,000 = $0.0356 a call, or $0.0071 a call minute.
- tts-1-hd: 2,376 x $30 / 1,000,000 = $0.0713 a call, or $0.0143 a call minute.
- gpt-4o-mini-tts, at the measured $0.0652 per 4,096 characters: about $0.0378 a call, or $0.0076 a call minute.
Across 1,000 such calls, that is $35.64 on tts-1, $71.28 on tts-1-hd and about $37.82 on gpt-4o-mini-tts. The gpt-4o-mini-tts figure rests on one script, and a slower or more expressive read makes more audio tokens from the same text. Your own bill depends on how much your agent talks, so count the characters in a week of real transcripts.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
What the replacement route costs
gpt-realtime-2.1-mini is priced per token for text and audio in both directions: $0.60 per million text tokens in, $10 per million audio tokens in, $2.40 per million text tokens out and $20 per million audio tokens out. OpenAI's guide to voice latency and cost counts the model's own audio at one token per 50 milliseconds, which is 1,200 tokens per minute of speech.
On the voice alone, that is 1,200 x $20 / 1,000,000 = $0.024 per minute the agent speaks, against about $0.0146 measured on gpt-4o-mini-tts. The comparison stops there, though, because the realtime model does more than speak. It also takes the caller's audio as input and answers without a separate speech-to-text and language model, and every turn sends the conversation so far back in.
So price it as a whole call, not as a voice. Our post on OpenAI Realtime API pricing runs the same 5-minute example call on gpt-realtime-2.1-mini at about $0.3463, or about $0.069 a minute, and shows how caching and shorter answers bring that down. That figure replaces the speech-to-text, the language model and the voice lines together.
The realtime route earns its price where a call needs fast back-and-forth, such as a caller who interrupts often. A cascade keeps more control per part, since you can choose the speech-to-text and the language model separately and change one without touching the others. For a scripted call with tool lookups, price both on the same call before you decide.
Other voices if you keep a cascade
Keeping a separate speech-to-text, language model and voice, called a cascade, means picking a new voice provider before the removal date. The language model and the call flow stay as they are, so the change is one setting.
Hosted voices bill in their own units, by character, credit or minute. Our comparison of the best text-to-speech APIs for voice agents prices them side by side on characters per call, which is the same basis as the sums above.
Open voices remove the per-character bill and replace it with a GPU. Our guide to the best open-source TTS models tests seven for phone agents and covers which licences let you ship them. An open voice served on your own GPU needs a server that answers OpenAI's speech request format and returns raw 24 kHz PCM, the same audio Dograh asks OpenAI for. If your callers speak more than English, check the language first, since OpenAI's voices are tuned for English. Our post on multilingual TTS for voice agents lists which providers cover Hindi, Spanish and Arabic.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Running OpenAI's voice in Dograh until the switch
Dograh runs OpenAI's voice as one of its built-in text-to-speech options, using gpt-4o-mini-tts with your own OpenAI key. It asks OpenAI for raw 24 kHz PCM audio, so nothing has to be converted before it reaches the call. OpenAI bills you directly at the rates above.
The voice is a per-agent setting in the voice configuration, separate from the call flow, its prompts and its tools. Moving an agent to another hosted voice, or to an open voice on your own server through Local Models, is a model configuration change. Dograh's OpenAI Realtime option also lists gpt-realtime-2.1-mini, for teams that take OpenAI's own route as speech-to-speech.
Characters you never send cost nothing. Pre-recorded clips play the lines your agent says on every call, and the voice model handles only the rest. As an example, a 198-character greeting played as a clip on 1,000 calls saves 198,000 characters, $2.97 on tts-1.
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. That adds $0.05 to each 5-minute example call. Price your next voice on the same characters per call before the removal date, and move one agent first.
Glossary
- Audio token
- The unit OpenAI bills generated speech in on gpt-4o-mini-tts and its realtime models. OpenAI's realtime guide counts the model's own audio at one token per 50 milliseconds, so a minute of agent speech is about 1,200 tokens.
- Characters per call
- How much text an agent sends to its voice model on one call. It is the fairest basis for comparing voice prices, since some providers bill per character and others per token, credit or minute.
- Speech-to-speech model
- A model that hears the caller's audio and answers in audio in one step, such as gpt-realtime-2.1-mini. It replaces the speech-to-text, the language model and the voice together, so it is priced per call, not per voice.
- Cascade
- A voice agent built from separate speech-to-text, language model and voice models. Each part can be swapped on its own, which is why leaving OpenAI's text-to-speech in a cascade is one setting change.

