Texto a voz en tiempo real v3
Transmite voz con el protocolo WebSocket Realtime TTS v3 independiente del proveedor.
Realtime TTS v3 es el protocolo recomendado para integraciones nuevas. Todos los motores comparten eventos camelCase, autenticación, facturación y recuperación; para cambiar de motor solo se modifica modelId.
| Elemento | Valor |
|---|---|
| WebSocket | wss://kittaai.com/v3/tts/live |
| Subprotocolo | realtime.tts.msgpack.v3 |
| Capacidades | GET /v3/tts/capabilities en el host realtime |
Todos los mensajes son tramas binarias MessagePack. Los clientes backend envían Authorization: Bearer API_KEY en el handshake. En navegador, un backend de confianza crea un ticket de un solo uso con POST /v3/tts/browser-tickets. No pongas credenciales en la URL.
El navegador se conecta con la URL y el subprotocolo devueltos y envía { event: 'auth', token: 'rtv2_ticket_...' } como primera trama 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: 'es',
chunkLength: 200, latency: 'balanced'
}}voiceId y modelId son obligatorios. Capabilities define modelos, formatos y controles; ready.effectiveRequest contiene los valores efectivos. Envía texto con { event:'input', text:'Hola', commit:true } y termina con stop.
Los eventos principales son authenticated, ready, input_ack, segment_accepted, audio, usage, segment_completed, warning, error, finish y pong; todos los campos son camelCase.
En modo fiable usa mode:'reliable' y un requestId estable. Consulta GET /v3/tts/requests/{requestId} y descarga GET /v3/tts/requests/{requestId}/segments/{segmentId}/audio. Reintenta solo si error.retryable es true. Realtime v2 sigue compatible, pero no mezcles su snake_case con v3.