The AI / news

ElevenAgents позволяет озвучить NPC в Unity

ElevenAgents позволяет озвучить NPC в Unity
3 мин чтения

Теперь игроки могут подойти к персонажу в игре на Unity и поговорить с ним вслух. Новый SDK (комплект разработчика) ElevenAgents для Unity связывает сцену с голосовым агентом ElevenLabs, который слушает игрока через микрофон, озвучивает реплики и управляет сессией через Conversation API. Тот же код работает в редакторе Unity, в десктопных версиях и в WebGL, то есть в браузере, в то время как версии для iOS, Android и XR находятся в бета-тестировании.

Запуск диалога

Для сессии требуется идентификатор агента, созданного в панели управления ElevenLabs, который содержит промпт (инструкции для агента) и голос. В примере GettingStarted, поставляемом с SDK, невидимая зона обнаружения вокруг персонажа открывает сессию при входе игрока и закрывает при выходе. Метод StartSessionAsync возвращает управление только после открытия соединения и готовности аудиоустройств, а также выбирает подходящий режим передачи для целевой платформы. EndSession ничего не делает, если сессия уже завершена.

Персонажи, которые говорят, слушают и действуют

По умолчанию голос агента воспроизводится в 2D. Передав собственный AudioSource (аудиокомпонент Unity) как OutputAudioSource, можно сделать так, чтобы голос исходил от самого персонажа. Метод GetOutputVolume() возвращает текущий уровень громкости агента от 0 до 1 на всех платформах. В примере это используется для того, чтобы заставить куб подпрыгивать во время речи; по тому же принципу можно управлять анимацией рта.

Динамические переменные заполняют слоты вроде {{mood}} в промпте и первом сообщении агента, так что каждый персонаж может отправлять свои собственные значения в начале сессии. Эти значения могут быть строками, числами или булевыми величинами. В примере желтый и красный кубы с разным настроением используют одного и того же агента. Для более существенных изменений Overrides заменяют часть конфигурации агента на время сессии, например, первое сообщение или голос. Каждое такое переопределение должно быть предварительно разрешено в настройках безопасности агента.

Метод SendContextualUpdate информирует агента о событиях в игре во время разговора, не прерывая его и не добавляя реплику, которую игрок не произносил. Клиентские инструменты, в свою очередь, позволяют агенту запускать игровой код. Инструмент определяется в настройках агента, затем в игре регистрируется обработчик с тем же именем. SDK десериализует параметры с помощью Newtonsoft Json и возвращает агенту то, что вернул обработчик. Обработчик может возвращать Awaitable для длительных задач и вызывать ClientToolException, чтобы объяснить, почему действие не удалось.

События вроде UserTranscriptReceived, AgentResponded, ModeChanged или Interrupted срабатывают в главном потоке Unity, что позволяет напрямую обновлять интерфейс. SendUserMessage позволяет отправлять текст, SetMicMuted — отключать микрофон, а SetVolume — регулировать громкость. Также возможна смена входного или выходного аудиоустройства во время сессии.

Платформы и первые шаги

На iOS и Android игрок должен разрешить доступ к микрофону до начала сессии. В WebGL в Publishing Settings должна быть включена опция Use WebAssembly.Table, иначе SDK помешает компиляции с инструкциями об ошибке. Режим Play не работает, когда активной целью является WebGL, поэтому тестировать нужно на десктопной цели. В этом случае голос передается через Web Audio API, и некоторые настройки AudioSource, такие как маршрутизация через микшер или эффект Доплера, не применяются. Сессии WebRTC игнорируют OutputAudioSource.

Для первого теста достаточно создать агента, отключить Authentication в его настройках безопасности, затем установить пакет из Git-URL, указанного в документации, зафиксировав версию v0.1.0. Далее нужно импортировать пример GettingStarted, вставить туда идентификатор агента и запустить игру. Перед любым релизом Authentication необходимо снова включить: тогда сервер разработчика запрашивает кратковременный подписанный URL (SignedUrl), который передается в игру. API-ключ ElevenLabs никогда не должен попадать в сборку. Обучение занимает около 10 минут и заканчивается кубом, который приветствует игрока. О багах и запросах функций можно сообщать в GitHub issues проекта.

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