TTS Swap · Migration guide: tts-1 · gpt-4o-mini-tts · curl · Node · Python · tts-1 shutdown facts · free key

Replacing gpt-4o-mini-tts

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.

Both snapshots (gpt-4o-mini-tts-2025-03-20 and gpt-4o-mini-tts-2025-12-15) share the date. If you rely on the instructions parameter for tone or accent, plan for that: on the Realtime API you move it into session instructions; on TTS Swap the parameter is accepted but the MeloTTS voice does not follow style instructions.

Find every call site

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.

Your three options

  1. OpenAI's path: 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.
  2. Another OpenAI-compatible /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.
  3. TTS Swap (this site): same request shape, change 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.

Node

import OpenAI from "openai";
import fs from "node:fs";

const client = new OpenAI({
  baseURL: "https://tts.deadlinkpatrol.com/v1",          // was: default api.openai.com
  apiKey: process.env.TTS_SWAP_KEY,
});

const res = await client.audio.speech.create({
  model: "gpt-4o-mini-tts", voice: "alloy", input: "Hello from TTS Swap.",
});
fs.writeFileSync("speech.wav", Buffer.from(await res.arrayBuffer())); // WAV bytes

Try it free

Get 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