WebSockets de Texto a Voz y Texto a Diálogo

Esta guía te muestra cómo elegir el WebSocket adecuado para transmitir voz y en qué se diferencian los dos protocolos.

ElevenLabs ofrece dos productos WebSocket diferentes para transmitir voz sintetizada en streaming. Resuelven problemas distintos, aceptan formatos de mensaje diferentes y están orientados a modelos distintos.

¿Qué WebSocket debo usar?

Usa el WebSocket de Texto a Voz (TTS) cuando transmitas texto sin formato para una voz por conexión (la voz se fija en la URL) y quieras usar modelos que no sean v3, como Flash o Multilingual v2, SSML opcional, programaciones de fragmentos o la variante de multicontexto para gestionar interrupciones al estilo de agentes.

Usa el WebSocket de Texto a Diálogo (TTD) cuando necesites el comportamiento de diálogo de Eleven v3: entonación expresiva, **voice_id por fragmento **, límites de turno (new_turn) y el mismo almacenamiento en búfer orientado al diálogo que se usa para v3 en el servidor.

Para diálogos mediante lotes o streaming HTTP (la solicitud completa en una llamada), usa Crear diálogo o Transmitir diálogo en lugar de un WebSocket.

Comparación

WebSocket de Texto a VozWebSocket de Texto a Diálogo
Referencia de la APIEntrada de streaming de TTSWebSocket de TTD
URLwss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/stream-inputwss://api.elevenlabs.io/v1/text-to-dialogue/stream-input
Selección de vozUn voice_id en la ruta; todo el texto transmitido usa esa vozEl primer mensaje registra una o varias voices por ID; cada entrada de inputs[] indica un voice_id
ModelosFlash, Multilingual v2 y otros modelos de TTS compatibles. No admite eleven_v3 ni eleven_v4 en esta ruta.model_id debe empezar por eleven_v3 o eleven_v4 (por ejemplo, eleven_v4 o eleven_v4_turbo)
Primer mensaje del clienteInicializa con un espacio y voice_settings / generation_config opcionales (consulta la guía de TTS en tiempo real)Debe incluir voices (y las credenciales si no se han enviado ya mediante cabeceras o parámetros de consulta)
Texto posteriorEnvía una cadena text (normalmente con un espacio al final); flush, try_trigger_generation, etc. opcionales.Envía inputs: objetos { text, voice_id, new_turn? }; flush, close_socket y keep_alive opcionales
Almacenamiento en búfer / programaciónProgramación de longitud de fragmentos y controles relacionados del WebSocket de TTSEl servidor almacena en búfer hasta que haya suficiente texto (aproximadamente 40 caracteres y 8 palabras) antes de emitir audio, salvo que uses flush
Varias voces en un socketUsa el WebSocket multicontexto para varios contextos de TTS en paralelo, no para semántica de diálogo multivozHasta 10 voces registradas para eleven_v4; eleven_v4_turbo solo permite una voz registrada
Inactividadinactivity_timeout configurable (parámetro de consulta del WebSocket de TTS)20 s fijos entre mensajes del cliente, a menos que envíes keep_alive
ConcurrenciaSolo el tiempo de generación activo cuenta para el límite de concurrencia de tu plan; un socket abierto inactivo no cuentaCada conexión abierta mantiene una sesión de diálogo de un grupo independiente durante toda su vida útil; la generación a través de la conexión no consume concurrencia estándar
Alineaciónsync_alignment opcional (nomenclatura de los campos de TTS en la referencia de la API)sync_alignment opcional; el JSON usa campos en snake_case en las respuestas (por ejemplo, is_final, char_start_times_ms)

Cuándo encaja mejor el WebSocket de TTS

  • Ya integras Flash o Multilingual v2 por latencia o cobertura de idiomas.
  • Quieres una voz de narrador por conexión y un protocolo sencillo de texto por trama.
  • Necesitas orquestación multicontexto para interrupciones y emisiones paralelas (guía de multicontexto).

Consulta Generar audio en tiempo real para ver una guía completa del WebSocket de TTS.

Cuándo encaja mejor el WebSocket de TTD

  • Usas diálogos de Eleven v4 (etiquetas expresivas, ritmo conversacional, líneas con varias voces).
  • Transmites diálogo generado por guion o LLM en el que la voz que habla puede cambiar en cada línea sin abrir una conexión nueva.
  • Quieres una entrada incremental con formato de WebSocket con generación de diálogo solo para v4 en el servidor.

Para una guía práctica, consulta Texto a Diálogo en Tiempo Real. Los detalles del protocolo están en la referencia de la API.

Guías relacionadas