Unity SDK
ElevenAgents SDK: implementeer aangepaste, interactieve spraakagenten in je Unity-games.
Raadpleeg het overzicht van ElevenAgents voor uitleg over hoe ElevenAgents werkt.
De ElevenAgents Unity SDK verbindt een Unity-scène met een ElevenLabs-agent. De SDK vangt de microfoon van de speler op, streamt de stem van de agent terug via een AudioSource en maakt de sessie beschikbaar via één Conversation-API die hetzelfde werkt in de Editor, standalone desktopspelers en WebGL-builds.
Vereisten
- Unity 6.3 LTS (
6000.3.0f1) of hoger. De SDK gebruikt scriptable-audio-API’s die zijn geïntroduceerd in Unity 6.3. - Api Compatibility Level ingesteld op .NET Standard 2.1, de standaardinstelling voor Unity 2023.1 en hoger.
- Een ElevenLabs-account en een agent. Maak er een in het dashboard of volg de quickstart.
Platformondersteuning
De SDK selecteert automatisch het transport voor het actieve builddoel. WebRTC is alleen beschikbaar op WebGL; op elk ander doel genereert ConnectionType.WebRTC een NotSupportedException.
De SDK vraagt geen microfoonmachtiging aan. Vraag deze op iOS en Android zelf aan voordat je een sessie start.
Installatie
Open in Unity Window > Package Manager, selecteer + > Install package from git URL en plak de repository-URL:
De Package Manager installeert het pakket als ElevenAgents (io.elevenlabs.agents), samen met de afhankelijkheden Input System en Newtonsoft Json.
Het pakket bevat twee voorbeelden. Importeer ze via Package Manager > ElevenAgents > Samples. QuickStart is één MonoBehaviour die het live transcript weergeeft. GettingStarted is een scène waarin je naar een personage loopt en ermee praat, met ruimtelijke audio en dynamische variabelen. Zie de stapsgewijze handleiding om te beginnen voor een stap-voor-stapgids.
Quickstart
In dit gedeelte voeg je een spraakagent toe aan een lege scène. De agent begint te praten wanneer je Play Mode opent en de sessie eindigt wanneer je die verlaat.
Een openbare agent maken
Maak een agent in het ElevenLabs-dashboard. Schakel in de Security-instellingen van de agent Authentication uit, zodat de game alleen met de agent-ID verbinding kan maken. Kopieer de agent-ID.
Zie Openbare en privéagenten voor agents die authenticatie vereisen.
Een gespreksscript toevoegen
Maak Assets/Scripts/AgentConversation.cs:
Conversation.StartSessionAsync retourneert zodra de verbinding open is en de audioapparaten gereed zijn. EndSession is idempotent, dus je kunt deze veilig aanroepen vanuit OnDestroy, zelfs als de sessie al is beëindigd.
Openbare en privéagenten
Openbare agenten
Privéagenten
Geef de agent-ID rechtstreeks door. Iedereen met de ID kan een gesprek met de agent starten.
Stel precies een van AgentId, SignedUrl of ConversationToken in. Stel UserId in om het gesprek te koppelen aan een speler in je eigen systemen.
Ruimtelijke audio
Standaard speelt de SDK de stem van de agent af via een verborgen AudioSource die de SDK maakt. Geef je eigen AudioSource door als OutputAudioSource om de stem in de scène te plaatsen:
De SDK behoudt de ruimtelijke blend, rolloff, mixerrouting en positie van de bron. De SDK herstelt de instellingen voor clip, loop en volume van de bron wanneer de sessie eindigt.
Lees voor het aansturen van een visueel effect met de stem van de agent, zoals een mondanimatie, elk frame conversation.GetOutputVolume() uit. Dit retourneert op elk platform een waarde tussen 0 en 1.
Personalisatie
Gebruik dynamische variabelen om placeholders in de prompt en het eerste bericht van de agent in te vullen, en overschrijvingen om delen van de agentconfiguratie voor één sessie te vervangen:
Waarden van dynamische variabelen moeten strings, getallen of booleans zijn. Elke overschrijving moet zijn ingeschakeld in de Security-instellingen van de agent voordat de server deze accepteert.
Clienttools
Met clienttools kan de agent acties in je game activeren. Definieer de tool in de instellingen van de agent en registreer vervolgens een handler met dezelfde naam:
De SDK deserialiseert de toolparameters met Newtonsoft Json naar TParams, dus gebruik [JsonProperty] wanneer een parameternaam afwijkt van de eigenschapsnaam. De retourwaarde wordt geserialiseerd als het toolresultaat. Retourneer een Awaitable<TResult> voor asynchrone handlers. Genereer ClientToolException met een errorType om een specifieke fout aan de agent te melden; elke andere uitzondering wordt als een algemene fout gemeld.
Aanroepen van tools zonder geregistreerde handler activeren ErrorOccurred, of UnhandledClientToolCall als je je daarop abonneert.
Events
Abonneer je op events van de Conversation die wordt geretourneerd door StartSessionAsync. De SDK activeert deze op de hoofdthread van Unity.
Het event Connected wordt geactiveerd voordat StartSessionAsync retourneert, dus lees ConversationId en Status rechtstreeks uit zodra de aanroep is voltooid. De changelog van het pakket bevat de volledige lijst met events.
Methoden
Stuur bijvoorbeeld de huidige locatie van de speler naar de agent wanneer deze een nieuw gebied betreedt:
WebGL-builds
WebGL-builds hebben één extra Player Setting nodig. Schakel in Player Settings > WebGL > Publishing Settings Use WebAssembly.Table in. De SDK laat de build mislukken met instructies als deze instelling is uitgeschakeld.
Unity heeft geen scriptable-audiopipeline op WebGL, dus de SDK speelt de stem van de agent af via de Web Audio API van de browser en spiegelt het volume, de positie en de ruimtelijke instellingen van je OutputAudioSource. Daardoor retourneren AudioSource.GetOutputData en OnAudioFilterRead stilte op WebGL. Gebruik in plaats daarvan GetOutputVolume() en GetOutputByteFrequencyData().
Play Mode in de Editor wordt nog niet ondersteund wanneer het actieve builddoel WebGL is. Schakel over naar een desktopbuilddoel om in de Editor te testen.
Zie COMPATIBILITY.md voor de volledige WebGL-compatibiliteitsmatrix.
Problemen oplossen
StartSessionAsyncgenereertArgumentException. Stel precies een vanAgentId,SignedUrlofConversationTokenin.- De sessie kan geen verbinding maken met een geldige agent-ID. De agent vereist authenticatie. Schakel authenticatie uit of verbind met een ondertekende URL.
- Een overschrijving heeft geen effect. Schakel de overeenkomende overschrijving in de Security-instellingen van de agent in.
- De speler hoort niets op WebGL. Browsers houden audio onderbroken totdat de speler interactie heeft met de pagina. Start de sessie na een klik of toetsaanslag.
- De microfoon is niet beschikbaar op WebGL. Browsers verlenen alleen microfoontoegang aan pagina’s die via HTTPS of vanaf
localhostworden aangeboden.
Meld bugs en vraag functies aan op GitHub.