Fish Audio совместимый TTS
Используйте контракт POST /v1/tts в стиле fish.audio с ключами Fish Audio API для клиентов вроде RikkaHub.
Fish Audio совместимый TTS
Используйте эту конечную точку, когда клиент жестко запрограммирует форму запроса fish.audio POST /v1/tts. Он отображает эту полезную нагрузку в конвейер Fish Audio Open TTS, сохраняя при этом аутентификацию, квоту и выставление счетов по ключу API в вашей учетной записи Fish Audio.
Для встроенной интеграции Open API выберите Sync HTTP. Для клиентов OpenAI POST /v1/audio/speech используйте OpenAI-совместимый TTS.
Конечная точка
POST /v1/tts
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
model: s2.1-proПолный URL-адрес:
https://fishaudio.org/v1/ttsЕсли стороннее приложение запрашивает базу Fish Audio API, например https://api.fish.audio, установите для нее значение https://fishaudio.org и оставьте путь как /v1/tts.
Сохраните ключ API в защищенном поле учетных данных клиента. Создайте отдельный ключ для каждого приложения, чтобы вы могли отслеживать или отзывать его независимо.
Запрос
{
"text": "Hello from Fish Audio.",
"reference_id": "00a1b221-6137-4b73-ad62-b0cbce134167",
"format": "mp3",
"temperature": 0.7,
"top_p": 0.7,
"normalize": true,
"prosody": {
"speed": 1
}
}| Поле/заголовок | Тип | Требуется | Заметки |
|---|---|---|---|
Заголовок model | строка | Нет | метка движка fish.audio, например s2.1-pro, s2.1-pro-flash или s2-pro |
text | строка | Да | Текст для синтеза |
reference_id | строка | Да | Fish Audio Голосовой идентификатор; сервер не выбирает голос по умолчанию молча |
format | строка | Нет | mp3, wav или pcm; неподдерживаемые значения, такие как opus, возвращаются к mp3 |
prosody.speed | номер | Нет | Скорость речи от 0.5 до 2; speed на верхнем уровне также принимается |
temperature | номер | Нет | Сопоставлено со стабильностью Fish Audio (0.5–1.5) |
top_p | номер | Нет | Сопоставлено с сходством Fish Audio (0.5–1.5) |
normalize | логическое значение | Нет | Сопоставлено с нормализацией текста |
chunk_length | номер | Нет | Принято для совместимости с клиентом и игнорируется |
latency | строка | Нет | Принято для совместимости с клиентом и игнорируется |
Сопоставление заголовков модели
Значение заголовка model | Идентификатор модели двигателя Fish Audio |
|---|---|
s2.1-pro | fishaudio-s21pro |
s2.1-pro-free | fishaudio-s21pro-free |
s2.1-flash | fishaudio-s21-flash |
s2.1-pro-flash | fishaudio-s21pro-flash |
s2-pro | fishaudio-s2pro |
s1 / s1-mini | fishaudio-s1 |
speech-1.5 / 1.6 | fishaudio-s1 |
Неизвестные значения заголовка игнорируются, и применяется механизм сервера по умолчанию. Вы также можете отправить в заголовке собственный идентификатор движка, например fishaudio-s21pro-flash.
Получите голосовые идентификаторы от GET /api/open/v1/voices. Для быстрой проверки соединения используйте общедоступный системный голос 00a1b221-6137-4b73-ad62-b0cbce134167.
Ответ
Успешный запрос возвращает двоичный звук:
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-OpenAPI-Quota-Remaining: 987988
X-OpenAPI-Credits-Used: 12
<binary audio data>Ошибки — JSON, а аутентификация, квоты и поведение генерации используются совместно с Sync HTTP.
curl Пример
curl -X POST "https://fishaudio.org/v1/tts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "model: s2.1-pro" \
-d '{
"text": "Hello from Fish Audio.",
"reference_id": "00a1b221-6137-4b73-ad62-b0cbce134167",
"format": "mp3",
"prosody": { "speed": 1 }
}' \
--output speech.mp3Подключите RikkaHub
Для настройки ключа API, базового URL-адреса, модели и голоса в RikkaHub следуйте специальному Руководству по настройке RikkaHub.
Ошибки
| Статус | Значение | Действие |
|---|---|---|
400 | Неверный текст, отсутствует reference_id или неправильный JSON | Исправьте запрос перед повторной попыткой |
401 | Ключ API отсутствует или недействителен | Проверьте или замените ключ интеграции |
402 | Квота API недостаточна | Добавьте квоту, прежде чем создавать больше аудио |
429 | Превышен лимит частоты запросов | Повторить попытку с экспоненциальной задержкой |
500 | Генерация TTS не удалась | Повторять только с учетом дублирования платежей |