Sakhanda Wire
NVDA — MSFT — GOOGL — META — AMZN —
← К новостям

nemotron-halloween

nemotron-halloween
Для бизнеса + Статья
Опубликовано 30 октября 2026 года
Создание дома с привидениями на основе открытых моделей NVIDIA Nemotron

Или, точнее…

Бу! А теперь убирайся с моего газона!

BlogThumbnail

Кратко: MonsterHouse — это интерактивная проекция, которую я создал к Хэллоуину. Он слушает участников традиции «сладость или гадость», отвечает голосом сварливого старого пиратского корабля и смягчается, когда посетители не забывают о хороших манерах. Он построен на основе NVIDIA Nemotron Voice Agent с использованием Nemotron ASR, Nemotron 3.5 Bolt E4B 4GB, Magpie TTS Zeroshot и Audio2Face-3D от NVIDIA и работает на одной рабочей станции.

Я хотел, чтобы дети, которые придут к моему дому на Хэллоуин, могли взаимодействовать с ним весёлым и необычным способом. Дом должен был распоряжаться происходящим и раздавать угощения, но скорее ворчать, чем пугать. В итоге я решил приделать гаражным воротам рот и научить их жаловаться.

Так появился MonsterHouse: сварливое старое здание с пиратскими историями, огненной ухмылкой и подозрительной слабостью к слову «пожалуйста». NVIDIA Nemotron Voice Agent обеспечивает основу для разговора. Nemotron Speech слушает, Bolt E4B думает, NVIDIA Magpie TTS Zeroshot озвучивает ответы в реальном времени, а NVIDIA Audio2Face-3D заставляет деревянный рот говорить.

Как работает Monster House

  • Слушает: NVIDIA Nemotron Speech ASR преобразует речь посетителей в текст. [ПОДТВЕРЖДЕНО: nemotron-speech-streaming-en-0.6b.q8_0.gguf ]
  • Думает: NVIDIA Nemotron 3.5 Bolt E4B 4GB — открытая малая языковая модель для разговорных агентов — пишет каждый ответ. Адаптер LoRA задаёт характер.
  • Говорит: NVIDIA Magpie TTS Zeroshot озвучивает каждый ответ на основе короткого эталонного образца голоса персонажа.
  • Анимируется: NVIDIA Audio2Face-3D превращает чистую речь в анимацию рта в Unreal Engine 5.
  • Видит: NVIDIA Nemotron 3 Nano Omni описывает костюмы, а YOLO и ByteTrack считают посетителей и отслеживают их перемещения.
  • Запускается: NVIDIA Nemotron Voice Agent координирует всё на одной рабочей станции с NVIDIA RTX PRO 6000 Blackwell Max-Q и NVIDIA RTX PRO 4000 Blackwell.

Ухмылка, полная заноз

Сначала появился рот. Я представлял деревянные доски гаражных ворот, раскалывающиеся в зазубренные губы, а языки адского пламени, горящие за проклятым ртом, освещающие подъезд всякий раз, когда он открывается. Он должен был выглядеть древним, выразительным и слегка оскорблённым самим существованием посетителей.

fireMouthНесколько выражений дома, которому есть что сказать.

Создание собственной анимационной оснастки стало одной из самых трудоёмких частей проекта. После того как я заставил её работать, я смог экспортировать формы лицевых выражений, которые впоследствии мог анимировать Audio2Face-3D. Модель персонажа была создана в Autodesk Maya, а затем экспортирована в Unreal Engine, где за воротами добавили виртуальный огонь и эффекты. Без глаз, бровей и моргания он оказался удивительно экономным монстром.

Пока продолжалась вся эта бессмыслица с созданием персонажа, NVIDIA создала Nemotron Voice Agent. То, что должно было стать самой сложной частью проекта, неожиданно превратилось в увлекательный, итеративный и простой процесс. У меня из коробки появилась основа для слушания, разговора и речи. У дома уже был рот. Теперь он наконец мог найти, на что пожаловаться.

Учимся дурным манерам

Дому требовалось прошлое, столь же сварливое, как его характер, поэтому я придумал предысторию: дом был построен из брёвен затонувшего пиратского корабля, преследуемого своим бурным прошлым. Теперь у морских жалоб появилась причина. Это был корабль, переродившийся в недвижимость и не слишком довольный таким превращением.

