Dê voz aos NPCs do seu jogo Unity com o ElevenAgents
- Escrito por
- Tadas Petra
- Publicado
- Última atualização
OuvirOuça este artigo
Agora, os jogadores podem se aproximar de um personagem no seu jogo Unity e falar com ele em voz alta. O novo SDK do ElevenAgents para Unity conecta uma cena a um agente de voz da ElevenLabs. Ele escuta pelo microfone do jogador, reproduz a voz do agente por meio de um AudioSource e executa a sessão pela API Conversation.
O mesmo código funciona no Editor, em builds para desktop e no WebGL, enquanto iOS, Android e XR estão em beta.
Inicie uma conversa
Uma sessão precisa do ID de um agente que você criou no painel da ElevenLabs, que contém o prompt e a voz. No nosso exemplo GettingStarted, incluído no SDK, um collider de gatilho ao redor do personagem abre a sessão quando o jogador entra e a encerra quando ele sai:
StartSessionAsync retorna quando a conexão está aberta e os dispositivos de áudio estão prontos, além de escolher o transporte adequado para o destino do build. EndSession não faz nada se a sessão já tiver sido encerrada.
O que vem no SDK
Vozes que vêm do personagem
Por padrão, a voz do agente é reproduzida em 2D. Passe seu próprio AudioSource como OutputAudioSource e a voz virá do personagem.
GetOutputVolume() retorna o nível atual do agente, de 0 a 1, em todas as plataformas. O exemplo o usa para fazer o cubo subir e descer enquanto fala, e ele também pode controlar uma animação da boca.
Um agente, muitos personagens
As variáveis dinâmicas preenchem espaços reservados como {{mood}} no prompt e na primeira mensagem do agente, para que cada personagem possa enviar seus próprios valores quando a sessão começar. Os valores podem ser strings, números ou booleanos. No exemplo, um cubo amarelo e feliz e um cubo vermelho e irritado compartilham um agente:
Para alterações maiores, Overrides substituem parte da configuração do agente em uma sessão, como a primeira mensagem ou a voz. Primeiro, cada substituição precisa ser ativada nas configurações de Segurança do agente.
Personagens que sabem o que está acontecendo
SendContextualUpdate informa o agente sobre eventos do jogo durante a conversa, sem interrompê-lo nem adicionar uma fala que o jogador não disse:
Personagens que agem no jogo
As ferramentas do cliente permitem que o agente acione código do jogo. Defina a ferramenta nas configurações do agente e registre um manipulador com o mesmo nome:
O SDK desserializa os parâmetros da ferramenta com Newtonsoft Json e envia ao agente o que o manipulador retornar. Os manipuladores podem retornar um Awaitable para tarefas que levam tempo e lançar uma ClientToolException para informar ao agente por que algo falhou.
Eventos e controles
Eventos como UserTranscriptReceived, AgentResponded, ModeChanged e Interrupted são disparados na thread principal do Unity, para que você possa atualizar a interface diretamente a partir deles. Os métodos abrangem entrada de texto com SendUserMessage, silenciamento com SetMicMuted, SetVolume, dados de frequência para visualizadores e troca de dispositivos de entrada ou saída durante a sessão. A documentação do SDK para Unity lista todos eles.
Suporte a plataformas
O SDK escolhe o transporte para cada destino.
- iOS e Android: solicite permissão para usar o microfone antes de iniciar uma sessão.
- WebGL: ative Use WebAssembly.Table em Publishing Settings. Se estiver desativado, o SDK falhará o build com instruções. O Play Mode não funciona enquanto o WebGL for o destino de build ativo, então teste em um destino para desktop.
- Áudio no WebGL: a voz é reproduzida pela Web Audio API, portanto algumas configurações de
AudioSource, como roteamento do mixer e doppler, não são mantidas. As sessões WebRTC ignoramOutputAudioSource.
As notas de compatibilidade trazem a lista completa.
Comece agora
- Crie um agente no painel da ElevenLabs. Para um primeiro teste, desative a Autenticação nas configurações de Segurança, para que o jogo possa se conectar apenas com o ID do agente.
- No Unity, abra Window > Package Manager > + > Install package from git URL e fixe a versão:
https://github.com/elevenlabs/unity.git#v0.1.0 - Importe o exemplo GettingStarted, cole o ID do seu agente e pressione Play.
Aviso: antes de lançar seu jogo, ative a Autenticação novamente. Seu próprio servidor solicitará uma URL assinada de curta duração, e o jogo a passará como SignedUrl em vez de AgentId. Nunca inclua sua chave de API da ElevenLabs em um build do jogo.
O guia de introdução leva cerca de 10 minutos e termina com um cubo que cumprimenta você quando você se aproxima. Para todo o restante, leia a documentação do SDK para Unity e envie bugs e solicitações de recursos para as issues do GitHub.
Tadas é engenheiro de Relações com Desenvolvedores e ajuda desenvolvedores a criar com o conjunto de produtos da ElevenLabs. Antes, foi fundador de uma plataforma de educação para desenvolvedores, Lead Developer Advocate na Agora, instrutor na Zero To Mastery e criou uma audiência no YouTube ensinando desenvolvedores.





