Hoppa till navigering

Text to Speech- och Text to Dialogue-WebSockets

Den här guiden visar hur du väljer rätt WebSocket för att streama tal och hur de två protokollen skiljer sig åt.

ElevenLabs erbjuder två olika WebSocket-produkter för att streama syntetiserat tal. De löser olika problem, accepterar olika meddelandeformat och är avsedda för olika modeller.

Vilken WebSocket ska jag använda?

Använd Text to Speech (TTS)-WebSocket när du streamar vanlig text för en röst per anslutning (rösten är fast i URL:en) och vill använda icke-v3-modeller som Flash eller Multilingual v2, valfri SSML, delscheman eller varianten multi-context för hantering av avbrott i agentstil.

Använd Text to Dialogue (TTD)-WebSocket när du behöver dialogbeteendet i Eleven v3: uttrycksfull leverans, **voice_id per del **, turgränser (new_turn) och samma dialoginriktade buffring som används för v3 på servern.

För batch- eller HTTP-streaming av dialog (hela begäran i ett anrop), använd Create dialogue eller Stream dialogue i stället för en WebSocket.

Jämförelse

Text to Speech WebSocketText to Dialogue WebSocket
API-referensTTS stream-inputTTD WebSocket
URLwss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/stream-inputwss://api.elevenlabs.io/v1/text-to-dialogue/stream-input
RöstvalEn voice_id i sökvägen; all streamad text använder den röstenDet första meddelandet registrerar en eller flera voices efter ID; varje post i inputs[] anger en voice_id
ModellerFlash, Multilingual v2 och andra TTS-modeller som stöds. Ingen eleven_v3 eller eleven_v4 på denna slutpunkt.model_id måste börja med eleven_v3 eller eleven_v4 (till exempel eleven_v4 eller eleven_v4_turbo)
Första klientmeddelandetInitiera med ett mellanslag och valfria voice_settings / generation_config (se guiden för realtids-TTS)Måste innehålla voices (och autentiseringsuppgifter om de inte redan skickats via headers eller query)
Löpande textSkicka en text-sträng (vanligtvis med ett avslutande mellanslag); valfria flush, try_trigger_generation osv.Skicka inputs: objekt av typen { text, voice_id, new_turn? }; valfria flush, close_socket, keep_alive
Buffring / schemaläggningSchema för dellängd och relaterade TTS WebSocket-kontrollerServern buffrar tills tillräckligt med text finns (ungefär 40 tecken och 8 ord) innan ljud skickas, om du inte använder flush
Flera talare på en socketAnvänd multi-context WebSocket för flera parallella TTS-kontexter, inte dialogsemantik för flera talareUpp till 10 registrerade röster för eleven_v4; eleven_v4_turbo tillåter endast en registrerad röst
InaktivitetKonfigurerbar inactivity_timeout (TTS WebSocket-query)Fast 20 s mellan klientmeddelanden om du inte skickar keep_alive
SamtidighetEndast aktiv genereringstid räknas mot din plans samtidighetsgräns; en inaktiv öppen socket räknas inteVarje öppen anslutning upptar en dialogsession från en separat pool under hela sin livstid; generering över anslutningen förbrukar inte standardkapacitet
JusteringValfri sync_alignment (TTS-fältnamn i API-referensen)Valfri sync_alignment; JSON använder snake_case-fält i svaren (till exempel is_final, char_start_times_ms)

När TTS WebSocket passar bättre

  • Du integrerar redan Flash eller Multilingual v2 för svarstid eller språkstöd.
  • Du vill ha en berättarröst per anslutning och ett enkelt protokoll med text per frame.
  • Du behöver multi-context-orkestrering för avbrott och parallella yttranden (guide för multi-context).

Se Generera ljud i realtid för en fullständig genomgång av TTS WebSocket.

När TTD WebSocket passar bättre

  • Du använder Eleven v4-dialog (uttrycksfulla taggar, samtalstempo, repliker från flera talare).
  • Du streamar skriptad eller LLM-genererad dialog där talarens röst kan ändras för varje rad utan att öppna en ny anslutning.
  • Du vill ha stegvis indata i WebSocket-format med dialoggenerering som är endast för v4 på servern.

För en praktisk genomgång använder du Realtime Text to Dialogue. Protokolldetaljer finns i API-referensen.

Relaterade guider