WebSockets de Text to Speech vs Text to Dialogue

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

A ElevenLabs oferece dois produtos WebSocket diferentes para transmitir fala sintetizada. Eles resolvem problemas distintos, aceitam formatos de mensagem diferentes e são voltados para 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 usar modelos não v3, como Flash ou Multilingual v2, SSML opcional, agendamentos de chunks ou a variante de multicontexto 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álogos usado para v3 no servidor.

Para diálogos 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 de inputs[] informa um voice_id
ModelosFlash, Multilingual v2 e outros modelos TTS compatíveis. Não use eleven_v3 ou 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, caso ainda não tenham sido enviadas por headers ou query)
Texto contínuoEnvie uma string text (geralmente com espaço ao final); flush, try_trigger_generation opcionais etc.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 emitir áudio, a menos que você use flush
Vários falantes em um socketUse o WebSocket multicontexto para vários contextos TTS paralelos, não para a semântica de diálogos com vários falantesAté 10 vozes registradas para eleven_v4; eleven_v4_turbo permite apenas uma voz registrada
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 inativo não contaCada conexão aberta mantém uma sessão de diálogo de um pool separado durante toda a sua existência; a geração pela conexão não consome a concorrência padrão
Alinhamentosync_alignment opcional (nomenclatura do campo 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 para reduzir a latência ou ampliar a cobertura de idiomas.
  • Você quer uma voz de narrador por conexão e um protocolo simples de texto por frame.
  • Você precisa de orquestração multicontexto para interrupções e falas paralelas (guia de multicontexto).

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

Quando o WebSocket TTD é a melhor opção

  • Você usa diálogos do Eleven v4 (tags expressivas, ritmo de conversa, falas de vários participantes).
  • Você transmite diálogos roteirizados ou gerados por LLM em que a voz pode mudar a cada fala sem abrir uma nova conexão.
  • Você quer entrada incremental no formato de WebSocket, com geração de diálogos 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.

Guias relacionados