Выступлению требовался сценарий — путь от приветствия до прощания, в котором по ходу дела раздаются угощения. Сначала дом должен был отмахиваться от посетителей репликами вроде «Я занят ворчанием, идите приставайте к соседям!» Но настойчивость постепенно его утомляла бы. Слово «пожалуйста» могло сразу пробить его защиту, а «спасибо» приносило тёплое прощание. После того как посетитель завоёвывал его расположение, я хотел, чтобы дом продолжал хорошо к нему относиться. Никто не хочет дважды договариваться с одними и теми же гаражными воротами.

Именно здесь Voice Agent по-настоящему раскрывается. Можно выбрать любую понравившуюся LLM. Поскольку я хотел, чтобы система работала автономно и полностью самостоятельно, у меня был ограниченный бюджет памяти и вычислительных ресурсов.

Персонажу недостаточно промпта «будь сварливым». Он должен был следовать основному сценарию разговора, реагировать на реальные слова посетителей, отслеживать состояние встречи и оставлять достаточно вычислительных ресурсов для остальных этапов конвейера.

Протестировав более дюжины моделей, я остановился на Bolt E4B для ведения диалога в реальном времени. Это открытая малая языковая модель, специально созданная для локальных разговорных агентов и интерактивных персонажей, что вполне подходит для говорящих гаражных ворот. По умолчанию я использую 4-битную квантованную версию («4GB» в названии), а контрольная точка BF16 доступна для сравнения.

Если это ещё не очевидно, я работаю в NVIDIA, поэтому смог протестировать Bolt E4B до публичного релиза и обнаружил, что это надёжный вариант с меньшими требованиями к ресурсам, чем у других лидирующих моделей — Qwen3 30B-A3B и Qwen 3.6 35B-A3B.

Модель работает внутри конвейера Nemotron Voice Agent, превращая слова посетителей в следующий подходяще неохотный ответ.

Bolt обеспечивает основу разговора. Мои промпты, логика приложения и адаптер LoRA, обученный на тысячах проверенных диалогов, превращают её в именно этот упрямый корабль.

Создание набора данных из более чем 5000 многоходовых диалогов позволило мне обучить LoRA для каждой модели, которую я счёл достаточно хорошей для использования. Некоторые обучались около часа, другие — пару часов. Локальный агент запускал всё и сравнивал результаты. Изначально этот агент и очень большая LLM создали и оценили набор данных. Всё это происходило ночью или во время моей основной работы.

После добавления LoRA я проверяю ответы на связность, синхронность и соответствие тону, сравниваю модели и адаптеры по качеству, повторяемости и скорости, а затем слушаю результат. В конце концов дом должен сдаться, но не превратиться в весёлого консьержа. Небольшое сопротивление — часть очарования. Бесконечный спор с гаражными воротами — нет.

Голос, которого стоит дождаться

imageДва способа сэкономить время, два результата. Авторский текст пропускает генерацию нового диалога, а сохранённое аудио — синтез. Чистая речь отдельно управляет анимацией, а эффекты накладываются для зрителей.

Дом с привидениями теряет авторитет, если слишком долго собирается с духом, чтобы пожаловаться. Конвейер выдаёт текст, готовый к озвучиванию, ещё до завершения всего ответа, поэтому дом может начать говорить, пока остальная часть предложения ещё формируется. Заготовленные приветствия и шутки про конфеты подходят для знакомых ситуаций: банк текстов экономит работу языковой модели, а кэшированные записи — синтез речи. Даже древнему ворчуну полезно порепетировать.

медианное время от окончания речи до аудио с Bolt Q4 и TTS = 1,70 секунды
медианное время от окончания речи до аудио для кэшированных ответов = 0,72 секунды
(примечание: обнаружение окончания речи сейчас ждёт 300 мс тишины)

NVIDIA Magpie TTS Zeroshot превращает текст в речь на языке королевы. Для голосового управления без дообучения используется короткий эталонный образец вместо обученного голоса; мой образец задаёт сварливого пиратского персонажа. У дома семь настроений — от сварливого и угрожающего до весёлого и восхищённого, — а теги эмоций, заданные шаблоном промпта и предоставленные LLM, определяют, как будет произнесена каждая реплика. Поскольку для каждой эмоции нужен отдельный образец голоса длительностью от 3 до 10 секунд, я добавил на вкладку инструментов интерфейса блок «Примерить голос». Затем я мог прочитать и записать образец текста своим лучшим голосом счастливого или сердитого пирата. Когда наступает время «вперёд», Bolt E4B решает, что сказать, а Magpie превращает этот текст в речь с соответствующей радостью или отчаянием.

