Skip to main content
Этот интерфейс предоставляет текст в речь, вызов сохраненного звука и одноразовое мгновенное клонирование звука, адрес POST https://api.acedata.cloud/fish/tts.

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

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

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

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

Одноразовое клонирование принимает только HTTPS аудио URL, не принимает MessagePack, Base64, data URI или URL с учетными данными. Рекомендуемая длина аудио для ссылки 10–270 секунд; Studio использует более консервативный диапазон 10–60 секунд.

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

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

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

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

Пример 3: Одноразовое мгновенное клонирование звука (references)

Разместите аудио-ссылку на публичном HTTPS адресе и предоставьте точный текст, который был произнесен. Этот звук будет использоваться только для данного синтеза и не создаст долгосрочную модель:
Проверенный успешный ответ:

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

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

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

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

Пример 6: PCM сырой сигнал

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

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

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

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

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

Заключение

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