Ir para a navegação

WebSockets de Text to Speech vs. Text to Dialogue

Este guia mostra como escolher o WebSocket certo para transmitir fala por streaming e como os dois protocolos diferem.

A ElevenLabs oferece duas famílias de produtos WebSocket para transmitir fala sintetizada por streaming. Cada família tem uma variante de stream único e uma variante de múltiplos contextos que multiplexa vários streams independentes em uma única conexão. Elas resolvem problemas diferentes, aceitam formatos de mensagem diferentes e são voltadas a modelos diferentes.

Qual WebSocket devo usar?

Use o WebSocket de Text to Speech (TTS) quando transmitir texto simples para uma voz por conexão (a voz é fixa na URL) e quiser modelos não v3, como Flash ou Multilingual v2, SSML opcional, agendamentos de chunks ou a variante de múltiplos contextos para lidar com interrupções no estilo de agentes.

Use o WebSocket de Text to Dialogue (TTD) quando precisar do comportamento de diálogo do Eleven v3: entrega expressiva, **voice_id por chunk **, limites de turno (new_turn) e o mesmo buffering voltado para diálogo usado pelo v3 no servidor.

Use o WebSocket TTD de múltiplos contextos quando precisar desse mesmo comportamento de diálogo do Eleven v3 e de vários streams simultâneos ou intercalados em uma única conexão — por exemplo, um agente conversacional que precisa interromper e reiniciar o diálogo sem abrir um novo socket a cada vez.

Para diálogo por lote ou streaming HTTP (solicitação completa em uma chamada), use Criar diálogo ou Transmitir diálogo em vez de um WebSocket.

Comparação

WebSocket de Text to SpeechWebSocket de Text to Dialogue
Referência da APIEntrada de stream TTSWebSocket TTD
URLwss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/stream-inputwss://api.elevenlabs.io/v1/text-to-dialogue/stream-input
Seleção de vozUm voice_id no caminho; todo o texto transmitido usa essa vozA primeira mensagem registra uma ou mais voices por ID; cada entrada em inputs[] informa um voice_id
ModelosFlash, Multilingual v2 e outros modelos TTS compatíveis. Não há eleven_v3 nem eleven_v4 neste endpoint.model_id deve começar com eleven_v3 ou eleven_v4 (por exemplo, eleven_v4 ou eleven_v4_turbo)
Primeira mensagem do clienteInicialize com um espaço e voice_settings / generation_config opcionais (consulte o guia de TTS em tempo real)Deve incluir voices (e credenciais, se ainda não tiverem sido enviadas por cabeçalhos ou query)
Texto subsequenteEnvie uma string text (normalmente com espaço ao final); flush, try_trigger_generation etc. opcionais.Envie inputs: objetos { text, voice_id, new_turn? }; flush, close_socket, keep_alive opcionais
Buffering / agendamentoAgendamento de tamanho de chunks e controles relacionados do WebSocket TTSO servidor armazena em buffer até haver texto suficiente (cerca de 40 caracteres e 8 palavras) antes de gerar áudio, a menos que você use flush
Vários falantes em um socketUse o WebSocket de múltiplos contextos para vários contextos TTS paralelos, não para semântica de diálogo com vários falantesAté 10 vozes registradas para eleven_v4; eleven_v4_turbo permite apenas uma voz registrada. Para streams de diálogo paralelos, use o WebSocket TTD de múltiplos contextos
Inatividadeinactivity_timeout configurável (query do WebSocket TTS)20 s fixos entre mensagens do cliente, a menos que você envie keep_alive
ConcorrênciaApenas o tempo de geração ativa conta para o limite de concorrência do seu plano; um socket aberto e ocioso não contaCada conexão aberta mantém uma sessão de diálogo de um pool separado durante toda a sua duração; a geração pela conexão não consome a concorrência padrão
Alinhamentosync_alignment opcional (nomenclatura de campos TTS na referência da API)sync_alignment opcional; o JSON usa campos em snake_case nas respostas (por exemplo, is_final, char_start_times_ms)

