Skip to main content
Этот интерфейс основан на Fish Audio официальном TTS API, различия заключаются только в способе аутентификации (использование токена этой платформы) и асинхронном обратном вызове (расширение callback_url), структура тела запроса соответствует upstream. Адрес: POST https://api.acedata.cloud/fish/tts.

Процесс подачи заявки

Чтобы использовать Fish TTS API, сначала перейдите в консоль Ace Data Cloud и получите ваш API токен для резервного копирования. Если вы еще не вошли в систему или не зарегистрированы, вы будете автоматически перенаправлены на страницу входа, где вас пригласят зарегистрироваться и войти в систему, после чего вы будете автоматически возвращены на текущую страницу. Один API токен позволяет вызывать все услуги платформы, не нужно подавать отдельные заявки на каждую услугу. При первой подаче заявки предоставляется бесплатный лимит, чтобы вы могли попробовать; если лимит исчерпан, вы можете пополнить общий баланс в консоли.
📘 Полная документация: Fish TTS API →

Заголовки запроса

Поля тела запроса

Имена полей полностью соответствуют upstream. За исключением callback_url, остальные поля имеют те же значения и значения, что и в официальной документации Fish TTS.

Пример 1: Минимальный запрос (text + format=mp3)

Ответ (проверено):
audio_url указывает на CDN этой платформы, можно напрямую скачать через GET или воспроизвести в <audio>. Ссылка будет доступна долго, но все же рекомендуется сохранить копию в вашем хранилище.

Пример 2: Использование клонированного голоса reference_id

Ниже приведен пример с публичным испанским голосом на платформе Fish (_id можно получить через Fish Model Query):
Ответ (проверено):

Пример 3: Регулировка скорости / громкости (prosody)

Ответ (проверено):
speed больше 1 ускоряет, меньше 1 замедляет; volume в дБ, 0 означает без изменений, положительное значение — увеличение, отрицательное — уменьшение.

Пример 4: Переключение модели + управление битрейтом

С помощью HTTP заголовка model: s1 переключитесь на стабильную модель, добавьте в тело запроса mp3_bitrate: 128 для управления битрейтом MP3:
Возврат (проверено):

Пример 5: PCM оригинальная волна

Необходимо для реального соединения в браузере или для последующей обработки на клиенте (смешивание, изменение скорости), рекомендуется использовать pcm:
Возврат (проверено):
Расширение ссылки соответствует format в запросе: mp3 дает .mp3, wav и pcm дают .wav (контейнер WAV, 16 бит PCM).

Асинхронный обратный вызов (callback_url)

Синтез длинного текста может занять от нескольких секунд до десятков секунд, если соединение прерывается, необходимо повторить попытку. Передав callback_url в теле запроса, интерфейс сразу вернет {task_id, started_at}, а когда задача будет завершена, полный результат будет отправлен обратно на этот URL в формате POST JSON с тем же task_id.
Немедленный возврат (проверено):
Позже callback_url получит следующее:
Также можно использовать Fish Tasks API для активного получения результатов по task_id, подробности см. в документации.

Обработка ошибок

  • 400 token_mismatched: отсутствуют или недействительны параметры запроса (чаще всего text пустой или format имеет значение, отличное от mp3/wav/pcm).
  • 401 invalid_token: токен аутентификации отсутствует или недействителен.
  • 429 too_many_requests: превышен лимит скорости аккаунта.
  • 500 api_error: внутренняя ошибка сервера.
Пример ответа об ошибке:
Ошибки валидации параметров будут содержать оригинальный текст ошибки pydantic в поле message, что поможет определить, какой именно параметр недействителен, например:

Заключение

Минимальные затраты на интеграцию Fish TTS: в уже существующем коде, вызывающем api.fish.audio/v1/tts, заменить аутентификацию на токен платформы и в теле запроса явно указать format: "mp3". Для длинных текстов рекомендуется использовать асинхронный обратный вызов callback_url; для обнаружения клонированного голоса reference_id используйте Fish Model Query и Fish Model Get.