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
기능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'
}}

voiceIdmodelId는 필수입니다. 모델, 형식, 제어는 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를 섞지 마세요.