У цій статті описано інструкцію зі інтеграції 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. Це відповідає офіційному Fish. - Значення за замовчуванням для
latency: upstream/fish/v1/ttsповертає помилку, якщоlatencyне передано. У цьому інтерфейсі при відсутності параметра автоматично додаєтьсяlatency=normal, що відповідає поведінці Fish. - Асинхронний callback (розширення платформи): якщо в тілі запиту передати додаткове поле
callback_url, API одразу поверне{task_id, started_at}, а після завершення обробки upstream надішле повний результат{audio_url, ...}у форматі POST JSON на цей URL. Офіційний Fish не підтримує це поле, і його передача активує асинхронний процес на нашій платформі.
text, reference_id, references, prosody, format, sample_rate, mp3_bitrate, chunk_length, temperature, top_p тощо) передаються напряму upstream, і поведінка повністю відповідає офіційній документації.
Базове використання
Мінімальний запит потребує лише полеtext. Приклад CURL:
audio_url: URL згенерованого аудіо, доступний для завантаження або відтворення.latency_ms(необов’язкове): час обробки upstream у мілісекундах.
reference_id:
Асинхронний callback
Оскільки генерація Fish TTS для довгих текстів може займати значний час, утримання довгого з’єднання споживає ресурси системи. Цей API пропонує можливість асинхронного callback (розширення порівняно з офіційним Fish). Загальний процес: клієнт при запиті додає в тіло полеcallback_url, API одразу повертає відповідь з task_id; після завершення генерації upstream відправляє повний результат із audio_url у форматі POST JSON на callback_url, додаючи той самий task_id для зв’язку асинхронної відповіді з початковим завданням.
Приклад запиту:
callback_url отримає повний результат:
task_id.
Обробка помилок
Цей інтерфейс зберігає HTTP статуси помилок Fish, але тіло відповіді використовує уніфікований формат платформи для узгодженості з/fish/audios та /fish/voices:
400 token_mismatched: Некоректний запит, можливо, через відсутні або неправильні параметри.400 api_not_implemented: Некоректний запит, можливо, через відсутні або неправильні параметри.401 invalid_token: Неавторизовано, недійсний або відсутній токен авторизації.429 too_many_requests: Надто багато запитів, перевищено ліміт частоти.500 api_error: Внутрішня помилка сервера.

