Unity SDK
ElevenAgents SDK: wdrażaj dostosowanych, interaktywnych agentów głosowych w grach Unity.
Zobacz omówienie ElevenAgents, aby dowiedzieć się, jak działa ElevenAgents.
ElevenAgents Unity SDK łączy scenę Unity z agentem ElevenLabs. Przechwytuje mikrofon gracza, przesyła głos agenta przez AudioSource i udostępnia sesję przez jedno API Conversation, które działa tak samo w edytorze, samodzielnych wersjach desktopowych i wersjach WebGL.
Wymagania
- Unity 6.3 LTS (
6000.3.0f1) lub nowsze. SDK korzysta z API scriptable audio wprowadzonych w Unity 6.3. - Api Compatibility Level ustawiony na .NET Standard 2.1, domyślne ustawienie dla Unity 2023.1 i nowszych.
- Konto ElevenLabs i agent. Utwórz go w panelu lub skorzystaj z szybkiego startu.
Obsługiwane platformy
SDK automatycznie wybiera transport dla aktywnego celu kompilacji. WebRTC jest dostępne tylko w WebGL; w każdym innym celu ConnectionType.WebRTC zgłasza NotSupportedException.
SDK nie prosi o dostęp do mikrofonu. W systemach iOS i Android poproś o niego samodzielnie przed rozpoczęciem sesji.
Instalacja
W Unity otwórz Window > Package Manager, wybierz + > Install package from git URL i wklej adres URL repozytorium:
Package Manager instaluje pakiet jako ElevenAgents (io.elevenlabs.agents) wraz z zależnościami: Input System i Newtonsoft Json.
Pakiet zawiera dwa przykłady. Zaimportuj je przez Package Manager > ElevenAgents > Samples. QuickStart to pojedynczy MonoBehaviour wyświetlający transkrypcję na żywo. GettingStarted to scena podejdź-i-porozmawiaj z dźwiękiem przestrzennym i zmiennymi dynamicznymi. Zobacz instrukcję pierwszych kroków, aby poznać przewodnik krok po kroku.
Szybki start
W tej sekcji dodasz agenta głosowego do pustej sceny. Agent zacznie mówić po wejściu w Play Mode, a sesja zakończy się po jego opuszczeniu.
Utwórz publicznego agenta
Utwórz agenta w panelu ElevenLabs. W ustawieniach Security agenta wyłącz Authentication, aby gra mogła łączyć się wyłącznie za pomocą identyfikatora agenta. Skopiuj identyfikator agenta.
W przypadku agentów wymagających uwierzytelniania zobacz Agenci publiczni i prywatni.
Agenci publiczni i prywatni
Agenci publiczni
Agenci prywatni
Przekaż identyfikator agenta bezpośrednio. Każdy, kto ma ten identyfikator, może rozpocząć rozmowę z agentem.
Ustaw dokładnie jedno z: AgentId, SignedUrl lub ConversationToken. Ustaw UserId, aby powiązać rozmowę z graczem w swoich systemach.
Dźwięk przestrzenny
Domyślnie SDK odtwarza głos agenta przez ukryty AudioSource, który tworzy. Aby umieścić głos w scenie, przekaż własny AudioSource jako OutputAudioSource:
SDK zachowuje ustawienia spatial blend, rolloff, routing miksera i pozycję źródła. Po zakończeniu sesji przywraca ustawienia clipu, pętli i głośności źródła.
Aby sterować efektem wizualnym na podstawie głosu agenta, na przykład animacją ust, odczytuj conversation.GetOutputVolume() w każdej klatce. Zwraca wartość od 0 do 1 na każdej platformie.
Personalizacja
Użyj zmiennych dynamicznych, aby wypełnić placeholdery w prompcie agenta i pierwszej wiadomości, oraz nadpisań, aby zastąpić części konfiguracji agenta w jednej sesji:
Wartości zmiennych dynamicznych muszą być ciągami znaków, liczbami lub wartościami logicznymi. Każde nadpisanie musi zostać włączone w ustawieniach Security agenta, zanim serwer je zaakceptuje.
Narzędzia klienta
Narzędzia klienta pozwalają agentowi uruchamiać działania w twojej grze. Zdefiniuj narzędzie w ustawieniach agenta, a potem zarejestruj handler o tej samej nazwie:
SDK deserializuje parametry narzędzia do TParams za pomocą Newtonsoft Json, więc użyj [JsonProperty], gdy nazwa parametru różni się od nazwy właściwości. Wartość zwracana jest serializowana jako wynik narzędzia. Dla asynchronicznych handlerów zwracaj Awaitable<TResult>. Zgłoś ClientToolException z errorType, aby przekazać agentowi konkretny błąd; każdy inny wyjątek jest zgłaszany jako błąd ogólny.
Wywołania narzędzi bez zarejestrowanego handlera wywołują ErrorOccurred albo UnhandledClientToolCall, jeśli subskrybujesz to zdarzenie.
Zdarzenia
Subskrybuj zdarzenia w obiekcie Conversation zwróconym przez StartSessionAsync. SDK wywołuje je w głównym wątku Unity.
Zdarzenie Connected jest wywoływane przed zwróceniem wyniku przez StartSessionAsync, więc po zakończeniu wywołania odczytaj bezpośrednio ConversationId i Status. Dziennik zmian pakietu zawiera pełną listę zdarzeń.
Metody
Na przykład wyślij agentowi bieżącą lokalizację gracza, gdy wejdzie on do nowego obszaru:
Wersje WebGL
Wersje WebGL wymagają jednego dodatkowego ustawienia Player. W Player Settings > WebGL > Publishing Settings włącz Use WebAssembly.Table. Jeśli to ustawienie jest wyłączone, SDK zatrzyma kompilację i wyświetli instrukcje.
Unity nie ma pipeline’u scriptable audio w WebGL, więc SDK odtwarza głos agenta przez Web Audio API przeglądarki i odzwierciedla ustawienia głośności, pozycji oraz przestrzenne twojego OutputAudioSource. W rezultacie AudioSource.GetOutputData i OnAudioFilterRead zwracają ciszę w WebGL. Zamiast tego użyj GetOutputVolume() i GetOutputByteFrequencyData().
Play Mode w edytorze nie jest jeszcze obsługiwany, gdy aktywnym celem kompilacji jest WebGL. Przełącz się na desktopowy cel kompilacji, aby testować w edytorze.
Pełną macierz zgodności WebGL znajdziesz w pliku COMPATIBILITY.md.
Rozwiązywanie problemów
StartSessionAsynczgłaszaArgumentException. Ustaw dokładnie jedno z:AgentId,SignedUrllubConversationToken.- Sesja nie może się połączyć mimo prawidłowego identyfikatora agenta. Agent wymaga uwierzytelniania. Wyłącz uwierzytelnianie lub połącz się przez podpisany adres URL.
- Nadpisanie nie działa. Włącz odpowiadające mu nadpisanie w ustawieniach Security agenta.
- Gracz nic nie słyszy w WebGL. Przeglądarki wstrzymują dźwięk, dopóki gracz nie wejdzie w interakcję ze stroną. Rozpocznij sesję po kliknięciu lub naciśnięciu klawisza.
- Mikrofon jest niedostępny w WebGL. Przeglądarki przyznają dostęp do mikrofonu tylko stronom obsługiwanym przez HTTPS lub z
localhost.
Zgłaszaj błędy i proś o funkcje na GitHubie.