Fish Audio Docs
API リファレンステキスト読み上げリアルタイムテキスト読み上げ
Back to site

リアルタイムテキスト読み上げ v3

プロバイダー非依存の Realtime TTS v3 WebSocket で音声をストリーミングします。

Realtime TTS v3 は新規統合向けの推奨プロトコルです。すべてのエンジンで camelCase イベント、認証、課金、復旧フローが共通で、切り替え時は modelId だけを変更します。

項目
WebSocketwss://realtime.fishaudio.org/v3/tts/live
サブプロトコルrealtime.tts.msgpack.v3
capabilitiesrealtime ホストの GET /v3/tts/capabilities

すべてのメッセージは MessagePack バイナリフレームです。バックエンドはハンドシェイクで Authorization: Bearer API_KEY を送信します。ブラウザでは信頼できるバックエンドから POST /v3/tts/browser-tickets を呼び、一回限りのチケットを取得します。URL に認証情報を入れないでください。

ブラウザは返された URL とサブプロトコルで接続し、最初の MessagePack フレームとして { event: 'auth', token: 'rtv2_ticket_...' } を送信します。

{ event: 'start', mode: 'simple', request: {
  voiceId: '00a1b221-6137-4b73-ad62-b0cbce134167',
  modelId: 'fishaudio-s21pro-flash', format: 'mp3',
  speed: 1, stability: 1, similarity: 1, language: 'ja',
  chunkLength: 200, latency: 'balanced'
}}

voiceIdmodelId は必須です。モデル、形式、制御項目は capabilities を参照し、実際の値は ready.effectiveRequest で確認します。{ event:'input', text:'こんにちは', commit:true } でテキストを送り、stop で終了します。

主なサーバーイベントは authenticatedreadyinput_acksegment_acceptedaudiousagesegment_completedwarningerrorfinishpong で、フィールドはすべて camelCase です。

信頼モードでは mode:'reliable' と安定した requestId を使用します。状態は GET /v3/tts/requests/{requestId}、音声は GET /v3/tts/requests/{requestId}/segments/{segmentId}/audio です。error.retryable が true の場合のみ再試行します。Realtime v2 も互換維持されますが、v2 の snake_case と混在させないでください。