OpenAI Text to Speech: Voices, Pricing, API and WordPress

OpenAI text to speech is a paid API that turns text into spoken audio. You send text, a model name and a voice to one endpoint, and it returns an audio file, MP3 by default. As of September 2026 OpenAI offers three speech models (tts-1, tts-1-hd and gpt-4o-mini-tts) and 13 built-in voices. OpenAI also requires you to tell listeners that the voice is AI-generated.
This guide covers the models, voices, pricing and limits from OpenAI's own documentation, gives a working API example, and explains how to use OpenAI voices on a WordPress site.
What the OpenAI text to speech API does
The OpenAI text to speech API is a single endpoint, POST https://api.openai.com/v1/audio/speech. It takes these parameters:
- model: which speech model to use.
- input: the text to read, up to 4,096 characters per request.
- voice: one of the built-in voices (or an approved custom voice).
- instructions (optional): plain-language directions for how to speak. They only work with
gpt-4o-mini-tts. - response_format (optional):
mp3,opus,aac,flac,wavorpcm. MP3 is the default. - speed (optional): from 0.25 to 4.0, with 1.0 as the default.
There is no language parameter. You write the input in the language you want. OpenAI says the model generally follows Whisper's language support, but also that the voices are currently optimized for English, so test a few paragraphs before you commit to a non-English site.
OpenAI text to speech models and pricing
These are the three models and OpenAI's published prices as of September 2026. Always check the OpenAI pricing page (opens in a new tab) before you budget, because prices change.
| Model | What OpenAI says about it | Price (as of September 2026) | Supports instructions |
|---|---|---|---|
tts-1 | Lower latency, lower quality | $15.00 per 1M characters | No |
tts-1-hd | Higher quality | $30.00 per 1M characters | No |
gpt-4o-mini-tts | Newest and most reliable; max 2,000 input tokens | $0.60 per 1M text input tokens + $12.00 per 1M audio output tokens | Yes |
tts-1 and tts-1-hd are billed per character, so you can work out the cost of a post in advance. A 6,000-character article costs about $0.09 with tts-1 and about $0.18 with tts-1-hd (6,000 ÷ 1,000,000 × the price). gpt-4o-mini-tts is billed by tokens, including the audio it produces, so the cost of the same article depends on how long the spoken audio turns out. Check your real usage in the OpenAI dashboard after a few test posts.
The bigger cost lever is whether you generate the audio once or on every visit. If you save the MP3 and serve that file to every reader, you pay OpenAI once per article, not once per listen.
OpenAI text to speech voices
OpenAI's documentation lists 13 built-in voices:
alloy, ash, ballad, coral, echo, fable, nova, onyx, sage, shimmer, verse, marin and cedar.
For best quality, OpenAI recommends marin or cedar. OpenAI's own quickstart uses coral with gpt-4o-mini-tts.
OpenAI also offers custom voices, but not as open voice cloning: a custom voice is created from a speaker's consent recording plus a matching audio sample, and it is only available to approved users. For most websites, the built-in voices are what you will use.
Steering the voice with instructions
With gpt-4o-mini-tts you can add an instructions string such as "Speak in a calm, clear tone." OpenAI lists accent, emotional range, intonation, impressions, speed of speech, tone and whispering as things instructions can control. The older tts-1 models ignore this parameter.
How to use OpenAI text to speech (API example)
First create an API key in the OpenAI platform at platform.openai.com/api-keys (opens in a new tab) (API usage is paid, so the account needs billing set up). Then this request, taken from OpenAI's quickstart, saves the result as speech.mp3:
curl https://api.openai.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini-tts",
"input": "Today is a wonderful day to build something people love!",
"voice": "coral",
"instructions": "Speak in a cheerful and positive tone."
}' \
--output speech.mp3
A few practical notes:
- Keep the key on your server. Never put your OpenAI API key in browser JavaScript, where any visitor can copy it and spend your credit.
- Split long text. Each request takes at most 4,096 characters (and 2,000 input tokens on
gpt-4o-mini-tts). For a full article, split at sentence boundaries, generate each part, and join the MP3s. - Streaming is optional. The API can stream audio as it is generated, so playback can start sooner. The
ssestream format is not supported ontts-1ortts-1-hd. - Rate limits depend on your usage tier. OpenAI lists the requests-per-minute limits for each tier on the model's page.
The disclosure rule: tell listeners it is an AI voice
OpenAI's text to speech guide says its usage policies require "a clear disclosure to end users that the TTS voice they are hearing is AI-generated and not a human voice." On a website, a short line next to the player is enough to meet the spirit of this, for example "This article is read by an AI voice." Add it wherever the audio appears, including podcasts or videos made from the same files. If you plan to sell or distribute the audio, also read our guide on using text to speech audio commercially (opens in a new tab).
OpenAI voices on WordPress with AtlasVoice Pro
If you want OpenAI voices on WordPress without writing code, AtlasVoice Pro can connect to your OpenAI account. AtlasVoice is our product. The free plugin, Text To Speech TTS Accessibility (opens in a new tab), adds a Listen player that uses the visitor's browser voices, and AtlasVoice Pro adds natural-voice players, including one for OpenAI.
OpenAI works on a bring-your-own-key basis. You paste your own OpenAI API key, OpenAI bills you directly for the text you convert, and AtlasVoice charges nothing extra for OpenAI usage. The Pro licence is a separate purchase and does not include OpenAI credit.
Where the settings are
In the plugin the OpenAI integration is labeled ChatGPT TTS, but it calls the same OpenAI speech endpoint shown above.
- Integrations: under "Select Voice Service", choose ChatGPT TTS, paste your OpenAI API key into the password field and click Submit. Once the key is saved, a checkmark appears next to the service, along with a link to platform.openai.com/usage (opens in a new tab) for your usage and billing. The Pro setup wizard has the same "Connect ChatGPT TTS" step.
- Customization: select the ChatGPT TTS player.
- Listening: pick a Voice Model (TTS-1, TTS-1 HD or GPT-4o Mini TTS), a Voice Language and a Voice to Speak. Set these right after switching players, so the saved voice matches the new provider. With TTS-1 and TTS-1 HD, the voice list shows
alloy,echo,fable,nova,onyxandshimmer. With GPT-4o Mini TTS, it shows all 13 voices. - Voice Instructions (GPT-4o Mini TTS only): choose a preset (Native speaker, Slow and clear, Warm and friendly, Professional newsreader, Storyteller) or write your own. The preset text includes your chosen language, which helps with non-English posts.
- Voice Speed: a slider from 0.25 to 4.0, matching OpenAI's speed range.
What happens when a post is played
- Long posts are split into parts that fit OpenAI's per-request limit (about 3,000 characters for TTS-1 and TTS-1 HD, 2,500 for GPT-4o Mini TTS). The parts are then joined into one MP3.
- The MP3 is saved in your WordPress uploads folder and reused for every later listener, so OpenAI is called once per article, not on every play. You can also back the files up to Google Cloud Storage.
- Bulk MP3 generation can create the audio for many posts ahead of time.
- If you turn on read-along highlighting, OpenAI audio is highlighted sentence by sentence.
Remember to add your AI-voice disclosure near the player. The plugin does not add it for you.
OpenAI vs ElevenLabs vs Google vs the AtlasVoice API
Here is how the options compare inside AtlasVoice (disclosure: AtlasVoice is ours):
- OpenAI: your own API key, billed by OpenAI. Simple, predictable per-character pricing on
tts-1, voice instructions ongpt-4o-mini-tts, sentence-by-sentence highlighting. - ElevenLabs: also your own API key, billed by ElevenLabs. It has a large voice library and word-by-word highlighting in AtlasVoice Pro. See ElevenLabs voices on WordPress (opens in a new tab).
- Google Cloud: uses a Google service-account JSON file rather than an API key, and Google bills you. It also gets word-by-word highlighting. See how to get a Google Cloud text to speech key (opens in a new tab).
- AtlasVoice API: our own HTTP API that turns text into an MP3. The free plan includes 100,000 characters a month, and Premium comes with an AtlasVoice Pro licence. Your text is not stored, and the generated MP3 is deleted from our servers within minutes. See the AtlasVoice API (opens in a new tab) or our roundup of free text to speech APIs (opens in a new tab).
If you do not need natural voices yet, the free plugin's browser voices cost nothing and need no key. Our free guide to adding text to speech to WordPress (opens in a new tab) walks through that setup.
Your next step
Create an OpenAI API key, keep an eye on your usage page, and try one article with tts-1 to check the cost and the voice. If you run WordPress, you can see what AtlasVoice Pro includes (opens in a new tab), connect the key under Integrations, and let each post become a saved MP3 that every reader hears without a new OpenAI charge.


