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 を指定してください。アプリケーションメッセージは JSON テキストではなく MessagePack バイナリフレームです。既存の /v1/tts/live 統合は互換性のため継続しますが、新規統合は上位の v3 契約を使用してください。このページは v2 クライアントの保守専用です。

認証

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

ブラウザに長期 API キーを渡さないでください。信頼できるバックエンドが POST /v2/tts/browser-tickets で、短時間・一回限り・Origin バインド済みのチケットに交換します。ブラウザは最初の MessagePack フレームとして { event: 'auth', token: 'rtv2_ticket_...' } を送信します。認証情報を URL に入れないでください。

フローと入力

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

既定の simple モードでは request_id やイベント ID は不要です。ready の後に { event: 'input', text } を送信します。

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

明示的な分割、冪等性、復旧が必要な場合だけ start.mode='reliable' を指定します。reliable モードでは event_idrequest_idtext.sequenceflush.segment_id が必須です。

クライアントイベントは authstartinputtextflushstopping です。simple モードでは通常 startinput だけを使用します。

クライアントイベントの入力パラメータ

各イベントは MessagePack Map で、未知のフィールドは拒否されます。reliable モードの event_id 要件は start から始まり、それより前の auth では省略できます。

イベントモード必須フィールド任意フィールドと既定値制約と動作
authモード選択前eventtokenevent_idAuthorization ヘッダーがないブラウザチケット認証でのみ使用します。
startsimple、reliableeventrequestmode: "simple"event_idrequest_idretry_failedreliable では event_idrequest_id が必須で、再試行も reliable 専用です。
inputsimpleeventtextevent_idcommit: true空文字列は不可。バッファ全体で最大 10,000 文字です。
textreliableeventevent_idsequencetextなしsequence は正の連番で、1 フレーム最大 2,000 文字です。
flushreliableeventevent_idsegment_idなし空でないバッファを確定し、1~128 文字の一意な segment_id を使います。
stopreliableeventevent_idなし受理済みセグメントの完了後にリクエストを終了します。
pingsimple、reliableevent。reliable では event_id も必須simple の event_idtimestampサーバーは pong を返します。

PCM 応答には sample_ratechannelsbit_depth が含まれます。

現在の形式は mp3, wav, opus です。プロバイダーとモデルが対応する場合、speed0.52volume010chunk_length501000 です。未対応のパラメータは unsupported_parameter になります。

parameter_profile を省略すると従来の v2 動作を維持し、volume010、未知または未対応のフィールドは拒否されます。parameter_profile: "product_v1" では volume-2020 となり、stabilitysimilaritypitchtext_normalizationlanguagelatencyemotioninstructionsoptimize_instructionschunk_length も指定できます。サーバーは対応値を範囲内に収め、モデルが未対応の制御を無視し、結果を ready.effective_request で返します。

公開 voice_id はモデルと互換である必要があります。現在のプロバイダーは FishAudio、モデルは fishaudio-s21pro-flash です。接続前に GET /v2/tts/capabilities を使用して、Fish Audio が対応する形式とパラメーターを確認してください。

サーバーは authenticatedreadyinput_acksegment_acceptedaudiousagesegment_completedrequest_statuswarningerrorfinishpong を送信します。simple クライアントは readyaudioerrorfinish だけを処理できます。reliable モードでは input_acksegment_completed を待ちます。audio.audio は MessagePack 内の生バイトです。PCM イベントには sample_ratechannelsbit_depth が含まれます。

安定したエラーコードは authentication_failedauthentication_requiredalready_authenticatedpermission_deniedinvalid_messageinvalid_messagepackinvalid_stateidempotency_conflictempty_segmentsegment_too_largesession_limit_exceededquota_exceededclient_backpressureunsupported_parametervoice_not_foundmodel_not_foundprovider_unavailableprovider_timeoutgeneration_failedbilling_failedconnection_closedinternal_error です。