ElevenAgents permite dar voz a los NPC de Unity

ElevenAgents permite dar voz a los NPC de Unity
4 min de lectura

Los jugadores ahora pueden acercarse a un personaje en un juego de Unity y hablarle en voz alta. El nuevo SDK (kit de desarrollo de software) ElevenAgents para Unity conecta una escena con un agente de voz de ElevenLabs, que escucha al jugador a través del micrófono, reproduce su voz y gestiona la sesión mediante la Conversation API. El mismo código funciona en el editor de Unity, en las versiones de escritorio y en WebGL, es decir, en un navegador, mientras que las versiones para iOS, Android y XR están en fase beta.

Iniciar una conversación

Una sesión requiere el identificador de un agente creado en el panel de control de ElevenLabs, que contiene el prompt, es decir, las instrucciones dadas al agente, así como la voz. En el ejemplo GettingStarted, proporcionado con el SDK, una zona de detección invisible colocada alrededor del personaje abre la sesión cuando el jugador entra y la cierra cuando sale. El método StartSessionAsync no devuelve el control hasta que la conexión está abierta y los dispositivos de audio están listos, y elige el modo de transporte adecuado para la plataforma objetivo. EndSession no hace nada si la sesión ya ha terminado.

Personajes que hablan, escuchan y actúan

Por defecto, la voz del agente se reproduce en 2D. Al pasar su propio AudioSource, el componente de audio de Unity, como OutputAudioSource, la voz proviene del propio personaje. El método GetOutputVolume() devuelve el nivel de sonido actual del agente, entre 0 y 1, en todas las plataformas. El ejemplo lo utiliza para hacer rebotar un cubo mientras habla, y el mismo principio puede controlar una animación de boca.

Las variables dinámicas rellenan espacios como {{mood}} en el prompt y el primer mensaje del agente, de modo que cada personaje puede enviar sus propios valores al inicio de su sesión. Estos valores pueden ser cadenas de texto, números o booleanos. En el ejemplo, un cubo amarillo y un cubo rojo, cuyos estados de ánimo difieren, comparten el mismo agente. Para cambios más importantes, los Overrides reemplazan parte de la configuración del agente para una sesión, como el primer mensaje o la voz. Cada uno debe activarse previamente en los ajustes de seguridad del agente.

El método SendContextualUpdate informa al agente sobre eventos del juego durante una conversación, sin interrumpirlo ni añadir un turno de palabra que el jugador no haya pronunciado. Las herramientas del cliente, por su parte, permiten al agente desencadenar código del juego. La herramienta se define en los ajustes del agente, luego un manejador con el mismo nombre se registra en el juego. El SDK deserializa los parámetros con Newtonsoft Json y devuelve al agente lo que el manejador retorna. Este último puede devolver un Awaitable para tareas largas, y lanzar una ClientToolException para explicar por qué una acción ha fallado.

Eventos como UserTranscriptReceived, AgentResponded, ModeChanged o Interrupted se desencadenan en el hilo principal de Unity, lo que permite actualizar la interfaz directamente. SendUserMessage permite enviar texto, SetMicMuted silenciar el micrófono y SetVolume ajustar el volumen. El cambio de dispositivo de entrada o de salida durante la sesión también es posible.

Plataformas y primeros pasos

En iOS y Android, el jugador debe autorizar el acceso al micrófono antes de iniciar una sesión. En WebGL, la opción Use WebAssembly.Table debe estar activada en los Publishing Settings; de lo contrario, el SDK hará que la compilación falle con instrucciones. El modo Play no funciona cuando WebGL es el objetivo activo, por lo que hay que probar en un objetivo de escritorio. La voz pasa entonces por la Web Audio API, y algunos ajustes de AudioSource, como el enrutamiento por mixer o el efecto doppler, no se aplican. Las sesiones WebRTC ignoran OutputAudioSource.

Para una primera prueba, basta con crear un agente, desactivar la Authentication en sus ajustes de seguridad, luego instalar el paquete desde la URL Git indicada en la documentación, fijando la versión v0.1.0. Solo queda importar el ejemplo GettingStarted, pegar el identificador del agente y lanzar el juego. Antes de cualquier despliegue en producción, la Authentication debe reactivarse: el servidor del desarrollador solicita entonces una URL firmada de corta duración, transmitida al juego bajo el nombre SignedUrl. La clave API de ElevenLabs nunca debe aparecer en una build. El tutorial dura unos 10 minutos y termina con un cubo saludando al jugador. Los errores y solicitudes de funciones se pueden reportar en los GitHub issues del proyecto.

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