Quando o WebSocket TTS é a melhor opção

  • Você já integra Flash ou Multilingual v2 por latência ou cobertura de idiomas.
  • Você quer uma voz narradora por conexão e um protocolo simples de texto por frame.
  • Você precisa de orquestração de múltiplos contextos para interrupções e falas paralelas (guia de múltiplos contextos).

Veja Gerar áudio em tempo real para um guia completo do WebSocket TTS.

Quando o WebSocket TTD é a melhor opção

  • Você usa diálogo do Eleven v4 (tags expressivas, ritmo de conversa, falas com vários participantes).
  • Você transmite diálogo roteirizado ou gerado por LLM em que a voz falante pode mudar a cada linha sem abrir uma nova conexão.
  • Você quer entrada incremental no formato de WebSocket com geração de diálogo exclusiva do v4 no servidor.

Para um guia prático, use Text to Dialogue em tempo real. Os detalhes do protocolo estão na referência da API.

WebSockets de múltiplos contextos

Ambos os produtos oferecem uma variante de múltiplos contextos que multiplexa vários streams independentes em uma única conexão WebSocket. Cada contexto é identificado por um context_id escolhido pelo cliente, armazena seu próprio texto em buffer e emite chunks de áudio identificados com esse context_id. Os contextos TTS compartilham o voice_id da URL de conexão, enquanto os contextos TTD registram suas próprias vozes e configurações. Use esse formato quando precisar de geração simultânea ou intercalada com tratamento de interrupções — por exemplo, um agente de voz que precisa cancelar uma fala em andamento e iniciar outra sem encerrar a conexão.

WebSocket TTS de múltiplos contextosWebSocket TTD de múltiplos contextos
Referência da APIEntrada de múltiplos streams TTSEntrada de múltiplos streams 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 e outros modelos TTS compatíveis. Não há eleven_v3 nem eleven_v4.model_id deve começar com eleven_v3 (por exemplo, eleven_v3 ou eleven_v3_conversational). eleven_v4 não é compatível com este endpoint.
ContextosVários contextos TTS paralelos em uma conexãoAté 5 contextos simultâneos por conexão
Vozes por contextoUm voice_id fixo na URL para cada contextoRegistradas na primeira mensagem para um context_id: 1 para eleven_v3_conversational, até 10 para eleven_v3
Roteamento por mensagemTodas as mensagens incluem context_idTodas as mensagens incluem context_id (a exceção é uma mensagem que contém apenas close_socket)
Mensagens de controleflush, close_context, close_socket, keep_alive por contextoflush, close_context, close_socket, keep_alive por contexto
Inatividadeinactivity_timeout configurável por contexto20 s fixos por contexto, a menos que você envie keep_alive para esse contexto
AutenticaçãoNo nível da conexão (cabeçalho, query ou primeira mensagem)No nível da conexão (cabeçalho, query ou primeira mensagem) — não por contexto

Quando o WebSocket TTD de múltiplos contextos é a melhor opção

  • Você precisa do comportamento de diálogo do Eleven v3 (entrega expressiva, voice_id por chunk, limites de turno) e de streams simultâneos ou intercalados em uma conexão.
  • Você está criando um agente conversacional que precisa interromper e reiniciar o diálogo sem abrir um novo socket a cada vez.
  • Você quer distribuir várias sessões independentes de diálogo v3 — por exemplo, cenas ou falantes paralelos — em uma única conexão autenticada.

Para o WebSocket TTD de stream único, consulte Text to Dialogue em tempo real. Para o WebSocket TTS de múltiplos contextos, consulte o guia do WebSocket de múltiplos contextos. Os detalhes do protocolo do endpoint TTD de múltiplos contextos estão na referência da API.

Guias relacionados