Следующий этап — Audio2Face-3D и сцена 3D-персонажа, созданная мной в Unreal Engine от Epic. Стандартные веса модели лучше всего работают с чистым нейтральным мужским или женским голосом — не слишком низким и не слишком высоким (выберите модель соответствующего пола для своего сценария). Я хотел, чтобы у дома был очень глубокий демонический голос с эхом и эффектом помещения. В данном случае то, что мои образцы голоса не обладают такой театральной мощью, оказалось преимуществом. Audio2Face-3D получает из образцов чистую речь, а второй аудиопоток добавляет настраиваемые голосовые эффекты в реальном времени, которые воспроизводятся через динамики.

Чтобы всё работало плавно, я разделил нагрузку между двумя GPU: конвейер языковой и голосовой моделей работает на NVIDIA RTX PRO 6000 Blackwell Max-Q, а графика Unreal Engine вместе с Audio2Face-3D — на NVIDIA RTX PRO 4000 Blackwell. Память не является проблемой, проблема — вычисления. Я хочу сохранять стабильную частоту кадров анимации независимо от того, какую обработку выполняет конвейер агента.

Голос, анимация и эффекты должны звучать одновременно. Убедительному монстру недостаточно быстрого ответа — он должен звучать так, будто жалоба принадлежит самому зданию. В моём случае так и есть. Доступны настройки синхронизации аудио. Я обнаружил, что могу настроить их и больше не трогать. (100 мс компенсируют буферизацию Audio2Face-3D.)

У монстра есть пульт управления

В какой-то момент задача «заставить дом говорить» потребовала интерфейса, переполненного элементами управления. Я могу прослушивать кэшированные реплики, менять начальное настроение, следить за разговором, изменять обработку голоса и настраивать анимацию рта. Вкладки охватывают разговоры, выбор модели, записи, промпты, мониторинг производительности и видеопотоки с камер, а звуковая панель и поле пользовательского диалога позволяют вкладывать ему слова в рот. Есть также элементы управления загрузкой моделей и индикатор подключения к Unreal Engine, потому что иногда монстр не хандрит. Он отключён.

imageПульт управления MonsterHouse: звуковая панель, пользовательские реплики, начальное настроение и сценарий разговора.

Огонь и свечение тоже подключились к представлению. Редактируемые правила связывают визуальные сигналы с подачей: живые сигналы начинаются вместе с речью, а записанные выступления могут следовать сохранённой временной шкале. Я могу направить смену настроения, не перестраивая сцену.

В живом режиме работает персонаж для «сладости или гадости». В демонстрационном режиме дом объясняет себя. Режим микрофона позволяет мне говорить через дом напрямую, минуя распознавание, генерацию диалога и синтез речи. Мой чистый голос управляет ртом, а зрители слышат обработанную версию. Дом считает это одержимостью. Я считаю это полезным запасным вариантом.

Следующий стук в дверь

NVIDIA Nemotron 3 Nano Omni — это VLM, которая даёт дому визуальный контекст. В качестве дополнительного наблюдателя она интерпретирует изображения с камер и описывает видимые костюмы, чтобы персонажу было на что конкретно реагировать. Не желая изобретать каждое колесо заново, я выбрал популярные модели обнаружения и отслеживания объектов YOLO и ByteTrack для подсчёта и отслеживания людей в поле зрения. Разделение этих задач позволяет дому замечать группу, не заставляя Omni описывать каждый кадр.

Для достаточно нелепого теста я дал Omni видео с пятью овцами в костюмах у двери. Сохранённый анализ определил костюмы пирата, вампира, ведьмы, тыквы и призрака. Именно такой визуальный контекст я хочу использовать в доме. Похоже, даже домашний скот строит более замысловатые планы на Хэллоуин, чем я.

imageПять очень шерстистых участников «сладости или гадости» в синтетическом тестовом воспроизведении. Подписи костюмов взяты из сохранённого анализа Omni; рамки и идентификаторы треков приведены для иллюстрации.

