Fish Audio Docs
API СсылкаПреобразование текста в речьСинтез речи в реальном времени
Back to site

Синтез речи в реальном времени v2

Потоковая передача речи по публичному протоколу Realtime TTS WebSocket v2.

Realtime TTS v2 сохраняется для существующих клиентов. Новым интеграциям следует использовать родительскую страницу v3.

Адреса и протокол

БрендАдрес
Fish Audiowss://realtime.fishaudio.org/v2/tts/live

Запрашивайте подпротокол realtime.tts.msgpack.v2. Все сообщения приложения являются бинарными кадрами MessagePack, а не текстом JSON. Существующие интеграции /v1/tts/live сохраняются для совместимости; новым следует использовать родительский контракт v3. Эта страница предназначена только для поддержки клиентов v2.

Аутентификация

Authorization: Bearer API_KEY
Sec-WebSocket-Protocol: realtime.tts.msgpack.v2

Не передавайте браузеру долгоживущий API-ключ. Доверенный сервер должен обменять его через POST /v2/tts/browser-tickets на короткоживущий одноразовый билет, привязанный к Origin. Браузер отправляет { event: 'auth', event_id, token: 'rtv2_ticket_...' } первым кадром MessagePack. Не помещайте учетные данные в URL.

Поток и параметры

connect → authenticated → start → ready → input → audio → finish

В стандартном режиме simple идентификаторы клиента не нужны. После ready отправьте { event: 'input', text }:

{
  event: 'start',
  request: {
    voice_id: 'PUBLIC_VOICE_UUID',
    model: 'fishaudio-s21pro-flash',
    format: 'mp3',
    speed: 1,
    volume: 0,
    language: 'ru',
    chunk_length: 200,
    latency: 'normal'
  }
}

Используйте start.mode='reliable' только для явной сегментации, идемпотентности и восстановления. В этом режиме обязательны event_id, request_id, text.sequence и flush.segment_id.

События клиента: auth, start, input, text, flush, stop и ping. Режим simple обычно использует только start и input.

Входные параметры событий клиента

Каждое событие — это MessagePack Map; неизвестные поля отклоняются. В режиме reliable требование event_id начинается с start; предшествующий auth может его не содержать.

СобытиеРежимОбязательные поляНеобязательные поля и значения по умолчаниюОграничения и поведение
authДо выбора режимаevent, tokenevent_idТолько для браузерного билета без заголовка Authorization.
startsimple, reliableevent, requestmode: "simple", event_id, request_id, retry_failedReliable требует event_id и request_id; повтор доступен только в reliable.
inputsimpleevent, textevent_id, commit: trueНепустой текст; не более 10 000 символов во всём буфере.
textreliableevent, event_id, sequence, textНетПоложительная последовательная sequence; до 2 000 символов на кадр.
flushreliableevent, event_id, segment_idНетФиксирует непустой буфер; уникальный segment_id длиной 1–128 символов.
stopreliableevent, event_idНетЗавершает запрос после всех принятых сегментов.
pingsimple, reliableevent; в reliable также event_idevent_id в simple, timestampСервер отвечает событием pong.

Ответы PCM содержат sample_rate, channels и bit_depth.

Текущие форматы: mp3, wav, opus. Если провайдер и модель поддерживают параметры, speed принимает значения от 0.5 до 2, volume — от 0 до 10, chunk_length — от 50 до 1000. Неподдерживаемые параметры возвращают unsupported_parameter.

Если parameter_profile не указан, сохраняется прежнее поведение v2: volume имеет диапазон от 0 до 10, а неизвестные или неподдерживаемые поля отклоняются. При parameter_profile: "product_v1" диапазон volume составляет от -20 до 20; также доступны stability, similarity, pitch, text_normalization, language, latency, emotion, instructions, optimize_instructions и chunk_length. Сервер ограничивает поддерживаемые значения, игнорирует неподдерживаемые моделью элементы управления и возвращает результат в ready.effective_request.

Публичный voice_id должен соответствовать модели. Текущие провайдеры: FishAudio, модели: fishaudio-s21pro-flash. Перед подключением вызовите GET /v2/tts/capabilities, чтобы получить список форматов и параметров, поддерживаемых Fish Audio.

Сервер отправляет authenticated, ready, input_ack, segment_accepted, audio, usage, segment_completed, request_status, warning, error, finish и pong. Клиенту simple достаточно обрабатывать ready, audio, error и finish; клиент reliable ожидает input_ack и segment_completed. audio.audio содержит необработанные байты внутри MessagePack.

Стабильные коды ошибок: authentication_failed, authentication_required, already_authenticated, permission_denied, invalid_message, invalid_messagepack, invalid_state, idempotency_conflict, empty_segment, segment_too_large, session_limit_exceeded, quota_exceeded, client_backpressure, unsupported_parameter, voice_not_found, model_not_found, provider_unavailable, provider_timeout, generation_failed, billing_failed, connection_closed и internal_error.