Saltar a la navegación

WebSockets de Texto a Voz frente a Texto a Diálogo

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

ElevenLabs ofrece dos familias de productos WebSocket para transmitir voz sintetizada. Cada familia tiene una variante de flujo único y una variante de multicontexto que multiplexa varios flujos independientes a través de una conexión. Resuelven problemas distintos, aceptan formatos de mensaje diferentes y están dirigidos 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 modelos que no sean v3, como Flash o Multilingual v2, SSML opcional, programaciones de fragmentos o la variante de multicontexto para gestionar interrupciones propias 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.

Usa el WebSocket TTD multicontexto cuando necesites ese mismo comportamiento de diálogo de Eleven v3 y, además, varios flujos simultáneos o intercalados en una sola conexión; por ejemplo, un agente conversacional que debe interrumpir y reiniciar el diálogo sin abrir un socket nuevo cada vez.

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

Comparativa

WebSocket de Texto a VozWebSocket de Texto a Diálogo
Referencia de la APIEntrada de flujo TTSWebSocket 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 TTS compatibles. No admite eleven_v3 ni eleven_v4 en esta ruta de API.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 credenciales si no se han enviado ya mediante encabezados o parámetros de consulta)
Texto posteriorEnvía una cadena text (normalmente con un espacio final); flush, try_trigger_generation y otros elementos son opcionales.Envía inputs: objetos { text, voice_id, new_turn? }; flush, close_socket y keep_alive son opcionales
Almacenamiento en búfer / programaciónProgramación de longitud de fragmentos y controles relacionados del WebSocket 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 TTS paralelos, no para semántica de diálogo con varias vocesHasta 10 voces registradas para eleven_v4; eleven_v4_turbo solo permite una voz registrada. Para flujos de diálogo paralelos, usa el WebSocket TTD multicontexto
Inactividadinactivity_timeout configurable (parámetro de consulta del WebSocket TTS)20 s fijos entre mensajes del cliente, salvo que envíes keep_alive
SimultaneidadSolo el tiempo de generación activo cuenta para el límite de simultaneidad 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 la simultaneidad estándar
Alineaciónsync_alignment opcional (nomenclatura de campos TTS en la referencia de la API)sync_alignment opcional; JSON usa campos en snake_case en las respuestas (por ejemplo, is_final, char_start_times_ms)

Cuándo el WebSocket TTS es la mejor opción

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

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

Cuándo el WebSocket TTD es la mejor opción

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

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

WebSockets multicontexto

Ambos productos ofrecen una variante de multicontexto que multiplexa varios flujos independientes mediante una sola conexión WebSocket. Cada contexto se identifica con un context_id elegido por el cliente, almacena su propio texto en búfer y emite fragmentos de audio etiquetados con ese context_id. Los contextos TTS comparten el voice_id de la URL de conexión, mientras que los contextos TTD registran sus propias voces y ajustes. Usa este formato cuando necesites generación simultánea o intercalada con gestión de interrupciones; por ejemplo, un agente de voz que debe cancelar un enunciado en curso e iniciar uno nuevo sin cerrar la conexión.

WebSocket TTS multicontextoWebSocket TTD multicontexto
Referencia de la APIEntrada multistream TTSEntrada multistream TTD
URLwss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/multi-stream-inputwss://api.elevenlabs.io/v1/text-to-dialogue/multi-stream-input
ModelosFlash, Multilingual v2 y otros modelos TTS compatibles. No admite eleven_v3 ni eleven_v4.model_id debe empezar por eleven_v3 (por ejemplo, eleven_v3 o eleven_v3_conversational). eleven_v4 no es compatible con esta ruta de API.
ContextosVarios contextos TTS paralelos en una conexiónHasta 5 contextos simultáneos por conexión
Voces por contextoUn voice_id fijo en la URL para todos los contextosSe registran en el primer mensaje para un context_id: 1 para eleven_v3_conversational, hasta 10 para eleven_v3
Enrutamiento por mensajeCada mensaje incluye context_idCada mensaje incluye context_id (la excepción es un mensaje que contiene solo close_socket)
Mensajes de controlflush, close_context, close_socket, keep_alive por contextoflush, close_context, close_socket, keep_alive por contexto
Inactividadinactivity_timeout configurable por contexto20 s fijos por contexto, salvo que envíes keep_alive para ese contexto
AutenticaciónEn el nivel de conexión (encabezado, consulta o primer mensaje)En el nivel de conexión (encabezado, consulta o primer mensaje), no por contexto

Cuándo el WebSocket TTD multicontexto es la mejor opción

  • Necesitas el comportamiento de diálogo de Eleven v3 (entonación expresiva, voice_id por fragmento, límites de turno) y flujos simultáneos o intercalados en una conexión.
  • Estás creando un agente conversacional que debe interrumpir y reiniciar el diálogo sin abrir un socket nuevo cada vez.
  • Quieres distribuir varias sesiones de diálogo v3 independientes —por ejemplo, escenas o hablantes en paralelo— mediante una sola conexión autenticada.

Para el WebSocket TTD de flujo único, consulta Texto a Diálogo en tiempo real. Para el WebSocket TTS multicontexto, consulta la guía del WebSocket multicontexto. Los detalles del protocolo para la ruta de API TTD multicontexto están en la referencia de la API.

Guías relacionadas