Овцы — это синтетический тест, а не свидетельство успешной ночи Хэллоуина. Реальные группы людей на подъездной дорожке, костюмы и ночное освещение ещё предстоит протестировать. Обнаружение действительно запускает автоматические приветствия, но я опасаюсь, что определение модных костюмов и достаточно остроумные ответы потребуют дополнительного обучения. Поскольку у дома нет глаз, он называет осведомлённость о посетителях эхолокацией. Я позволяю ему считать именно так.

Ещё многое предстоит сделать: анимацию всегда можно улучшить, полноценное тестирование производительности требует реальных посетителей, а конфеты однажды будут выдаваться автоматически. Мне ещё не удалось достичь первоначальной цели — оставить его работать на Хэллоуин, пока я отправляюсь с семьёй посмотреть на других упырей по соседству. Но именно в этом и заключается смысл всего проекта. Однажды ребёнок встретит сварливый старый дом, проявит немного доброты и обнаружит, что в старых брёвнах есть мягкое место. И что дом раздаёт шоколадные батончики.

Создайте собственного неразумного персонажа

Сам код MonsterHouse не подготовлен к публикации, но все используемые им модели NVIDIA уже доступны, а NVIDIA Nemotron Voice Agent поможет пройти большую часть пути. Вот каким маршрутом я бы воспользовался.

  1. Начните с голосового конвейера. Клонируйте NVIDIA Nemotron Voice Agent и запустите пример Generic Assistant. Вы получите каскадный конвейер с Nemotron Speech ASR, LLM и Magpie TTS, а также обнаружением голосовой активности и обработкой конца высказывания, благодаря чему ваш персонаж будет знать, когда говорить.
  2. Сделайте Bolt E4B мозгом. Voice Agent включает профили Bolt E4B для облачных, серверных и однографических развертываний. Сначала можно попробовать модель на build.nvidia.com. Попробуйте разговорный режим для коротких ответов, готовых к озвучиванию, и отключите рассуждения для более простых обменов репликами.
  3. Придайте ему характер. Начните с системного промпта и нескольких связанных примеров диалогов. Храните состояние разговора — например, кто уже сказал «пожалуйста», — в приложении, а не просите модель запоминать это. Когда одного промпта недостаточно, обучите адаптер LoRA; в NVIDIA NeMo AutoModel есть рецепт LoRA для Bolt E4B.
  4. Дайте ему голос. Magpie TTS Multilingual используется в Voice Agent по умолчанию. Для собственного персонажа Magpie TTS Zeroshot работает с коротким эталонным образцом. Попробуйте его на build.nvidia.com и запросите доступ для самостоятельного запуска. [ПОДТВЕРДИТЬ: путь и ссылку для доступа] Используйте только голоса, на которые у вас есть разрешение.
  5. Дайте ему лицо. NVIDIA Audio2Face-3D превращает речь в лицевую анимацию вашего персонажа. Подавайте на вход чистую речь, а эффекты добавляйте после этого.
  6. Необязательно: дайте ему глаза. Пример Nemotron Omni Assistant Subagents в Voice Agent добавляет понимание изображения с веб-камеры в реальном времени с помощью Nemotron 3 Nano Omni. Если вам нужен подсчёт, подключите лёгкий трекер людей.

Банк кэшированных ответов и сохранённое аудио для наиболее частых реплик позволят даже медленному монстру казаться быстрым. Более того, если ваши вычислительные ресурсы ограничены, ничто не мешает вам создать живую версию, использующую только Nemotron Speech ASR, маршрутизатор диалога на Python и полностью кэшированное аудио. Можно сгенерировать сотни ответов офлайн с помощью конвейера Bolt E4B и Magpie, а затем использовать кэш во время представления. Именно так я поступлю с интерактивными тыквами.

Ресурсы

Модели, упомянутые в этой статье 3

Сообщество

Загружайте изображения, аудио и видео, перетаскивая их в поле ввода текста, вставляя или нажимая здесь.
Нажмите или вставьте сюда, чтобы загрузить изображения

· Зарегистрируйтесь или войдите, чтобы оставить комментарий

Модели, упомянутые в этой статье 3

Переведено автоматически с английского. Оригинал статьи — по ссылке ниже.

Впервые опубликовано изданием Hugging Face

Читать оригинал на Hugging Face ↗

Текст и изображения принадлежат Hugging Face и приводятся здесь с указанием авторства и ссылкой на оригинальную публикацию.

← К новостям

Ещё новости

Все последние новости