AIsaAIsaStudio 中文 Open AIsa Studio

NVIDIA employee builds a grumpy MonsterHouse with Nemotron Voice Agent for Halloween

Original title: nemotron-halloween

An NVIDIA employee shares MonsterHouse, a Halloween garage-door character that listens to trick-or-treaters and responds as a grumpy pirate ship, running the NVIDIA Nemotron Voice Agent on a single workstation. The pipeline uses Nemotron 3 ASR for speech, Nemotron 3.5 Bolt E4B 4GB (4-bit) with a LoRA adapter trained on over 5,000 multi-turn conversations for dialogue, Magpie TTS Zeroshot for seven-mood voice, and Audio2Face-3D plus Unreal Engine 5 for mouth animation, with Nemotron 3 Nano Omni, YOLO and ByteTrack for costume recognition and visitor tracking. Median end-of-speech-to-audio latency is 1.70 seconds (0.72 seconds cached), split across an RTX PRO 6000 Blackwell Max-Q and an RTX PRO 4000 Blackwell. The code is not packaged for release, but the post lays out a full path to rebuil…

Why it matters

The author breaks down the full stack from speech recognition and a local small model dialogue to lip-sync animation, with latency numbers that transfer to similar real-time character projects.

Read the original ↗AI Daily, Oct 31

The summary, note and analysis on this page were written by the AI Windvane agent in AIsa Studio; the original belongs to its authors.

Analysis

What happened

An NVIDIA employee described on the Hugging Face blog how they built MonsterHouse, an interactive Halloween installation: a talking, complaining garage door. Framed as a sunken pirate ship reincarnated as real estate, it listens to trick-or-treaters, softens when they say "please," and gives a warm farewell after "thank you." The whole system runs on the NVIDIA Nemotron Voice Agent on a single workstation.

Key details

The system has five stages:

  • Listening: Nemotron 3 ASR (streaming, English) turns visitor speech into text;
  • Thinking: Nemotron 3.5 Bolt E4B 4GB, an open small language model for local conversational agents, writes replies, with a LoRA adapter supplying the personality;
  • Speaking: Magpie TTS Zeroshot synthesizes speech from a short reference sample, with seven moods selected via emotion tags emitted by the LLM;
  • Animating: Audio2Face-3D drives the mouth of a character modeled in Maya and imported into Unreal Engine 5;
  • Seeing: Nemotron 3 Nano Omni describes costumes while YOLO and ByteTrack count and track visitors.

After testing more than a dozen models, the author chose Bolt E4B, noting a smaller footprint than alternatives such as Qwen3 30B-A3B. To shape the personality, a local agent plus a large LLM generated and judged a dataset of over 5,000 multi-turn conversations, used to train LoRAs for each candidate model. The author discloses working at NVIDIA, which allowed testing Bolt E4B before its public release.

On performance, median end-of-speech-to-audio is 1.70 seconds with Bolt Q4 and TTS, and 0.72 seconds with cached responses. The pipeline releases speakable text before the full answer is ready, and a bank of prepared greetings and candy jokes covers familiar encounters. Compute is split across two GPUs: the language and voice pipeline on an RTX PRO 6000 Blackwell Max-Q, Unreal and Audio2Face-3D on an RTX PRO 4000 Blackwell, to keep animation frame rates stable.

Why it matters

The project demonstrates that the open Nemotron voice agent stack can run a full listen-think-speak-animate-see loop on one workstation, offering a reference path for similar interactive characters. The author shares reusable practices: keep conversation state in the application rather than the model; train a LoRA when prompting is not enough; use cached text and recordings to save generation and synthesis time, and even run a cache-only version with ASR when compute is limited. Unfinished parts are acknowledged: testing with real visitors, detection under night lighting, and automatic candy dispensing remain unverified.

Who it affects

Most relevant to developers building locally deployed voice agents, interactive characters, or installation pieces. The recommended path—start with the voice pipeline, then add the model, voice, and face—plus the model links on build.nvidia.com and Hugging Face can be followed directly.

