OpenAI は2027年1月6日に tts-1、tts-1-hd、gpt-4o-mini-tts を API から削除します。出典

OpenAI TTS の代替:SDK はそのままで base URL を変更

Fish AudioはOpenAIの/v1/audio/speechと完全互換。ベースURLをFishに変更して無料モデルを選択すれば、OpenAIのTTS提供終了後も現在の音声生成プログラムをそのまま動作させ続けられます。

クレジットカードは不要です。fish-audio/s2.1-pro-free の料金は2026年11月30日まで $0 です。

2行の変更でクライアントを切り替え

base_url と api_key で、公式 OpenAI SDK の接続先を Fish に向けます。呼び出しでは Fish のモデルと音声を指定します。新しいコードは、残高 $0 の新規アカウントでもそのまま動作します。

import os from openai import OpenAI client = OpenAI(追加された行:     base_url="https://api.fish.audio/compat/v1",削除された行:     api_key=os.environ["OPENAI_API_KEY"],追加された行:     api_key=os.environ["FISH_API_KEY"],) with client.audio.speech.with_streaming_response.create(削除された行:     model="tts-1",削除された行:     voice="alloy",追加された行:     model="fish-audio/s2.1-pro-free",追加された行:     voice="",    input="Hello, world!",    response_format="mp3",) as response:    response.stream_to_file("speech.mp3")
import fs from "node:fs";import OpenAI from "openai"; const client = new OpenAI({追加された行:   baseURL: "https://api.fish.audio/compat/v1",削除された行:   apiKey: process.env.OPENAI_API_KEY,追加された行:   apiKey: process.env.FISH_API_KEY,}); const response = await client.audio.speech.create({削除された行:   model: "tts-1",削除された行:   voice: "alloy",追加された行:   model: "fish-audio/s2.1-pro-free",追加された行:   voice: "",  input: "Hello, world!",  response_format: "mp3",});fs.writeFileSync("speech.mp3", Buffer.from(await response.arrayBuffer()));
削除された行: curl https://api.openai.com/v1/audio/speech \削除された行:   -H "Authorization: Bearer $OPENAI_API_KEY" \追加された行: curl https://api.fish.audio/compat/v1/audio/speech \追加された行:   -H "Authorization: Bearer $FISH_API_KEY" \  -H "Content-Type: application/json" \  -d '{削除された行:     "model": "tts-1",削除された行:     "voice": "alloy",追加された行:     "model": "fish-audio/s2.1-pro-free",追加された行:     "voice": "",    "input": "Hello, world!",    "response_format": "mp3"  }' \  --output speech.mp3

公式の OpenAI SDK(pip install openai または npm install openai)と、FISH_API_KEY に設定した Fish の API キーが必要です。

その他の変更点

  • voice には Fish の音声 ID を指定します。nova などの OpenAI のプリセット名は 400 を返します。空文字列を渡すと、モデルのデフォルト音声が使われます。
  • Fish では response_format のデフォルトは mp3 ではなく pcm です。明示的に指定してください。
  • instructions は非対応のため400エラーが返されます。代わりに、[whispering] のような演出タグを直接記述してください。
  • tts-1、tts-1-hd、gpt-4o-mini-tts は引き続きモデル名として使えます。これらは有料の fish-audio/s2.1-pro にマッピングされます。

音声を選ぶ

OpenAI のプリセット音声は Fish にはありません。Fish のボイスライブラリにある任意の音声、または自分でクローンした音声の ID を渡してください。空文字列を渡すと、モデルのデフォルト音声が使われます。

Hannah · ボイスライブラリ

voice="9a9cf47702da476aa4629e2506d4a857"
ボイスライブラリを見る

料金

S2.1-Pro は入力テキストの UTF-8 バイト数で課金されます。英語では1文字が1バイトなので、料金は tts-1 と同じで、tts-1-hd の半額です。中国語・日本語・韓国語の文字は、ほとんどが3バイトです。

モデル料金
Fish Audiofish-audio/s2.1-pro-free2026年11月30日まで、公正利用規約の範囲内で無料。S2.1-Pro と同じモデルですが、レイテンシ(TTFA)の保証と DPA はありません。リクエストはモデルの改善に使用される場合があります。$0.00 / 100万 UTF-8 バイト
Fish Audiofish-audio/s2.1-pro本番環境向け。従量課金で、サブスクリプションは不要です。$15.00 / 100万 UTF-8 バイト
OpenAItts-12027年1月6日に OpenAI API から削除されます。$15.00 / 100万文字
OpenAItts-1-hd2027年1月6日に OpenAI API から削除されます。$30.00 / 100万文字

公式料金ページの価格(2026年10月29日確認):Fish AudioOpenAI

よくある質問

OpenAI の非推奨化に関するページでは、tts-1、tts-1-hd、gpt-4o-mini-tts が2027年1月6日に API から削除される予定とされています。OpenAI が推奨する移行先の gpt-realtime-2.1-mini は、/v1/audio/speech ではなく Realtime API で動作します。

2027年1月6日より前に移行しましょう

無料のキーを作成して2行を変更し、音声機能の提供を続けましょう。