Альтернатива OpenAI TTS: оставьте SDK, смените base URL
Fish Audio обслуживает тот же вызов /v1/audio/speech. Направьте клиент OpenAI на Fish, выберите бесплатную модель, и ваш код синтеза речи продолжит работать после отключения TTS-моделей OpenAI.
Кредитная карта не требуется: fish-audio/s2.1-pro-free стоит $0 до 30 ноября 2026 года включительно.
Две строки переключают клиент
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) и ваш API-ключ Fish в FISH_API_KEY.
Что ещё меняется
voiceпринимает ID голоса Fish. Предустановленные имена OpenAI, напримерnova, возвращают 400; пустая строка выбирает голос модели по умолчанию.- По умолчанию
response_formatв Fish равенpcm, а неmp3. Указывайте его явно. instructionsне поддерживается и возвращает 400. Вместо этого пишите указания по подаче прямо в тексте, например[whispering].tts-1,tts-1-hdиgpt-4o-mini-ttsпо-прежнему работают как имена моделей. Они сопоставляются с платной модельюfish-audio/s2.1-pro.
Выберите голос
Предустановленных голосов OpenAI в Fish нет. Передайте ID любого голоса из библиотеки голосов Fish или голоса, который вы клонировали. Пустая строка выбирает голос модели по умолчанию.
Цены
S2.1-Pro тарифицируется по байтам входного текста в UTF-8. В английском тексте один символ равен одному байту, поэтому стоимость такая же, как у tts-1, и вдвое ниже, чем у tts-1-hd. Большинство китайских, японских и корейских символов занимают 3 байта.
Цены с официальных страниц тарифов, проверено 29 октября 2026 года:Fish AudioOpenAI
Часто задаваемые вопросы
Перейдите до 6 января 2027 года
Создайте бесплатный ключ, измените две строки, и синтез речи продолжит работать.