Теперь игроки могут подойти к персонажу в вашей игре на Unity и поговорить с ним вслух. Новый Unity SDK ElevenAgents подключает сцену к голосовому агенту ElevenLabs. Он слушает через микрофон игрока, воспроизводит голос агента через AudioSource и запускает сессию через Conversation API.
Тот же код работает в редакторе, десктопных сборках, а версии для WebGL, iOS, Android и XR находятся в стадии бета-тестирования.
Начало разговора
Для сессии требуется ID агента, созданного вами на панели управления ElevenLabs, который содержит промпт и голос. В нашем примере GettingStarted, включенном в состав SDK, триггерный коллайдер вокруг персонажа открывает сессию, когда игрок подходит, и закрывает её, когда он уходит:
StartSessionAsync возвращает управление, как только соединение установлено и аудиоустройства готовы, при этом он выбирает подходящий транспорт для целевой платформы. EndSession ничего не делает, если сессия уже завершена.
Что входит в SDK
Голоса, исходящие от персонажа
По умолчанию голос агента воспроизводится в 2D. Передайте свой собственный AudioSource в качестве OutputAudioSource, и голос будет исходить непосредственно от персонажа.
GetOutputVolume() возвращает текущий уровень громкости агента от 0 до 1 на любой платформе. В примере этот метод используется для того, чтобы куб подпрыгивал во время разговора; таким же образом можно управлять анимацией рта.
Один агент, много персонажей
Динамические переменные заполняют плейсхолдеры, такие как {{mood}}, в промпте и первом сообщении агента, поэтому каждый персонаж может отправлять свои собственные значения при запуске сессии. Значения могут быть строками, числами или логическими типами. В примере желтый счастливый куб и красный злой куб используют одного и того же агента:
Для более серьезных изменений переопределения (Overrides) заменяют часть конфигурации агента для одной сессии, например, первое сообщение или голос. Каждое переопределение должно быть предварительно включено в настройках безопасности агента.
Персонажи, которые знают, что происходит
SendContextualUpdate сообщает агенту о событиях в игре прямо во время разговора, не прерывая его и не добавляя реплику, которую игрок не произносил:
Персонажи, которые действуют в игре
Клиентские инструменты (Client tools) позволяют агенту запускать игровой код. Определите инструмент в настройках агента, а затем зарегистрируйте обработчик с тем же именем:
SDK десериализует параметры инструмента с помощью Newtonsoft Json и отправляет всё, что возвращает обработчик, обратно агенту. Обработчики могут возвращать Awaitable для длительных операций и вызывать ClientToolException, чтобы сообщить агенту, почему что-то пошло не так.
События и управление
События, такие как UserTranscriptReceived, AgentResponded, ModeChanged и Interrupted, срабатывают в основном потоке Unity, поэтому вы можете обновлять интерфейс напрямую из них. Методы охватывают текстовый ввод с помощью SendUserMessage, отключение микрофона через SetMicMuted, SetVolume, данные о частоте для визуализаторов и переключение устройств ввода или вывода прямо во время сессии. В документации Unity SDK перечислены все из них.
Поддержка платформ
SDK выбирает транспорт для каждой цели.
Платформа
Статус
Транспорт
Редактор и десктоп (macOS, Windows, Linux)
Поддерживается
WebSocket
WebGL
Поддерживается
WebSocket или WebRTC
iOS, Android, XR
Бета
WebSocket
- iOS и Android: запросите разрешение на использование микрофона перед началом сессии.
- WebGL: включите Use WebAssembly.Table в настройках публикации (Publishing Settings). Если эта опция выключена, сборка завершится с ошибкой и инструкциями. Режим Play Mode не работает, если WebGL является активной целевой платформой, поэтому тестируйте на десктопной цели.
- Аудио в WebGL: голос воспроизводится через Web Audio API, поэтому некоторые настройки AudioSource, такие как маршрутизация микшера и эффект Доплера, не переносятся. Сессии WebRTC игнорируют OutputAudioSource.
В примечаниях о совместимости есть полный список.
Начало работы
- Создайте агента на панели управления ElevenLabs. Для первого теста отключите аутентификацию в настройках безопасности, чтобы игра могла подключиться только по ID агента.
- В Unity откройте Window > Package Manager > + > Install package from git URL и зафиксируйте версию релиза: https://github.com/elevenlabs/unity.git#v0.1.0
- Импортируйте пример GettingStarted, вставьте ID вашего агента и нажмите Play.
Предупреждение: перед выпуском игры включите аутентификацию обратно. Ваш собственный сервер должен запрашивать кратковременный подписанный URL, и игра будет передавать его как SignedUrl вместо AgentId. Никогда не помещайте свой API-ключ ElevenLabs в сборку игры.
Руководство по началу работы занимает около 10 минут и заканчивается созданием куба, который приветствует вас, когда вы подходите. По всем остальным вопросам читайте документацию Unity SDK и отправляйте сообщения об ошибках и запросы функций в GitHub issues.












