WebSocket com múltiplos contextos
WebSocket com múltiplos contextos
Este guia mostra como criar agentes de voz em tempo real usando a API WebSocket com múltiplos contextos.
Orquestrar agentes de voz usando esta API WebSocket com múltiplos contextos é uma tarefa complexa recomendada para desenvolvedores avançados. Para uma solução mais gerenciada, considere conhecer nosso produto da plataforma de Agents, que simplifica muitos desses desafios.
Visão geral
Criar agentes de voz responsivos exige a capacidade de gerenciar fluxos de áudio dinamicamente, lidar bem com interrupções e manter uma fala com som natural ao longo dos turnos da conversa. Nossa API WebSocket com múltiplos contextos para Text to Speech (TTS) foi desenvolvida especificamente para esses cenários.
Esta API expande nossa funcionalidade padrão de WebSocket para TTS ao introduzir o conceito de “contextos”. Cada contexto funciona como um fluxo independente de geração de áudio em uma única conexão WebSocket. Isso permite que você:
- Gerencie várias linhas de fala simultaneamente (por exemplo, o agente falando enquanto prepara uma resposta para uma interrupção do usuário).
- Lide sem interrupções com intervenções do usuário fechando um contexto de fala existente e iniciando um novo.
- Mantenha a consistência prosódica de enunciados dentro do mesmo contexto lógico.
- Otimize o uso de recursos fechando seletivamente contextos que não são mais necessários.
A API WebSocket com múltiplos contextos é otimizada para aplicações de voz e não se destina à geração simultânea de vários fluxos de áudio não relacionados. Cada conexão é limitada a 5 contextos simultâneos para refletir isso.
Este guia mostrará como se conectar ao WebSocket com múltiplos contextos, gerenciar contextos e aplicar boas práticas para criar agentes de voz envolventes.
Boas práticas
Estas boas práticas são essenciais para criar agentes de voz responsivos e eficientes com nossa API WebSocket com múltiplos contextos.
Use uma única conexão WebSocket
Estabeleça uma conexão WebSocket para cada sessão de usuário final. Isso reduz a sobrecarga e a latência em comparação com a criação de várias conexões. Dentro dessa única conexão, você pode gerenciar vários contextos para diferentes partes da conversa.
Transmita respostas em partes, gere frases
Ao gerar respostas longas, transmita o texto em partes menores e use a flag flush: true
ao final de frases completas. Isso melhora a qualidade do áudio gerado e a
responsividade.
Lide bem com interrupções
Transmita texto para um contexto até ocorrer uma interrupção, depois crie um novo contexto e feche o existente. Essa abordagem garante transições suaves quando o fluxo da conversa muda.
Gerencie o ciclo de vida dos contextos
Feche contextos não utilizados rapidamente. O servidor pode manter até 5 contextos simultâneos por conexão, mas você deve fechar os contextos quando não forem mais necessários.
Evite tempos limite de contexto
Por padrão, os contextos expiram após 20 segundos e são fechados automaticamente. O tempo limite de inatividade é um parâmetro no nível do websocket que se aplica a todos os contextos e pode chegar a 180 segundos se necessário. Envie uma mensagem de texto vazia em um contexto para reiniciar o contador do tempo limite.
Como lidar com interrupções
Quando um usuário interromper seu agente, você deve fechar o contexto atual e criar um novo:
Como manter um contexto ativo
Os contextos expiram automaticamente após 20 segundos de inatividade por padrão. Se precisar manter um contexto ativo sem gerar texto (por exemplo, durante um atraso de processamento), você pode enviar uma mensagem de texto vazia para reiniciar o contador do tempo limite.
Como fechar a conexão WebSocket
Quando sua conversa terminar, você poderá limpar todos os contextos fechando o socket:
Exemplo completo de agente conversacional
Requisitos
- Uma conta da ElevenLabs com uma chave de API (saiba como encontrar sua chave de API).
- Python ou Node.js (ou outro runtime JavaScript) instalado em sua máquina.
- Familiaridade com comunicação por WebSocket. Recomendamos ler nosso guia sobre streaming WebSocket padrão para entender os conceitos fundamentais.
Configuração
Instale as dependências necessárias para a linguagem escolhida:
Crie um arquivo .env no diretório do seu projeto para armazenar sua chave de API: