NVIDIA Nemotron Open Modelsを使って幽霊屋敷を建設する
というか…
バウ!今すぐ私の芝生から離れろ!
TL;DR: MonsterHouseはハロウィーン用に私が作成したインタラクティブプロジェクションです。彼は「トリック・オア・トリート」の声を聞き、不機嫌な古い海賊船の声で答えますが、訪問者が礼儀正しく振る舞うと声が和らみます。このプロジェクトは、NVIDIAのNVIDIA Nemotron Voice Agent、NVIDIAのNemotron ASR、Nemotron 3.5 Bolt E4B 4GB、Magpie TTS Zeroshot、Audio2Face-3Dを基盤として構築されており、単一のワークステーションで動作します。
ハロウィンの日に子供たちが私の家を訪れるとき、楽しくてユニークな方法で交流してもらいたかった。家が主役となってお菓子を配ることになるが、怖いというよりは不機嫌な感じだった。どうやら私の解決策は、ガレージのドアに口を作り、文句を言うように教えることだった。
それがMonsterHouseとなった。海賊物語がある、怒ったような表情を持ち、「お願い」に対する疑わしい弱さを持つ、古びた建物だ。NVIDIA Nemotron Voice Agentが会話の基盤を提供する。Nemotron Speechが聞き取る役割を果たし、Bolt E4Bが脳となり、NVIDIA Magpie TTS Zeroshotが生声となり、NVIDIA Audio2Face-3Dが木製の口を動かす。
モンスターハウスがどのように動作するか
- リスニング: 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を使用したワークステーション上で全てをコーディネートします。
破片だらけの笑み
口が先に現れた。木製のガレージドアの板が鋭い唇になり、彼が呪われた口を開くたびに、地獄の燃える炎が裏手の車道を照らす様子を想像した。彼は古代のような、表現力のある、そして訪問者が存在することに少し怒っているように見せる必要があった。
カスタムアニメーションリグを作成するのは、制作の中で最も作業が多くかかる部分の一つでした。何度も調整してようやく、Audio2Face-3Dがアニメーションできる顔の表情形状をエクスポートできました。SkelMeshキャラクターはAutodesk Mayaで作成され、その後Unreal Engineにエクスポートされ、ドアの向こう側にバーチャル火や効果が追加されました。目も眉も瞬きもないため、彼は驚くほど省エネなモンスターです。
キャラクターの構築に関する全ての無意味な作業が進行している間、NVIDIAはNemotron Voice Agentを開発した。以前は困難だった構築工程が、今ではむしろ楽しく、反復的で、簡単になった。聞くこと、会話、発言の基盤がすぐに整った。その「家」にはもう口があった。ついに、不満を言えるものが見つかったのだ。
悪いマナーを教える
その家の性格が不機嫌なので、家に過去があると考えるストーリーを考えた。それは、嵐のような過去に悩まされる沈んだ海賊船の木材で建てられた家だというものだ。今や海の苦情には理由が生まれる。これは、不満を抱える不動産として再生した船であり、完全には満足していないのだ。
パフォーマンスを維持するためには、挨拶から別れまでの道しるべが必要で、途中でご馳走も提供しなければならない。まず、その家は「うるさいだけど、隣人に話しかけてこい!」といった言葉で訪問者を払いのける。しかし、持続力があれば彼を疲れさせることになる。「お願いします」という言葉ですぐに心を動かすことができ、 「ありがとう」という言葉で温かい別れを得ることができる。一度訪問者が彼を惹きつけたら、彼がずっと魅了されたままでありたいものだ。同じガレージのドアと二度交渉する人はいない。
声認識エージェントが本当に輝く場所です。好きなLLMを選ぶことができます。システムをオフグリッドで、完全に独立したものにしたかったので、メモリと計算資源の予算がありました。
「不機嫌になる」という指示だけでは不十分でした。マスターの会話フローに従い、訪問者が実際に言ったことに応答し、出会いの状態を追跡し、残りのパイプラインに十分な計算リソースを残す必要がありました。
12以上のモデルをテストした後、ライブ対話を提供するためにBolt E4Bを選定しました。これは、ローカル対話エージェントやインタラクティブキャラクターのために特別に設計されたオープンな小型言語モデルです。これは、会話するガレージドアにふさわしい表現です。私はデフォルトの応答モデルとして4ビット量化版(名前にある「4GB」)を使用し、比較用にはBF16 checkpointを利用しています。
今では明らかでないかもしれませんが、私はNVIDIAで働いています。そのため、Bolt E4Bが公開される前に実験することができ、他の主要なモデルであるQwen3 30B-A3BやQwen 3.6 35B-A3Bよりも低消費で優れた選択肢であることがわかりました。
Nemotron Voice Agentパイプライン内で機能し、訪問者が言うことを次の適切なためらった返答に変換します。
Boltは会話の基盤を提供します。私のプロンプト、アプリケーションロジック、そして数千件のレビューされた会話例で訓練されたLoRAアダプターが、これをこの特別な頑固なシステムに形作ります。
5000件以上の複数回の会話データセットを作成したことで、選択できるモデルごとにLoRAsを訓練することができました。一部は1時間ほどかかり、一部は数時間かかりました。ローカルエージェントがすべてを実行し、結果を評価しました。そのエージェントと非常に大きなLLMが、元々データセットを作成し、評価したのです。これは夜間や日常業務をしているときに行われました。
LoRAが設定された後、返答の連続性、タイミング、トーンを確認し、品質、繰り返し、速度の基準モデルとアダプターを比較し、その後パフォーマンスを聞く。最終的には、陽気なコンシェルジュにならずに、家が折れるべきだ。少しの抵抗は魅力の一部である。ガレージのドアと無限に議論するのはそうではない。
待ち望む声
二つのショートカット、二つの出力。作成されたテキストは新しい対話生成をスキップし、保存された音声は合成をスキップする。クリーンな言語は、観客の効果とは別にアニメーションを制御する。
文句を言うのに時間がかかりすぎると、幽霊屋敷は権威を失う。パイプラインが発するテキストは、全回答が終わる前に発せられるため、家は文章の残り部分がまだ送られてくる間に話し始めることができる。準備された挨拶やお菓子のジョークは、馴染みのある出会いをカバーする。テキストバンクによって言語モデルの作業が省け、キャッシュされた録音によって音声合成が節約される。古い不機嫌な人でさえも、練習することで利益を得る。
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はテキストを女王の英語に変換します。ゼロショット音声調整では、訓練された音声の代わりに短い参照サンプルが使用され、私の場合は不機嫌な海賊キャラクターの声が使われます。このアプリには7種類の感情があり、不機嫌で脅威的から楽しそうで喜びに満ちたまで様々です。プロンプトテンプレートによって定められ、LLMによって提供される感情タグにより、各行がどのように表現されるかが決まります。各感情には3〜10秒の異なる音声サンプルが必要なため、UIのツールタブに「自分の声をサンプリング」ボックスを追加しました。そうすることで、最も幸せな海賊や怒った海賊の声でテキストのサンプル行を読み、録音することができます。「Go」の時が来ると、Bolt E4Bが何を話すかを決定し、Magpieがそのテキストを適切な喜びや絶望感を持って発音します。
次に表示されるのはAudio2Face-3Dです。これはEpicのUnreal Engineで作成した3Dキャラクターシーンです。デフォルトモデルの重みは、清潔で中立な男性または女性の声で最適であり、深すぎたり高すぎたりしないようにします(使用ケースに応じて適切な性別のモデルを選択してください)。私は家がエコーやチャンバーを持つ非常に深く、悪魔的な声になることを望んでいました。この場合、声サンプルにはそのような劇的な厚みがないため、実際には利点となります。Audio2Face-3Dはサンプルからクリアな発音を得ており、第二の音声ストリームにより調整可能なリアルタイムのボーカルエフェクトがスピーカーから再生されます。
すべてがスムーズに動作するように、作業を2つのGPUに分けた。言語と音声モデルパイプラインはNVIDIA RTX PRO 6000 Blackwell Max-Qで、Unreal EngineグラフィックスとAudio2Face-3DはNVIDIA RTX PRO 4000 Blackwellで実行される。問題はメモリではなく、計算能力である。エージェントパイプラインがどのような処理をしているにせよ、アニメーションのフレームレートを一定に保ちたいのだ。
音声、アニメーション、効果が一緒に機能する必要があります。説得力のあるモンスターには、素早い応答以上のものが必要です。その不満が建物に関連するかのような感じが必要です。私の場合、そうです。音声の配信を同期させるための調整が可能です。設定しておくと忘れられます。(100msはAudio2Face-3Dのバッファリングに対応するものです)
モンスターには操作デスクがある
どこかの段階で、「家を話題にする」ためには、制御機能が満載したインターフェースが必要だった。キャッシュされた台詞を聴き込み、オープニングの雰囲気を調整し、会話を追跡し、声の処理を変更し、口元のアニメーションを調整できる。タブは会話、モデル選択、録音、プロンプト、パフォーマンス監視、カメラ映像、そしてサウンドボードやカスタム対話フィールドをカバーし、彼の口に言葉を入れることができる。 モデル読み込みのコントロールやUnreal Engine接続インジケータもあります。なぜなら、時にはモンスターが不機嫌でいるわけではなく、切断されているからです。
サウンドボード、カスタムライン、オープニングムーブメント、会話フローを備えたMonsterHouseのコントロールデスク。
火と光が演技に加わった。編集可能なルールにより、視覚的なシグナルが演出に結びつく。生のシグナルは言葉から始まり、録音されたパフォーマンスは保存されたタイムラインに従う。シーンを再構築することなく、気分の変化を指示することができる。
ライブモードでは「トリック・オア・トリート」の文字を実行する。デモモードでは「家」に自己説明を求める。マイクモードでは、認識、対話生成、音声合成を通さずに直接家の中から話すことができる。私のクリアな声が口を動かし、観客はその処理されたバージョンを聞く。家はこれを所有とみなす。私はこれを便利な代替手段だと考えている。
次のドアのノック
NVIDIA Nemotron 3 Nano Omniは、キャラクターに視覚的な文脈を提供するVLMです。オプションの観察者として、カメラ画像を解釈し、目に見える衣装を説明することで、キャラクターが反応できる具体的なものを持つようにします。全てを新たに作り直す必要はなく、人々を数え、追跡するために人気のあるオブジェクト検出および追跡モデルであるYOLOとByteTrackを使用しました。これらの機能を別々にすることで、オムニが各フレームをナレートする必要なく、キャラクターがグループを認識できます。
適切な馬鹿げたテストとして、私はOmniにドアの前で演技をする5匹の羊の動画を送った。その分析結果により、海賊、吸血鬼、魔女、かぼちゃ、ゴーストの衣装が特定された。これが私が家が利用したい視覚的文脈である。どうやら家畜でさえ、私よりも複雑なハロウィン計画を持っているらしい。
合成テスト再現における5人の非常に毛深いトリック・オア・トリートキャラクター。衣装のラベルは保存されたOmni分析から、箱やトラックIDは説明目的のものです。
羊は合成されたテストであり、ハロウィン・ナイトが成功した証拠ではない。本物のドライウェイグループ、衣装、夜間の照明はまだテストが必要である。検出機能により自動的に挨拶が行われるが、流行の衣装を識別し、適切に機知に富んだ返答をするには、訓練後の調整が必要かもしれない。家には目がないので、彼は訪問者に対してエコロケーションを使って認識している。私はその一つを彼に任せる。
まだやることがあります:アニメーションは常に改善可能です。完全なパフォーマンステストには本物の訪問者が必要です。そして、キャンディーもいつか自動的に提供されるでしょう。私はまだ、家族と一緒に他の地域のゴーールズを見に行く間、彼をハロウィーンに任せるという元々の目的には到達していません。しかし、それがすべての目的です。いつか子供が不機嫌な古い家に出会い、少し優しさを試してみると、その古い木材に柔らかい部分があることに気づきます。そしてキャンディーバーを与えてくれるでしょう。
自分だけの不合理なキャラクターを作ろう
MonsterHouseのコード自体は公開されていないが、使用しているすべてのNVIDIAモデルは現在入手可能であり、NVIDIA Nemotron Voice Agentがほとんどの機能を提供する。これが私が取るべき道である。
- 音声パイプラインから始めましょう。 NVIDIA Nemotron Voice Agentをクローンし、Generic Assistantの例を実行します。これにより、Nemotron Speech ASR、LLM、Magpie TTS、音声活動検出、発話終了処理が含まれるカスケードパイプラインが構成され、キャラクターが何時に話すべきかを理解します。
- Bolt E4Bを脳として活用しなさい。 Voice Agentには、クラウド、サーバー、単一GPU環境での導入に向けたBolt E4Bプロファイルが含まれています。モデルをまずbuild.nvidia.comで試用できます。短い会話形式の応答に会話モードを使用し、より簡単なやり取りでは推論機能を無効にしてください。
- 個性を与えてください。 システムプロンプトと数回の対話例から始めてください。モデルに記憶させるのではなく、アプリケーション内で「お願いします」と言った人が誰かなどの会話状態を保持してください。プロンプトでは不十分な場合は、LoRAアダプターを学習する;NVIDIA NeMo AutoModelにはBolt E4B用のLoRAレシピがあります。
- 声を与えてください。 Magpie TTS MultilingualはVoice Agentのデフォルトです。カスタムキャラクターについては、Magpie TTS Zeroshotが短い参照サンプルから動作します。build.nvidia.comで試して、自分で実行するアクセス権を申請してください。[CONFIRM: アクセスパスとリンク] 使用許可がある声のみを使用してください。
- 顔を与えてください。 NVIDIA Audio2Face-3Dは、声をキャラクターの顔アニメーションに変換します。クリーンな音声を入力し、その後効果を追加することができます。
- オプション:目を追加する。 Voice AgentのNemotron Omni Assistant Subagents例では、Nemotron 3 Nano Omniを使ってライブウェブカメラの理解が可能になります。人数を把握する必要がある場合は、軽量な人々追跡ツールと組み合わせてください。
キャッシュされた応答データベースと、よく使うフレーズの音声データを保存しておけば、遅い機械でさえ素早く反応するようになります。実際、計算能力に制限がある場合でも、Nemotron Speech ASRやPython会話ルーティング、そしてすべてのキャッシュされた音声を使ったLive版を利用する理由はありません。Bolt E4BやMagpieパイプラインを使って、オフラインで100件以上の応答を生成し、その後キャッシュを利用してショーを行うことができます。私はインタラクティブなカボチャのプロジェクトでこれを実施します。