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

Процесс получения

Чтобы использовать Fish TTS API, сначала получите ваш API Token в консоли Ace Data Cloud и сохраните его для дальнейшего использования. Если вы ещё не вошли в систему или не зарегистрировались, вы будете автоматически перенаправлены на страницу входа, где вам будет предложено зарегистрироваться и войти в систему; после завершения вы автоматически вернётесь на текущую страницу. Один 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 — фактически списанные Credits за этот раз; при наличии скидки аккаунта 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}, а после фактического завершения на стороне сервиса полный результат будет отправлен POST JSON-запросом на этот URL, с тем же task_id и итоговым cost верхнего уровня за эту операцию. Первоначальное подтверждение задачи ещё не означает завершения синтеза, поэтому не содержит cost.
Немедленный ответ (фактическое тестирование):
Позднее callback_url получит данные следующего вида:
Также можно активно получать результат по task_id с помощью Fish Tasks API; 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.