即時文字轉語音 v3
使用供應商無關的 Realtime TTS v3 WebSocket 協定串流產生語音。
Realtime TTS v3 是新整合建議使用的協定。不同即時引擎共用 camelCase 事件、驗證、計費與恢復流程;切換引擎只需修改 modelId。
| 項目 | 值 |
|---|---|
| WebSocket | wss://realtime.fishaudio.org/v3/tts/live |
| 子協定 | realtime.tts.msgpack.v3 |
| 能力 | 即時服務主機的 GET /v3/tts/capabilities |
所有訊息都是 MessagePack 二進位框架。後端在握手時傳送 Authorization: Bearer API_KEY;瀏覽器由可信後端呼叫 POST /v3/tts/browser-tickets 取得一次性票證。不得將憑證放在 URL。
瀏覽器使用回應中的 URL 和子協定連線,再將 { event: 'auth', token: 'rtv2_ticket_...' } 作為第一個 MessagePack 框架送出。
{ event: 'start', mode: 'simple', request: {
voiceId: '00a1b221-6137-4b73-ad62-b0cbce134167',
modelId: 'fishaudio-s21pro-flash', format: 'mp3',
speed: 1, stability: 1, similarity: 1, language: 'zh',
chunkLength: 200, latency: 'balanced'
}}voiceId 和 modelId 必填。能力接口決定可用模型、格式與控制項;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 與 v3 欄位。