DEV Community

Swift Labs
Swift Labs

Posted on Originally published at tts.deadlinkpatrol.com

gpt-4o-mini-tts replacement: what to use after OpenAI shuts it down on Jan 6, 2027

Originally published at tts.deadlinkpatrol.com. Facts checked November 9, 2026.

From Swift Labs, makers of TTS Swap. Written with AI help and checked against OpenAI's docs, OpenAI's community forum and our own service on November 9, 2026. Not affiliated with or endorsed by OpenAI.

Short answer: OpenAI shuts down gpt-4o-mini-tts on January 6, 2027, along with tts-1 and tts-1-hd. The replacement OpenAI lists is gpt-realtime-2.1-mini, which runs on the Realtime API, not on /v1/audio/speech. If your code only needs text in and audio out, an OpenAI-compatible endpoint keeps your audio.speech.create call running. TTS Swap does that, but it does not apply the instructions parameter, so tone and style prompts have no effect there.

What OpenAI says

  • OpenAI's deprecations page (entry "2026-10-01: Text-to-speech models") lists gpt-4o-mini-tts with a shutdown date of Jan 6, 2027 and gpt-realtime-2.1-mini as the recommended replacement.
  • OpenAI's text-to-speech guide says this is a change of API workflow: gpt-realtime-2.1-mini isn't a supported model for /v1/audio/speech. The guide's gpt-4o-mini-tts examples pass an instructions string such as "Speak in a cheerful and positive tone."
  • On OpenAI's community forum, OpenAI Support wrote on October 6 that migration means moving off /v1/audio/speech, and that you can set session.instructions or response.instructions on the Realtime API. Support also wrote on October 8 that the retirement notice doesn't name a drop-in replacement for /v1/audio/speech.
  • The same thread has users reporting that the Realtime path turns a few lines of code into far more, and that they want plain text in, speech out. Support said gpt-audio-1.5 through chat completions generates a response to a prompt and isn't guaranteed to read text verbatim.

So you can't just change gpt-4o-mini-tts to gpt-realtime-2.1-mini in audio.speech.create. That call isn't supported.

Find where you use it

grep -rnE "gpt-4o-mini-tts|instructions=" --include="*.py" --include="*.js" --include="*.ts" --include="*.env*" .
Enter fullscreen mode Exit fullscreen mode

Check config files and environment variables too. The model name is often stored outside the code, and instructions is easy to miss.

Your options

Option Keeps /v1/audio/speech code instructions (tone, style) Work involved
OpenAI Realtime API (gpt-realtime-2.1-mini) No session.instructions / response.instructions; test that it reads your text exactly Rewrite to sessions and streamed events
Another speech provider with its own API Usually no Varies New client code, new voices
An OpenAI-compatible speech server (hosted or self-hosted) Yes Varies by server; check Change the base URL and API key
TTS Swap Yes Not applied Change the base URL and API key

If you rely on instructions to set tone, accent or pacing, TTS Swap is not a match. Compare the Realtime API and other providers against your current output.

If you pass instructions but could live without it (internal tools, prototypes, accessibility read-aloud, batch narration), an OpenAI-compatible endpoint is the least work.

Using TTS Swap with gpt-4o-mini-tts code

TTS Swap answers the same /v1/audio/speech request. Change the base URL and API key; your calls can keep model="gpt-4o-mini-tts".

from openai import OpenAI

client = OpenAI(base_url="https://tts.deadlinkpatrol.com/v1", api_key="sk-tts-…")
client.audio.speech.create(model="gpt-4o-mini-tts", voice="alloy", input="Hello", response_format="wav").write_to_file("hello.wav")
Enter fullscreen mode Exit fullscreen mode

Be clear on what you get:

  • instructions is not applied. Our service doesn't read that field. The request is not rejected: instructions is accepted but ignored, so it won't steer tone or style.
  • The voice won't sound like OpenAI's. Audio comes from the open-source MeloTTS model, with one voice per language. Every voice name gets that same voice.
  • WAV comes back even when you ask for mp3 (the default). pcm gives raw 24 kHz 16-bit mono. opus, aac and flac return a 400 error.
  • speed is accepted but not applied yet.
  • Languages: English by default; es, fr, zh, ja or ko via extra_body={"language":"es"}.
  • Limits: up to 4,096 characters per request. Paid keys are $19/month for 1,000,000 characters a month, 20 requests per minute per key. A shared daily capacity cap applies to the whole service. Over a limit you get an OpenAI-style 429.
  • Free key: 10,000 characters a month, 5 requests per minute, email only, no card. Free keys share a daily capacity limit, so on busy days they may get a 429 until 00:00 UTC.

Listen to the unedited samples on the home page before you decide.

FAQ

When does gpt-4o-mini-tts stop working?
January 6, 2027, according to OpenAI's deprecations page.

Can I just change gpt-4o-mini-tts to gpt-realtime-2.1-mini?
No. OpenAI's guide says gpt-realtime-2.1-mini isn't supported on /v1/audio/speech. It needs the Realtime API.

Does TTS Swap support the instructions parameter?
No. The field is ignored, so the output doesn't change with it.

Can I move back later?
Before January 6, 2027, yes: change the base URL and API key back to OpenAI's and keep using gpt-4o-mini-tts. After that date, gpt-4o-mini-tts is gone, so moving back means a supported OpenAI model and API workflow, or another compatible provider with that provider's matching key. Always change the URL and key together; a URL without its matching key fails with a 401.

Next steps

Top comments (0)