실시간 텍스트 음성 변환 v3
공급자 중립 Realtime TTS v3 WebSocket 프로토콜로 음성을 스트리밍합니다.
Realtime TTS v3는 새 통합에 권장되는 프로토콜입니다. 모든 엔진이 camelCase 이벤트, 인증, 과금, 복구 흐름을 공유하며 엔진 전환 시 modelId만 변경합니다.
| 항목 | 값 |
|---|---|
| WebSocket | wss://kittaai.com/v3/tts/live |
| 하위 프로토콜 | realtime.tts.msgpack.v3 |
| 기능 | 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: 'ko',
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와 v3를 섞지 마세요.