Guia de início rápido do Speech Engine
Guia de início rápido do Speech Engine
Este guia mostra como criar um agente de voz com o Speech Engine. Você configura um servidor que conecta seu LLM à ElevenLabs e, em seguida, 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 suas respostas. A ElevenLabs gerencia a conversão de fala em texto e de texto em fala; 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 ao seu servidor. Seu servidor a encaminha ao LLM e transmite a resposta de volta. A ElevenLabs converte o texto em fala e o reproduz no navegador. O SDK gerencia as conexões, as trocas de turno 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. Ele configura um servidor, conecta o Speech Engine no caminho /ws e usa a OpenAI para gerar respostas.
O callback onTranscript / on_transcript recebe todo o histórico 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, você deve adicionar proteções para evitar tentativas de injeção ou manipulação de prompt.
Configuração do cliente
Crie um endpoint de token
Adicione um endpoint do lado do servidor que gere um token de conversa. Isso mantém sua chave de API fora do navegador e usa WebRTC para oferecer 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 há três processos em execução:
- ngrok - encaminhando para a porta 3001
- Seu servidor Speech Engine -
python server.pyounpx tsx server.mts - O servidor de tokens -
npx tsx token-server.mtsoupython token_server.py
Abra sua aplicação cliente no navegador e clique em Iniciar conversa. Quando solicitado, conceda acesso ao microfone e fale. 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.