リアルタイムテキスト読み上げ v3
プロバイダー非依存の Realtime TTS v3 WebSocket で音声をストリーミングします。
Realtime TTS v3 は新規統合向けの推奨プロトコルです。すべてのエンジンで camelCase イベント、認証、課金、復旧フローが共通で、切り替え時は modelId だけを変更します。
| 項目 | 値 |
|---|---|
| WebSocket | wss://kittaai.com/v3/tts/live |
| サブプロトコル | realtime.tts.msgpack.v3 |
| capabilities | realtime ホストの 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'
}}voiceId と modelId は必須です。モデル、形式、制御項目は capabilities を参照し、実際の値は ready.effectiveRequest で確認します。{ event:'input', text:'こんにちは', commit:true } でテキストを送り、stop で終了します。
主なサーバーイベントは authenticated、ready、input_ack、segment_accepted、audio、usage、segment_completed、warning、error、finish、pong で、フィールドはすべて 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 と混在させないでください。