Original article

Building a Haunted House with NVIDIA Nemotron Open Models

Or rather…

Boo! Now Get Off My Lawn!

BlogThumbnail

TL;DR: MonsterHouse is an interactive projection I created for Halloween. He listens to trick-or-treaters, answers in the voice of a grumpy old pirate ship and softens when visitors remember their manners. He is built on the NVIDIA Nemotron Voice Agent with NVIDIA Nemotron ASR, Nemotron 3.5 Bolt E4B 4GB, Magpie TTS Zeroshot and Audio2Face-3D, and he runs on a single workstation.

I wanted the kids visiting my house at Halloween to interact in a fun and unique way. The house was going to be in charge and giving out the treats, but more grumpy than scary. Somehow, my solution was to give the garage door a mouth and teach him to complain.

That became MonsterHouse: a grumpy old building with pirate stories, a fiery grin and a suspicious weakness for “please.” NVIDIA Nemotron Voice Agent supplies the conversation foundation. Nemotron Speech does the listening, Bolt E4B is the brain, NVIDIA Magpie TTS Zeroshot is the live voice, and NVIDIA Audio2Face-3D makes the wooden mouth talk.

How Monster House works

A grin full of splinters

The mouth came first. I imagined the wooden garage door boards splitting into jagged lips, with the burning flames of hell illuminating the driveway from beyond whenever he opened his cursed mouth. He needed to look ancient, expressive and mildly offended by the existence of visitors.

fireMouthA few expressions from a house with plenty to say.

Creating a custom animation rig was one of the more labor intensive parts of the build. After bashing it into submission, I could export the facial expression shapes that Audio2Face-3D could later animate. The character SkelMesh was built in Autodesk Maya then exported into Unreal Engine where virtual fire and effects were added behind the door. With no eyes, no eyebrows and no blinking, he’s a surprisingly economical monster.

While all the nonsense of building the character was going on, NVIDIA built the Nemotron Voice Agent. What was supposed to be the hard part of the build now became rather fun, iterative and easy. I had a foundation for listening, conversation and speech right out of the box. The house already had a mouth. Now he could finally find something to complain about.

Teaching bad manners

The house needed a past as cantankerous as its personality so I devised a backstory that the house had been built from the timbers of a sunken pirate ship, haunted by its stormy past. The nautical complaints now had a reason. This was the ship, reincarnated as real estate and not entirely pleased about it.

The performance needed a guide, a path to follow from greeting to goodbye while providing treats along the way. First, the house would brush visitors off with remarks like “I’m busy grumbling, go bother the neighbors!” But persistence would wear him down. A “Please” could break through immediately, and “thank you” earned a warm farewell. Once a visitor won him over, I wanted him to stay won over. Nobody wants to negotiate with the same garage door twice.

Here is where the Voice Agent really shines. You can choose any LLM you like. Because I wanted the system to be off-grid and completely self-contained, I had a memory and compute budget.

The character needs more than a prompt that says “be grumpy.” It had to follow a master conversation flow, respond to what visitors actually said, track encounter state, and leave enough compute for the rest of the pipeline.

After testing more than a dozen models, I landed on Bolt E4B to supply the live dialogue. It is an open small language model purpose-built for local conversational agents and interactive characters, which is a fair description of a talking garage door. I use the 4-bit quantized release (the “4GB” in its name) as the default response model, with the BF16 checkpoint available for comparison.

If it’s not obvious by now, I work at NVIDIA and due to this I was able to test Bolt E4B before its public release and found it to be a solid choice, with a smaller footprint than other frontrunners- Qwen3 30B-A3B and Qwen 3.6 35B-A3B.

It works inside the Nemotron Voice Agent pipeline, turning what visitors say into the next suitably reluctant reply.

Bolt provides the conversational foundation. My prompts, application logic and LoRA adapter trained on thousands of reviewed example conversations shape it into this particular stubborn ship.

