Unity SDK
ElevenAgents SDK: distribuera anpassade, interaktiva röstagent i dina Unity-spel.
Läs översikten över ElevenAgents för en förklaring av hur ElevenAgents fungerar.
ElevenAgents Unity SDK ansluter en Unity-scen till en ElevenLabs-agent. Det fångar spelarens mikrofonljud, strömmar tillbaka agentens röst via en AudioSource och exponerar sessionen via ett enda Conversation-API som fungerar likadant i editorn, fristående desktop-spelare och WebGL-byggen.
Krav
- Unity 6.3 LTS (
6000.3.0f1) eller senare. SDK:t använder scriptable-audio-API:er som introducerades i Unity 6.3. - Api Compatibility Level inställd på .NET Standard 2.1, standardvärdet för Unity 2023.1 och senare.
- Ett ElevenLabs-konto och en agent. Skapa en i dashboarden eller följ snabbstarten.
Plattformsstöd
SDK:t väljer automatiskt transport för det aktiva byggmålet. WebRTC är endast tillgängligt på WebGL; på alla andra mål ger ConnectionType.WebRTC ett NotSupportedException.
SDK:t begär inte mikrofonbehörighet. På iOS och Android måste du själv begära den innan du startar en session.
Installation
I Unity öppnar du Window > Package Manager, väljer + > Install package from git URL och klistrar in repository-URL:en:
Package Manager installerar paketet som ElevenAgents (io.elevenlabs.agents) tillsammans med dess beroenden: Input System och Newtonsoft Json.
Paketet innehåller två exempel. Importera dem från Package Manager > ElevenAgents > Samples. QuickStart är ett enda MonoBehaviour som visar den aktiva transkriptionen. GettingStarted är en scen där du går fram och pratar, med rumsligt ljud och dynamiska variabler. Se genomgången Kom igång för en steg-för-steg-guide.
Snabbstart
I det här avsnittet lägger du till en röstagent i en tom scen. Agenten börjar prata när du går in i Play Mode och sessionen avslutas när du lämnar det.
Skapa en offentlig agent
Skapa en agent i ElevenLabs-dashboarden. I agentens Security-inställningar stänger du av Authentication så att spelet kan ansluta med endast agent-ID:t. Kopiera agent-ID:t.
För agenter som kräver autentisering, se Offentliga och privata agenter.
Lägg till ett konversationsskript
Skapa Assets/Scripts/AgentConversation.cs:
Conversation.StartSessionAsync returnerar när anslutningen är öppen och ljudenheterna är klara. EndSession är idempotent, så det är säkert att anropa den från OnDestroy även om sessionen redan har avslutats.
Offentliga och privata agenter
Offentliga agenter
Privata agenter
Skicka agent-ID:t direkt. Alla som har ID:t kan starta ett samtal med agenten.
Ange exakt en av AgentId, SignedUrl eller ConversationToken. Ange UserId för att koppla samtalet till en spelare i dina egna system.
Rumsligt ljud
Som standard spelar SDK:t agentens röst via en dold AudioSource som det skapar. Om du vill placera rösten i scenen skickar du din egen AudioSource som OutputAudioSource:
SDK:t behåller källans rumsliga mixning, avståndsdämpning, mixer-routning och position. Det återställer källans inställningar för klipp, loop och volym när sessionen avslutas.
Om du vill styra en visuell effekt med agentens röst, till exempel en munanimation, läser du conversation.GetOutputVolume() varje bildruta. Den returnerar ett värde mellan 0 och 1 på alla plattformar.
Personalisering
Använd dynamiska variabler för att fylla platshållare i agentens prompt och första meddelande, och åsidosättningar för att ersätta delar av agentkonfigurationen för en session:
Värden för dynamiska variabler måste vara strängar, tal eller booleska värden. Varje åsidosättning måste aktiveras i agentens Security-inställningar innan servern godkänner den.
Klientverktyg
Klientverktyg låter agenten utlösa åtgärder i ditt spel. Definiera verktyget i agentens inställningar och registrera sedan en hanterare med samma namn:
SDK:t deserialiserar verktygsparametrarna till TParams med Newtonsoft Json, så använd [JsonProperty] när ett parameternamn skiljer sig från egenskapsnamnet. Returvärdet serialiseras som verktygsresultatet. Returnera en Awaitable<TResult> för asynkrona hanterare. Kasta ClientToolException med en errorType för att rapportera ett specifikt fel till agenten; alla andra undantag rapporteras som ett generiskt fel.
Anrop till verktyg utan registrerad hanterare utlöser ErrorOccurred, eller UnhandledClientToolCall om du prenumererar på den.
Händelser
Prenumerera på händelser i Conversation som returneras av StartSessionAsync. SDK:t utlöser dem i Unitys huvudtråd.
Händelsen Connected utlöses innan StartSessionAsync returnerar, så läs ConversationId och Status direkt när anropet är klart. Paketets ändringslogg listar alla händelser.
Metoder
Du kan till exempel skicka spelarens aktuella plats till agenten när spelaren går in i ett nytt område:
WebGL-byggen
WebGL-byggen behöver ytterligare en Player Setting. I Player Settings > WebGL > Publishing Settings aktiverar du Use WebAssembly.Table. SDK:t misslyckar bygget med instruktioner om den här inställningen är av.
Unity har ingen scriptable audio-pipeline på WebGL, så SDK:t spelar agentens röst via webbläsarens Web Audio API och speglar volym-, positions- och rumsinställningarna för din OutputAudioSource. Därför returnerar AudioSource.GetOutputData och OnAudioFilterRead tystnad på WebGL. Använd i stället GetOutputVolume() och GetOutputByteFrequencyData().
Play Mode i editorn stöds ännu inte när det aktiva byggmålet är WebGL. Växla till ett desktop-byggmål för att testa i editorn.
Se COMPATIBILITY.md för hela kompatibilitetsmatrisen för WebGL.
Felsökning
StartSessionAsynckastarArgumentException. Ange exakt en avAgentId,SignedUrlellerConversationToken.- Sessionen kan inte ansluta med ett giltigt agent-ID. Agenten kräver autentisering. Stäng av autentisering eller anslut med en signerad URL.
- En åsidosättning har ingen effekt. Aktivera motsvarande åsidosättning i agentens Security-inställningar.
- Spelaren hör ingenting på WebGL. Webbläsare håller ljud pausat tills spelaren interagerar med sidan. Starta sessionen efter ett klick eller en tangenttryckning.
- Mikrofonen är inte tillgänglig på WebGL. Webbläsare ger bara mikrofonåtkomst till sidor som levereras över HTTPS eller från
localhost.
Rapportera buggar och begär funktioner på GitHub.