Kitta AI Docs
API ReferenzText-to-SpeechEchtzeit-Text-to-Speech

Echtzeit-Text-to-Speech v3

Sprache über das anbieterneutrale Realtime-TTS-v3-WebSocket-Protokoll streamen.

Realtime TTS v3 wird für neue Integrationen empfohlen. Alle Engines nutzen dieselben camelCase-Ereignisse sowie denselben Authentifizierungs-, Abrechnungs- und Recovery-Ablauf. Beim Wechsel ändert sich nur modelId.

ElementWert
WebSocketwss://kittaai.com/v3/tts/live
Subprotokollrealtime.tts.msgpack.v3
FähigkeitenGET /v3/tts/capabilities auf dem Realtime-Host

Alle Nachrichten sind MessagePack-Binärframes. Backend-Clients senden Authorization: Bearer API_KEY beim Handshake. Im Browser erstellt ein vertrauenswürdiges Backend über POST /v3/tts/browser-tickets ein Einmalticket. Zugangsdaten gehören nicht in die URL.

Der Browser verbindet sich mit der zurückgegebenen URL und dem Subprotokoll und sendet { event: 'auth', token: 'rtv2_ticket_...' } als ersten MessagePack-Frame.

{ event: 'start', mode: 'simple', request: {
  voiceId: '00a1b221-6137-4b73-ad62-b0cbce134167',
  modelId: 'fishaudio-s21pro-flash', format: 'mp3',
  speed: 1, stability: 1, similarity: 1, language: 'de',
  chunkLength: 200, latency: 'balanced'
}}

voiceId und modelId sind erforderlich. Capabilities bestimmt Modelle, Formate und Steuerungen; ready.effectiveRequest enthält die tatsächlich verwendeten Werte. Text wird mit { event:'input', text:'Hallo', commit:true } gesendet und die Sitzung mit stop beendet.

Wichtige Serverereignisse sind authenticated, ready, input_ack, segment_accepted, audio, usage, segment_completed, warning, error, finish und pong; alle Felder verwenden camelCase.

Im zuverlässigen Modus mode:'reliable' und eine stabile requestId verwenden. Status: GET /v3/tts/requests/{requestId}, Audio: GET /v3/tts/requests/{requestId}/segments/{segmentId}/audio. Nur bei error.retryable === true erneut versuchen. Realtime v2 bleibt kompatibel; snake_case aus v2 nicht mit v3 mischen.