TTS Swap · Migration guide: tts-1 · gpt-4o-mini-tts · curl · Node · Python · tts-1 shutdown facts · free key
Source: OpenAI's deprecations page, entry "2026-10-01: Text-to-speech models", lists tts-1, tts-1-hd and both gpt-4o-mini-tts snapshots (gpt-4o-mini-tts-2025-03-20, gpt-4o-mini-tts-2025-12-15) with a shutdown date of Jan 6, 2027 and gpt-realtime-2.1-mini as the recommended replacement. Checked 2026-11-02.
If your code calls audio.speech.create(model="tts-1"…) or "tts-1-hd", those requests stop working on the shutdown date. Note that tts-1-hd on TTS Swap gives the same MeloTTS output as tts-1; there is no separate HD quality.
grep -rnE "audio\.speech|tts-1|gpt-4o-mini-tts|/v1/audio/speech" --include=*.{py,js,ts,go,rb} .OpenAI's deprecations page also says GET /v1/models returns an optional shutdown_date field per model, so you can check programmatically.
gpt-realtime-2.1-mini on the Realtime API. This is a different workflow (a session over WebSocket/WebRTC with streamed audio events), not a model-name swap on /v1/audio/speech. It is a conversational model, so test that it reads your text exactly./v1/audio/speech provider or a self-hosted server. Usually a base_url + key change. Check output format, voices, speed, error shapes and data handling.base_url and key. Honest differences: one MeloTTS voice per language (voice names all map to it), audio comes back as WAV even if you ask for mp3, speed is accepted but not applied. Details on the home page.from openai import OpenAI
import os
client = OpenAI(
base_url="https://tts.deadlinkpatrol.com/v1", # was: default api.openai.com
api_key=os.environ["TTS_SWAP_KEY"],
)
res = client.audio.speech.create(model="tts-1", voice="alloy", input="Hello from TTS Swap.")
res.write_to_file("speech.wav") # WAV bytes, even if response_format is mp3Get a free key on the home page (10,000 characters a month, no card), then run one of the snippets above.
TTS Swap by Swift Labs. Not affiliated with OpenAI. · Terms · Privacy · Manage or cancel subscription