Creating a dataset of over 5000 multi-turn conversations meant I could train LoRAs for each model I felt good enough to be an option. Some took about an hour to train, some took a couple. A local agent ran everything and benchmarked the results. That agent and a very large LLM created and judged the dataset to begin with. This happened at night or while I was doing the day job.

With the LoRA in place I check the replies for continuity, timing and tone, benchmark models and adapters for quality, repetition and speed, and then listen to the performance. The house should give in eventually, without turning into a cheerful concierge. A little resistance is part of the charm. An endless argument with a garage door is not.

A voice worth waiting for

imageTwo shortcuts, two outputs. Authored text skips fresh dialogue generation, and saved audio skips synthesis. Clean speech drives the animation separately from the audience effects.

A haunted house loses authority if he takes too long to complain. The pipeline releases speakable text before an entire answer is finished, so the house can start talking while the rest of the sentence is still on its way. Prepared greetings and candy jokes cover familiar encounters: the text bank saves language-model work, and cached recordings save speech synthesis. Even an ancient grump benefits from rehearsing.

median end-of-speech-to-audio with Bolt Q4 & TTS = 1.70 seconds
median end-of-speech-to-audio cached responses = 0.72 seconds
(note: speech-end detection currently waits for 300 ms of silence )

NVIDIA Magpie TTS Zeroshot turns text into the Queen’s English. Its zero-shot voice conditioning uses a short reference sample instead of a trained voice; mine supplies the grumpy pirate character. The house has seven moods, from grumpy and menacing to amused and delighted, and emotion tags dictated by the prompt template and provided by the LLM choose how each line is delivered. Since each emotion requires a different 3-10 second voice sample I added a “Sample your Voice” block on the UI’s tool tab. I could then read and record a sample line of text in my best happy pirate or angry pirate voice. When it’s “Go” time, Bolt E4B decides what to say, and Magpie turns that text into speech with the proper delight or despair.

Next down the pipe is Audio2Face-3D and the 3d character scene I created in Epic’s Unreal Engine. The default model weights work best with a clean neutral male or female voice, not too deep, not too high (choose the appropriate gendered model for your use case). I wanted the house to have a very deep and demonic voice with echo and chamber. In this case, since my voice samples don’t have that theatrical heft, it’s actually a benefit. Audio2Face-3D gets clean speech from the samples and a second audio stream adds adjustable real-time vocal effects that play out the speakers.

To keep everything running smoothly, I split the work to a pair of GPUs: the language and voice model pipeline runs on an NVIDIA RTX PRO 6000 Blackwell Max-Q, and Unreal Engine graphics with Audio2Face-3D runs on an NVIDIA RTX PRO 4000 Blackwell. Memory isn’t the issue, compute is. I want to keep animation at a consistent frame rate regardless of what processing the agent pipeline is doing.

Voice, animation and effects have to land together. A convincing monster needs more than a fast answer; it needs to sound as though the complaint belongs to the building. In my case, he does. Tweaks to sync audio delivery are available. I’ve found I could set them and forget them. (100ms compensates for the Audio2Face-3D buffering)

The monster has a control desk

Somewhere along the way, “make the house talk” required an interface full of controls. I can audition cached lines, adjust the opening mood, follow the conversation, change the voice treatment and tune the mouth animation. Tabs cover conversations, model selection, recordings, prompts, performance monitoring and camera feeds, and a soundboard and custom dialogue field let me put words in his mouth. There are also model-loading controls and an Unreal Engine connection indicator, because sometimes the monster is not sulking. He is disconnected.

imageThe MonsterHouse control desk, with the soundboard, custom lines, opening mood and conversation flow.

The fire and glow have joined the act. Editable rules tie visual cues to delivery: live cues begin with speech, while recorded performances can follow a saved timeline. I can direct a change of mood without rebuilding the scene.

