ElevenAgents permet de donner une voix aux PNJ de Unity

ElevenAgents permet de donner une voix aux PNJ de Unity
4 min de lecture

Les joueurs peuvent désormais s’approcher d’un personnage dans un jeu Unity et lui parler à voix haute. Le nouveau SDK (kit de développement logiciel) ElevenAgents pour Unity relie une scène à un agent vocal ElevenLabs, qui écoute le joueur par le microphone, fait entendre sa voix et gère la session via la Conversation API. Le même code fonctionne dans l’éditeur Unity, sur les versions desktop et en WebGL, c’est-à-dire dans un navigateur, tandis que les versions iOS, Android et XR sont en bêta.

  • Le SDK ElevenAgents permet aux joueurs de parler à voix haute avec les personnages d’Unity.
  • Chaque personnage se relie à un agent vocal ElevenLabs, qui gère la conversation et la voix.
  • Le code fonctionne dans l’éditeur, sur desktop et en WebGL, alors que mobile et XR restent en bêta.
  • Avant la mise en production, il faut réactiver l’Authentication et ne jamais inclure la clé API dans le build.

Lancer une conversation

Une session nécessite l’identifiant d’un agent créé dans le tableau de bord d’ElevenLabs, qui contient le prompt, c’est-à-dire les consignes données à l’agent, ainsi que la voix. Dans l’exemple GettingStarted, fourni avec le SDK, une zone de détection invisible placée autour du personnage ouvre la session quand le joueur entre et la ferme quand il sort. La méthode StartSessionAsync ne rend la main qu’une fois la connexion ouverte et les périphériques audio prêts, et elle choisit le mode de transport adapté à la plateforme cible. EndSession ne fait rien si la session est déjà terminée.

Des personnages qui parlent, écoutent et agissent

Par défaut, la voix de l’agent est diffusée en 2D. En passant son propre AudioSource, le composant audio d’Unity, comme OutputAudioSource, la voix provient du personnage lui-même. La méthode GetOutputVolume() renvoie le niveau sonore actuel de l’agent, entre 0 et 1, sur toutes les plateformes. L’exemple s’en sert pour faire rebondir un cube pendant qu’il parle, et le même principe peut piloter une animation de bouche.

Les variables dynamiques remplissent des emplacements comme {{mood}} dans le prompt et le premier message de l’agent, si bien que chaque personnage peut envoyer ses propres valeurs au début de sa session. Ces valeurs peuvent être des chaînes de caractères, des nombres ou des booléens. Dans l’exemple, un cube jaune et un cube rouge, dont les humeurs diffèrent, partagent un même agent. Pour des changements plus importants, les Overrides remplacent une partie de la configuration de l’agent pour une session, comme le premier message ou la voix. Chacun doit au préalable être activé dans les paramètres de sécurité de l’agent.

La méthode SendContextualUpdate informe l’agent des événements du jeu pendant une conversation, sans l’interrompre ni ajouter un tour de parole que le joueur n’a pas prononcé. Les outils client, eux, permettent à l’agent de déclencher du code du jeu. L’outil se définit dans les paramètres de l’agent, puis un gestionnaire portant le même nom est enregistré dans le jeu. Le SDK désérialise les paramètres avec Newtonsoft Json et renvoie à l’agent ce que le gestionnaire retourne. Ce dernier peut renvoyer un Awaitable pour les tâches longues, et lever une ClientToolException pour expliquer pourquoi une action a échoué.

Des événements comme UserTranscriptReceived, AgentResponded, ModeChanged ou Interrupted se déclenchent sur le thread principal d’Unity, ce qui permet de mettre à jour l’interface directement. SendUserMessage permet d’envoyer du texte, SetMicMuted de couper le micro et SetVolume de régler le volume. Le changement de périphérique d’entrée ou de sortie en cours de session est également possible.

Plateformes et premiers pas

Sur iOS et Android, le joueur doit autoriser l’accès au microphone avant le démarrage d’une session. En WebGL, l’option Use WebAssembly.Table doit être activée dans les Publishing Settings, faute de quoi le SDK fait échouer la compilation avec des instructions. Le mode Play ne fonctionne pas lorsque WebGL est la cible active, si bien qu’il faut tester sur une cible desktop. La voix passe alors par la Web Audio API, et certains réglages d’AudioSource, comme le routage par mixer ou l’effet doppler, ne sont pas repris. Les sessions WebRTC ignorent OutputAudioSource.

Pour un premier test, il suffit de créer un agent, de désactiver l’Authentication dans ses paramètres de sécurité, puis d’installer le package depuis l’URL Git indiquée dans la documentation, en figeant la version v0.1.0. Il reste à importer l’exemple GettingStarted, à y coller l’identifiant de l’agent et à lancer le jeu. Avant toute mise en production, l’Authentication doit être réactivée : le serveur du développeur demande alors une URL signée de courte durée, transmise au jeu sous le nom SignedUrl. La clé API ElevenLabs ne doit jamais figurer dans un build. Le tutoriel dure environ 10 minutes et se termine par un cube qui salue le joueur. Les bugs et demandes de fonctionnalités se signalent dans les GitHub issues du projet.

S’abonner
Notification pour
guest

0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x