Início rápido do Speech Engine
Este guia mostra como criar um agente com voz usando o Speech Engine. Você configura um servidor que conecta seu LLM à ElevenLabs e, depois, integra um cliente de navegador para que os usuários possam ter conversas por voz com seu agente.
Use a skill do ElevenLabs Speech Engine para adicionar voz ao seu agente de chat:
Como o Speech Engine funciona
O Speech Engine conecta seu LLM à ElevenLabs para que os usuários possam falar com seu agente e ouvir as respostas dele. A ElevenLabs processa a conversão de voz em texto e de texto em voz; seu servidor fornece a lógica do LLM.
Cada conexão WebSocket representa uma conversa. Quando o usuário fala, a ElevenLabs transcreve o áudio e envia a transcrição para seu servidor. Seu servidor a encaminha ao LLM e, em seguida, transmite a resposta de volta. A ElevenLabs converte o texto em voz e o reproduz no navegador. O SDK gerencia a conexão, os turnos de fala e a detecção de interrupções.
Pré-requisitos
Este tutorial usa a API da OpenAI para o LLM. Você precisa ter uma chave de API da OpenAI definida na variável de ambiente OPENAI_API_KEY.
Configuração do servidor
Crie uma chave de API
Crie uma chave de API no painel aqui, que você usará para acessar a API com segurança.
Armazene a chave como um segredo gerenciado e passe-a aos SDKs como uma variável de ambiente por meio de um arquivo .env ou diretamente na configuração do seu app, conforme sua preferência.
Exponha o servidor
O Speech Engine precisa de uma URL acessível publicamente. Use o ngrok para expor seu servidor local. O servidor ainda não foi criado, mas o ngrok precisa estar em execução primeiro para que você tenha a URL para a próxima etapa.
Copie a URL de encaminhamento (por exemplo, https://abc123.ngrok.io).
Crie uma instância do Speech Engine
Use o SDK para criar uma instância do Speech Engine, passando sua URL do ngrok com o caminho /ws adicionado como URL do WebSocket.
Execute este script e copie o ID do Speech Engine (por exemplo, seng_8k3m9xr4hjnfg983brhmhkd98n6) para a próxima etapa.
Crie o servidor
Crie um arquivo chamado server.py ou server.mts com o conteúdo a seguir. Isso configura um servidor, conecta o Speech Engine no caminho /ws e usa a OpenAI para gerar respostas.
O callback onTranscript / on_transcript recebe o histórico completo da conversa e a sessão atual. O SDK TypeScript também fornece um AbortSignal que é acionado se o usuário interromper durante uma resposta. Passar signal para a chamada da OpenAI cancela automaticamente a solicitação ao LLM em caso de interrupção.
sendResponse() / send_response() aceita uma string, um iterável assíncrono ou um stream da OpenAI, Anthropic ou Google Gemini. O SDK extrai o conteúdo de texto automaticamente.
No exemplo acima, a transcrição completa do usuário é enviada ao LLM. Em um ambiente de produção, adicione proteções para evitar tentativas de injeção ou manipulação de prompts.
Configuração do cliente
Crie um endpoint de token
Adicione um endpoint no servidor que gere um token de conversa. Isso mantém sua chave de API fora do navegador e usa WebRTC para obter a melhor qualidade de áudio.
Crie a interface da conversa
Busque o token de conversa no seu servidor e use-o para iniciar uma sessão.
React
JavaScript
Experimente
Verifique se três processos estão em execução:
- ngrok - encaminhando para a porta 3001
- Seu servidor do Speech Engine -
python server.pyounpx tsx server.mts - O servidor de tokens -
npx tsx token-server.mtsoupython token_server.py
Abra seu aplicativo cliente no navegador e clique em Iniciar conversa. Conceda acesso ao microfone quando solicitado e comece a falar. Você deverá ouvir a resposta do agente pelos alto-falantes.
Se debug: true estiver ativado no servidor, você verá as transcrições recebidas e as respostas enviadas registradas no console.
Eventos de sessão
Configurando a primeira mensagem do agente
Por padrão, o agente espera o usuário falar primeiro. Para que o agente cumprimente o usuário quando a conversa começar, defina uma primeira mensagem na opção overrides do cliente ao iniciar a sessão.
A primeira mensagem é falada pelo agente assim que a conexão é estabelecida. Ela não aciona o callback onTranscript no seu servidor — é processada inteiramente pela ElevenLabs.
Configurando a duração máxima da conversa
Por padrão, uma conversa termina após 600 segundos (10 minutos). O Speech Engine aceita conversas de até 2.400 segundos (40 minutos). Para permitir conversas mais longas, atualize o recurso do Speech Engine com um max_duration_seconds maior:
Você também pode configurar isso no painel: abra seu Speech Engine, acesse a guia Avançado e defina a Duração máxima da conversa em Comportamento conversacional.
Conversas com mais de 40 minutos não são compatíveis e podem ser desconectadas, mesmo que
max_duration_seconds esteja definido com um valor maior. Se precisar de conversas mais longas, entre em contato com nossa
equipe.