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}, а коли завдання буде завершено, повний результат буде надіслано POST JSON формою на цей URL, з тим же 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.