WebSockets Text to Speech et Text to Dialogue

Ce guide explique comment choisir le WebSocket adapté au streaming de parole et en quoi les deux protocoles diffèrent.

ElevenLabs propose deux produits WebSocket différents pour diffuser de la parole synthétisée en continu. Ils répondent à des besoins distincts, acceptent différents formats de messages et ciblent différents modèles.

Quel WebSocket utiliser ?

Utilisez le WebSocket Text to Speech (TTS) lorsque vous diffusez du texte brut pour une voix par connexion (la voix est définie dans l’URL) et que vous souhaitez utiliser des modèles autres que v3, comme Flash ou Multilingual v2, le SSML facultatif, les plannings de segments ou la variante multi-contexte pour gérer les interruptions de type agent.

Utilisez le WebSocket Text to Dialogue (TTD) lorsque vous avez besoin du comportement de dialogue d’Eleven v3 : une restitution expressive, un **voice_id par segment **, des limites de tour (new_turn) et la même mise en mémoire tampon orientée dialogue que celle utilisée par v3 sur le serveur.

Pour le dialogue en traitement par lots ou diffusion HTTP (requête complète en un appel), utilisez plutôt Créer un dialogue ou Diffuser un dialogue qu’un WebSocket.

Comparaison

WebSocket Text to SpeechWebSocket Text to Dialogue
Guide de l’APIEntrée de flux TTSWebSocket TTD
URLwss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/stream-inputwss://api.elevenlabs.io/v1/text-to-dialogue/stream-input
Sélection de la voixUn voice_id dans le chemin ; tout le texte diffusé utilise cette voixLe premier message enregistre une ou plusieurs voices par ID ; chaque entrée inputs[] indique un voice_id
ModèlesFlash, Multilingual v2 et d’autres modèles TTS pris en charge. Aucun eleven_v3 ou eleven_v4 sur ce point de terminaison.model_id doit commencer par eleven_v3 ou eleven_v4 (par exemple, eleven_v4 ou eleven_v4_turbo)
Premier message clientInitialisez avec un espace et voice_settings / generation_config facultatifs (voir le guide TTS en temps réel)Doit inclure voices (et les identifiants s’ils n’ont pas déjà été envoyés via les en-têtes ou la requête)
Texte en continuEnvoyez une chaîne text (généralement suivie d’un espace) ; flush, try_trigger_generation, etc. sont facultatifsEnvoyez des inputs : objets { text, voice_id, new_turn? } ; flush, close_socket et keep_alive sont facultatifs
Mise en mémoire tampon / planificationPlanning de longueur des segments et contrôles WebSocket TTS associésLe serveur met en mémoire tampon jusqu’à disposer de suffisamment de texte (environ 40 caractères et 8 mots) avant d’émettre de l’audio, sauf si vous utilisez flush
Plusieurs locuteurs sur un socketUtilisez le WebSocket multi-contexte pour plusieurs contextes TTS parallèles, et non pour une sémantique de dialogue multi-locuteurJusqu’à 10 voix enregistrées pour eleven_v4 ; eleven_v4_turbo n’autorise qu’une seule voix enregistrée
Inactivitéinactivity_timeout configurable (requête WebSocket TTS)20 s fixes entre les messages client, sauf si vous envoyez keep_alive
Requêtes simultanéesSeul le temps de génération actif compte dans la limite de requêtes simultanées de votre forfait ; un socket ouvert inactif ne compte pasChaque connexion ouverte réserve une session de dialogue dans un pool distinct pendant toute sa durée de vie ; la génération sur cette connexion ne consomme pas les requêtes simultanées standard
Alignementsync_alignment facultatif (nom de champ TTS dans le Guide de l’API)sync_alignment facultatif ; le JSON utilise des champs en snake_case dans les réponses (par exemple, is_final, char_start_times_ms)

Quand le WebSocket TTS est le meilleur choix

  • Vous intégrez déjà Flash ou Multilingual v2 pour leur faible latence ou leur couverture linguistique.
  • Vous souhaitez une seule voix de narrateur par connexion et un protocole simple, avec un texte par trame.
  • Vous avez besoin d’une orchestration multi-contexte pour les interruptions et les énoncés parallèles (guide multi-contexte).

Consultez Générer de l’audio en temps réel pour une présentation complète du WebSocket TTS.

Quand le WebSocket TTD est le meilleur choix

  • Vous ciblez les dialogues Eleven v4 (balises expressives, rythme conversationnel, répliques multi-locuteurs).
  • Vous diffusez des dialogues scénarisés ou générés par un LLM, où la voix parlante peut changer à chaque ligne sans ouvrir de nouvelle connexion.
  • Vous souhaitez une entrée incrémentielle au format WebSocket avec une génération de dialogue réservée à v4 sur le serveur.

Pour une présentation pratique, consultez Text to Dialogue en temps réel. Les détails du protocole figurent dans le Guide de l’API.

Guides associés