В этой статье описывается инструкция по интеграции Fish TTS API. Этот интерфейс полностью совместим с официальным OpenAPI Fish Audio и позволяет напрямую перенести код, который ранее вызывалDocumentation Index
Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
Use this file to discover all available pages before exploring further.
https://api.fish.audio/v1/tts, на https://api.xhuoapi.ai/v1/fish/tts, заменив только данные для аутентификации без необходимости изменения структуры тела запроса.
Процесс подачи заявки
Для использования API необходимо сначала подать заявку на соответствующую услугу на странице Fish TTS API. После перехода на страницу нажмите кнопку «Acquire». Если вы еще не вошли в систему или не зарегистрированы, произойдет автоматический переход на страницу входа с приглашением зарегистрироваться и войти. После входа или регистрации вы автоматически вернетесь на текущую страницу. При первом запросе предоставляется бесплатный лимит, позволяющий бесплатно использовать данный API.Отличия от официального API
Данный API сохраняет поля запроса и ответа официального Fish Audio, но содержит несколько небольших улучшений для лучшей интеграции на нашей платформе:- Метод аутентификации: используется
Authorization: Bearer {token}, где{token}— это ключ, полученный на нашей платформе, а не официальный ключ Fish. - Выбор модели TTS: указывается в HTTP-заголовке
model, доступные значения —s1илиs2-pro, по умолчаниюs2-pro. Это совпадает с официальным API Fish. - Значение по умолчанию для
latency: в официальном API/fish/v1/ttsпри отсутствии параметраlatencyвозвращается ошибка, в нашем API при отсутствии этого параметра автоматически подставляетсяlatency=normal, что соответствует поведению официального API. - Асинхронный callback (расширение платформы): при передаче дополнительного поля
callback_urlв теле запроса API сразу возвращает{task_id, started_at}, а после завершения обработки отправляет полный результат{audio_url, ...}POST-запросом в формате JSON на указанный URL. Официальный API Fish не поддерживает это поле, и его передача активирует только асинхронный процесс на нашей стороне.
text, reference_id, references, prosody, format, sample_rate, mp3_bitrate, chunk_length, temperature, top_p и др.) напрямую передаются на сервер Fish, поведение полностью соответствует официальной документации.
Основное использование
Минимальный запрос требует передачи только поляtext. Пример CURL:
audio_url: URL сгенерированного аудио, доступного для загрузки или воспроизведения.latency_ms(опционально): время обработки на сервере в миллисекундах.
reference_id:
Асинхронный callback
Поскольку генерация речи для длинных текстов может занимать значительное время, а поддержание долгих соединений потребляет ресурсы системы, данный API предоставляет возможность асинхронного callback (расширение по сравнению с официальным API Fish). Общий процесс: клиент при отправке запроса дополнительно указывает полеcallback_url в теле запроса, API сразу возвращает ответ с task_id; после завершения генерации полный результат с audio_url и другими данными отправляется POST-запросом в формате JSON на указанный callback_url с тем же task_id, что позволяет связать асинхронный результат с исходной задачей.
Пример запроса:
callback_url придет полный результат:
task_id.
Обработка ошибок
API сохраняет HTTP-коды ошибок официального Fish, но тело ответа использует единый формат платформы для согласованности с/fish/audios и /fish/voices:
400 token_mismatched: Неверный запрос, возможно отсутствуют или неверны параметры.400 api_not_implemented: Неверный запрос, возможно отсутствуют или неверны параметры.401 invalid_token: Неавторизован, неверный или отсутствующий токен авторизации.429 too_many_requests: Превышен лимит запросов.500 api_error: Внутренняя ошибка сервера.