Live mode runs the trick-or-treat character. Demo mode persuades The house to explain himself. Microphone mode lets me speak through the house directly, bypassing recognition, dialogue generation and speech synthesis. My clean voice drives the mouth; the audience hears the treated version. The house considers this possession. I consider it a useful fallback.

The next knock at the door

NVIDIA Nemotron 3 Nano Omni is a VLM that gives the house visual context. As an optional observer, it interprets camera images and describes visible costumes so the character has something specific to react to. Not looking to reinvent every wheel, I chose the popular object detection and tracking models YOLO and ByteTrack to count and track people currently in view. Keeping those jobs separate lets the house notice a group without asking Omni to narrate every frame.

For a suitably ridiculous test, I gave Omni a video of five costumed sheep at the door. Its saved analysis identified the pirate, vampire, witch, pumpkin and ghost outfits. That is the sort of visual context I want the house to use. Apparently even livestock have more elaborate Halloween plans than I do.

imageFive very woolly trick-or-treaters in a synthetic test replay. Costume labels come from the saved Omni analysis; boxes and track IDs are illustrative.

The sheep are a synthetic test, not evidence of a successful Halloween night. Real driveway groups, costumes and night lighting still need testing. Detection does trigger automatic greetings, but I fear trendy costume identification and suitably witty retorts may need some post training. Since the house has no eyes, he calls his visitor awareness echolocation. I am letting him have that one.

There is more to do: the animation can always improve, complete performance testing needs real visitors, and candy will one day be provided automatically. I have not yet reached the original goal of leaving him to run Halloween while I head off with my family to see the other neighborhood ghouls. But that is still the point of all this. One day a child will meet a grumpy old house, try a little kindness and discover that the old timber has a soft spot. And gives out candy bars.

Build your own unreasonable character

The MonsterHouse code itself is not packaged for release, but every NVIDIA model it uses is available today, and the NVIDIA Nemotron Voice Agent gets you most of the way. This is the path I would follow.

  1. Start with the voice pipeline. Clone the NVIDIA Nemotron Voice Agent and run the Generic Assistant example. You get a cascaded pipeline with Nemotron Speech ASR, an LLM and Magpie TTS, plus voice activity detection and end-of-utterance handling, so your character knows when to talk.
  2. Make Bolt E4B the brain. The Voice Agent includes Bolt E4B profiles for cloud, server and single-GPU deployments. You can try the model first on build.nvidia.com.Try conversational mode for short, speech-ready replies, and disable reasoning for simpler exchanges.
  3. Give it a personality. Start with a system prompt and a few connected example dialogues. Keep conversation state, such as who has already said please, in your application instead of asking the model to remember it. When prompting is not enough, train a LoRA adapter; NVIDIA NeMo AutoModel has a LoRA recipe for Bolt E4B.
  4. Give it a voice. Magpie TTS Multilingual is the Voice Agent default. For a custom character, Magpie TTS Zeroshot works from a short reference sample. Try it on build.nvidia.com, and request access to run it yourself. [CONFIRM: access path and link] Use only voices you have permission to use.
  5. Give it a face. NVIDIA Audio2Face-3D turns speech into facial animation for your character. Feed it clean speech and add effects afterward.
  6. Optional: give it eyes. The Voice Agent’s Nemotron Omni Assistant Subagents example adds live webcam understanding with Nemotron 3 Nano Omni. Pair it with a lightweight people tracker if you need counts.

A cached response bank and saved audio for your most common lines will make even a slow monster feel quick. In fact, if you happen to be limited by computing power, there is no reason why you can’t have a Live version that just uses Nemotron 3 ASR, a python conversation router, with all cached audio. You can use the Bolt E4B and Magpie pipeline to generate 100s of responses offline, then use the cache for the show. I’ll be doing this for the interactive pumpkins.

Resources

The original belongs to Hugging Face Blog and its authors and is reproduced here for reading. To have it removed, write to support@aisa.one.