Hoppa till navigering

Text to Speech jämfört med 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å familjer av WebSocket-produkter för streaming av syntetiserat tal. Varje familj har en variant med en ström och en variant med flera kontexter som multiplexar flera oberoende strömmar över en anslutning. De löser olika problem, accepterar olika meddelandeformat och riktar sig till 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 modeller som inte är v3, till exempel Flash eller Multilingual v2, valfri SSML, chunkscheman eller varianten med flera kontexter för hantering av avbrott i agentliknande arbetsflöden.

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

Använd TTD WebSocket med flera kontexter när du behöver samma dialogbeteende i Eleven v3 och flera samtidiga eller sammanflätade strömmar på en enda anslutning — till exempel en konversationsagent som måste avbryta och starta om dialog utan att öppna en ny socket varje gång.

För batch- eller HTTP-streaming av dialog (hela begäran i ett anrop) använder du i stället Skapa dialog eller Streama dialog 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östvalEtt 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 inputs[]-post anger ett voice_id
ModellerFlash, Multilingual v2 och andra TTS-modeller som stöds. Inte eleven_v3 eller eleven_v4 på denna endpoint.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 har skickats via headers eller query)
Löpande textSkicka en text-sträng (vanligtvis med efterföljande mellanslag); valfria flush, try_trigger_generation osv.Skicka inputs: { text, voice_id, new_turn? }-objekt; valfria flush, close_socket, keep_alive
Buffring / schemaläggningChunkschema 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 WebSocket med flera kontexter 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. För parallella dialogströmmar använder du TTD WebSocket med flera kontexter
InaktivitetKonfigurerbar inactivity_timeout (TTS WebSocket-query)Fast 20 s mellan klientmeddelanden om du inte skickar keep_alive
SamtidighetEndast aktiv genereringstid räknas mot planens samtidighetsgräns; en öppen socket som är inaktiv räknas inteVarje öppen anslutning upptar en dialogsession från en separat pool under hela sin livstid; generering över anslutningen förbrukar inte standardkapacitet för samtidighet
SynkroniseringValfri sync_alignment (TTS-fältnamn i API-referensen)Valfri sync_alignment; JSON använder fält i snake_case 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 latens eller språkstöd.
  • Du vill ha en berättarröst per anslutning och ett enkelt text-per-frame-protokoll.
  • Du behöver orkestrering med flera kontexter för avbrott och parallella yttranden (guide för flera kontexter).

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

När TTD WebSocket passar bättre

  • Du använder Eleven v4-dialog (uttrycksfulla taggar, samtalsanpassat tempo, repliker med flera talare).
  • Du streamar skriptad eller LLM-genererad dialog där rösten kan ändras för varje rad utan att öppna en ny anslutning.
  • Du vill ha WebSocket-liknande inkrementell inmatning med dialoggenerering som är endast för v4 på servern.

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

WebSockets med flera kontexter

Båda produkterna har en variant med flera kontexter som multiplexar flera oberoende strömmar över en enda WebSocket-anslutning. Varje kontext identifieras av ett context_id som klienten väljer, buffrar sin egen text och skickar ljudchunks taggade med det context_id. TTS-kontexter delar voice_id från anslutningens URL, medan TTD-kontexter registrerar egna röster och inställningar. Använd detta format när du behöver samtidig eller sammanflätad generering med avbrottshantering — till exempel en röstagent som måste avbryta ett pågående yttrande och starta ett nytt utan att stänga anslutningen.

TTS WebSocket med flera kontexterTTD WebSocket med flera kontexter
API-referensTTS multi-stream-inputTTD multi-stream-input
URLwss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/multi-stream-inputwss://api.elevenlabs.io/v1/text-to-dialogue/multi-stream-input
ModellerFlash, Multilingual v2 och andra TTS-modeller som stöds. Inte eleven_v3 eller eleven_v4.model_id måste börja med eleven_v3 (till exempel eleven_v3 eller eleven_v3_conversational). eleven_v4 stöds inte på denna endpoint.
KontexterFlera parallella TTS-kontexter på en anslutningUpp till 5 samtidiga kontexter per anslutning
Röster per kontextEtt voice_id som är fast i URL:en för varje kontextRegistreras i det första meddelandet för ett context_id: 1 för eleven_v3_conversational, upp till 10 för eleven_v3
Routning per meddelandeVarje meddelande innehåller context_idVarje meddelande innehåller context_id (ett meddelande som endast innehåller close_socket är undantaget)
Kontrollmeddelandenflush, close_context, close_socket, keep_alive per kontextflush, close_context, close_socket, keep_alive per kontext
InaktivitetKonfigurerbar inactivity_timeout per kontextFast 20 s per kontext om du inte skickar keep_alive för den kontexten
AutentiseringPå anslutningsnivå (header, query eller första meddelandet)På anslutningsnivå (header, query eller första meddelandet) — inte per kontext

När TTD WebSocket med flera kontexter passar bättre

  • Du behöver dialogbeteende i Eleven v3 (uttrycksfull leverans, voice_id per chunk, turgränser) och samtidiga eller sammanflätade strömmar på en anslutning.
  • Du bygger en konversationsagent som måste avbryta och starta om dialog utan att öppna en ny socket varje gång.
  • Du vill fördela flera oberoende v3-dialogsessioner — till exempel parallella scener eller talare — över en enda autentiserad anslutning.

För TTD WebSocket med en ström, se Text to Dialogue i realtid. För TTS WebSocket med flera kontexter, se guiden för WebSocket med flera kontexter. Protokollinformation för TTD-endpointen med flera kontexter finns i API-referensen.

Relaterade guider