SDK de Unity
SDK de ElevenAgents: implementa agentes de voz personalizados e interactivos en tus juegos de Unity.
Consulta la visión general de ElevenAgents para entender cómo funciona ElevenAgents.
El SDK de Unity de ElevenAgents conecta una escena de Unity con un agente de ElevenLabs. Captura el micrófono del jugador, transmite la voz del agente de vuelta mediante un AudioSource y expone la sesión a través de una única API Conversation que se comporta igual en el Editor, los reproductores independientes de escritorio y las compilaciones WebGL.
Requisitos
- Unity 6.3 LTS (
6000.3.0f1) o posterior. El SDK utiliza las API de audio programable introducidas en Unity 6.3. - Api Compatibility Level configurado en .NET Standard 2.1, el valor predeterminado de Unity 2023.1 y versiones posteriores.
- Una cuenta de ElevenLabs y un agente. Crea uno en el panel o sigue la guía de inicio rápido.
Compatibilidad de plataformas
El SDK selecciona automáticamente el transporte para el destino de compilación activo. WebRTC solo está disponible en WebGL; en cualquier otro destino, ConnectionType.WebRTC genera una NotSupportedException.
El SDK no solicita permiso para el micrófono. En iOS y Android, solicítalo tú antes de iniciar una sesión.
Instalación
En Unity, abre Window > Package Manager, selecciona + > Install package from git URL y pega la URL del repositorio:
El Package Manager instala el paquete como ElevenAgents (io.elevenlabs.agents), junto con sus dependencias: Input System y Newtonsoft Json.
El paquete incluye dos ejemplos. Impórtalos desde Package Manager > ElevenAgents > Samples. QuickStart es un único MonoBehaviour que muestra la transcripción en directo. GettingStarted es una escena de acercarse y hablar, con audio espacial y variables dinámicas. Consulta la guía paso a paso de introducción para obtener instrucciones detalladas.
Inicio rápido
Esta sección añade un agente de voz a una escena vacía. El agente empieza a hablar al entrar en el modo Play y la sesión termina al salir de él.
Crea un agente público
Crea un agente en el panel de ElevenLabs. En la configuración de Security del agente, desactiva Authentication para que el juego pueda conectarse solo con el ID del agente. Copia el ID del agente.
Para los agentes que requieren autenticación, consulta Agentes públicos y privados.
Añade un script de conversación
Crea Assets/Scripts/AgentConversation.cs:
Conversation.StartSessionAsync devuelve el control cuando la conexión está abierta y los dispositivos de audio están listos. EndSession es idempotente, por lo que puedes llamarlo desde OnDestroy sin problemas, incluso si la sesión ya ha terminado.
Agentes públicos y privados
Agentes públicos
Agentes privados
Pasa el ID del agente directamente. Cualquiera que tenga el ID puede iniciar una conversación con el agente.
Configura exactamente uno de AgentId, SignedUrl o ConversationToken. Configura UserId para asociar la conversación con un jugador en tus propios sistemas.
Audio espacial
De forma predeterminada, el SDK reproduce la voz del agente mediante un AudioSource oculto que crea él mismo. Para situar la voz en la escena, pasa tu propio AudioSource como OutputAudioSource:
El SDK conserva la mezcla espacial, la atenuación, el enrutamiento del mezclador y la posición de la fuente. Restaura la configuración de clip, bucle y volumen de la fuente cuando termina la sesión.
Para controlar un efecto visual con la voz del agente, como una animación de boca, lee conversation.GetOutputVolume() en cada fotograma. Devuelve un valor entre 0 y 1 en todas las plataformas.
Personalización
Usa variables dinámicas para rellenar marcadores de posición en el prompt y el primer mensaje del agente, y anulaciones para sustituir partes de la configuración del agente durante una sesión:
Los valores de las variables dinámicas deben ser cadenas, números o valores booleanos. Cada anulación debe estar activada en la configuración de Security del agente antes de que el servidor la acepte.
Herramientas de cliente
Las herramientas de cliente permiten al agente activar acciones en tu juego. Define la herramienta en la configuración del agente y, después, registra un controlador con el mismo nombre:
El SDK deserializa los parámetros de la herramienta en TParams con Newtonsoft Json, así que usa [JsonProperty] cuando el nombre de un parámetro difiera del nombre de la propiedad. El valor de retorno se serializa como resultado de la herramienta. Devuelve un Awaitable<TResult> para controladores asíncronos. Genera una ClientToolException con un errorType para informar de un fallo específico al agente; cualquier otra excepción se informa como un error genérico.
Las llamadas a herramientas sin un controlador registrado generan ErrorOccurred, o UnhandledClientToolCall si estás suscrito a este evento.
Eventos
Suscríbete a los eventos de la Conversation que devuelve StartSessionAsync. El SDK los genera en el hilo principal de Unity.
El evento Connected se activa antes de que StartSessionAsync devuelva el control, así que lee ConversationId y Status directamente cuando termine la llamada. El registro de cambios del paquete enumera todos los eventos disponibles.
Métodos
Por ejemplo, envía la ubicación actual del jugador al agente cuando entre en una zona nueva:
Compilaciones WebGL
Las compilaciones WebGL necesitan una configuración adicional del reproductor. En Player Settings > WebGL > Publishing Settings, activa Use WebAssembly.Table. El SDK hace que la compilación falle con instrucciones si esta opción está desactivada.
Unity no dispone de una canalización de audio programable en WebGL, por lo que el SDK reproduce la voz del agente mediante la API Web Audio del navegador y refleja el volumen, la posición y la configuración espacial de tu OutputAudioSource. Como resultado, AudioSource.GetOutputData y OnAudioFilterRead devuelven silencio en WebGL. Usa GetOutputVolume() y GetOutputByteFrequencyData() en su lugar.
El modo Play en el Editor todavía no es compatible mientras el destino de compilación activo sea WebGL. Cambia a un destino de compilación de escritorio para probarlo en el Editor.
Consulta COMPATIBILITY.md para ver la matriz completa de compatibilidad con WebGL.
Resolución de problemas
StartSessionAsyncgeneraArgumentException. Configura exactamente uno deAgentId,SignedUrloConversationToken.- La sesión no logra conectarse con un ID de agente válido. El agente requiere autenticación. Desactiva la autenticación o conéctate con una URL firmada.
- Una anulación no tiene efecto. Activa la anulación correspondiente en la configuración de Security del agente.
- El jugador no oye nada en WebGL. Los navegadores mantienen el audio suspendido hasta que el jugador interactúa con la página. Inicia la sesión después de un clic o de pulsar una tecla.
- El micrófono no está disponible en WebGL. Los navegadores solo conceden acceso al micrófono a páginas servidas mediante HTTPS o desde
localhost.
Informa de errores y solicita funcionalidades en GitHub.