ステータス: RunPodで検証済み. このテンプレートで、RunPodのRTX A5000、RTX 5090、B200を使ってバッチをレンダリングしました。このガイドの数字はそれらの実行に基づいています。
このワークフローにポートレート1枚とナレーションのフォルダ(20個、50個、2,000個でも)を渡すと、触らなくても1ファイルずつ順番にトーキングヘッド動画を生成します。何日でも動かし続けられます。
これは、ComfyUIがネイティブ対応しているオープンウェイトの動画モデルMiniMax H3を基にしています。以前のLTX-2.5アバター環境と比べて、約30%高速で、約30%安く、チャンク間のつなぎ目もきれいになりました。
ポイント
- 費用: 完成した768 × 768の動画約20分で、GPU代2〜3ドル。RTX 5090で完成1分あたり約0.13ドルです。
- GPU: VRAM 32GBが安全です。24GBでも動きますが、作業の数時間後に停止することがあります。
- ライセンス: 米国、EU、英国、韓国ではライセンスされておらず、Podが動く場所も含まれます。
- 仕組み: ナレーションは無音の区切りで最大10秒のチャンクに切られ、各チャンクはポートレートで始まりポートレートで終わり、元の音声とともにつなぎ直されます。
- GitHubに無料テンプレートがあり、RunPodならワンクリックです。
まずライセンスを確認する
MiniMax H3コミュニティライセンスは、米国、欧州連合、英国、韓国を対象外としています。これは自分がいる場所だけでなく、モデルが動作する場所にも適用されるため、これらの地域の外にあるRunPodのデータセンターを選んでください。これらの地域で必要なら、MiniMaxは申請によってライセンスを付与します。
ライセンスには利用規定もあります。とりわけ、本人の同意なく実在の人物になりすますことを禁じ、これを基にした商用製品は「MiniMax H3」と表示する必要があります。クライアント作業に使う前にお読みください。
必要なもの
- ポートレート。 無地で均一に照明された背景が理想です。画像内の看板、画面、文字は動きやすい傾向があります。
- ナレーション(
.wav、.mp3、.flac、.m4a、.aac、.ogg、.opus)。各ファイルが1本の動画になり、ファイル名で名付けられます。ナレーションが必要なら、私のQwen3-TTSテンプレートでオープンモデルから作れます。 - RTX 5090などのVRAM 32GBのGPU。持っていればローカルで動かせます。セットアップスクリプトにすべてのモデルとノードが載っています。
- 約100GBのストレージ。 モデルだけで約46GBあります。
どのGPUか
3種類のGPUで動かしました。Fastワークフローでの時間は次のとおりです。
| GPU | VRAM | 料金(2026年10月) | チャンクあたりのGPU時間 | 20分の動画 |
|---|---|---|---|---|
| RTX A5000 | 24GB | $0.27/時 | 7秒チャンクで約118秒 | 約5.4時間、約$1.50 |
| RTX 5090 | 32GB | $1.19/時 | 10秒チャンクで60〜70秒 | 約2.2時間、約$2.60 |
| B200 | 180GB | $7.99/時 | 10秒チャンクで約33秒 | 約1.1時間、約$8.70 |
私のおすすめはRTX 5090で、速度とコストのバランスが最も良いです。B200は約2倍速いものの時間単価が約6倍なので、請求額より締め切りが重要なときだけ意味があります。待てるなら、動画1分あたりでは最も安いのがA5000です。
本当の制約はVRAMです。24GBでも作業は動きますが、長いバッチは数時間後に停止することがあります。32GBでは、単独の作業を何日も走らせました。
これらの料金は2026年10月のRunPodの定価です。RunPodは最近値上げしており、私の「20分で2〜3ドル」は以前の料金で計測したものです(当時のB200は約6.50ドル/時でした)。
Podをセットアップする
RunPodが初めてなら、RunPod入門でアカウント、ネットワークボリューム、Podを詳しく説明しています。このテンプレート向けの要点は次のとおりです。
- 対象外の地域の外にあるデータセンターにネットワークボリュームを作成します。テンプレートのREADMEは100GBを推奨していますが、私は80GBを使い、デフォルトのモデルとレンダリング用の余裕に収まりました。ストレージは標準で1GBあたり月0.07ドル、高性能で0.14ドルなので、80GBは月5.60ドルまたは11.20ドルです。ボリュームが存在する間は課金され、前払いではありません。
- ボリュームを接続してテンプレートをデプロイします。Additional filters → CUDA Versionsで13.0を選びます。テンプレートはCUDA 13イメージで動くため、最近のドライバーを持つホストが必要です。
- 初回起動を待ちます。 約46GBをダウンロードし、10〜15分かかります。ログで確認してください。ComfyUIは準備できる前に「ready」と表示することがあり、JupyterLabは実際には準備できているのに「initializing」と表示することがあるので、開いてみてください。
ポートレートとナレーションをアップロードする
Podの接続メニューからJupyterLab(ポート8888)を開きます。ここがファイルブラウザです。
- ポートレートは
ComfyUI/input/に置きます。 - バッチ用のナレーションは
ComfyUI/input/batch_audio/に置きます。このフォルダは初回起動時にテンプレートが作成します。
複数のPodを同時に動かす場合は、バッチごとにフォルダ(batch_audio_1、batch_audio_2など)を作り、各Podのワークフローを自分のフォルダに向けます。
アップロード後、ブラウザでComfyUIを再読み込みしてください。ファイルのドロップダウンは再読み込みしないと更新されません。
ワークフローを選ぶ
ComfyUI(ポート8188)を開き、Workflowsサイドバーを開きます。品質は3段階あり、それぞれ単一ファイル用のワークフローと、フォルダ全体をレンダリングする_batch版があります。
| ワークフロー | 解像度 | ステップ | レンダリング時間 | 使いどころ |
|---|---|---|---|---|
| Fast | 768 × 768 | 4 | 1× | 良好な品質。私のおすすめ |
| Standard | 768 × 768 | 8 | 約2× | 最高品質だが、大半の作業には過剰 |
| Draft | 544 × 544 | 4 | 約0.5× | タイミングと構図のテスト専用 |
ワークフローは長時間の作業向けで、GPUを借りることでお金が節約できるのはそこです。1本のテストクリップなら、手間に見合いません。
仕組み
3つの考え方を理解すると、設定の意味が分かります。
すべてのチャンクはポートレートで始まり、ポートレートで終わります。 H3は各生成の最初と最後のフレームを、与えた画像に固定するので、長い動画でも顔がずれていきません。人物はつなぎ目ごとに同じ中立の表情に戻り、トーキングヘッドとして自然に見えます。
ナレーションは無音の区切りで切られます。 H3の1回の生成は約15秒(24fpsで362フレーム)が上限で、チャンクが固定フレームから離れるほど背景や構図がずれます。そのためテンプレートは、音声を常に無音の部分で最大10秒のチャンクに切ります。57.5秒のナレーションは7つのチャンクになり、どれも10秒を超えませんでした。
映像は音声に従います。 各チャンク分のナレーションがガイドとしてH3に渡されるため、モデルは音声を作り出すのではなく、あなたの音に合わせて口を動かします。完成した動画には、モデルの再構成ではなく、元の音声トラックが使われます。
つなぎ目はほぼ継ぎ目なしで、つなぎ目ごとにノイズパターンが目に見えて変わるLTX-2.5よりきれいです。H3には独自の癖があり、プロンプトで頼んでいなくても、まれに顔にズームインします。何時間ものレンダリングに踏み切る前に、最初のチャンクで確認してください。
見た目を記述しないと変わってしまう
これが最も重要な設定です。Talking-Head Promptノードには2つのフィールドがあります。被写体と背景で、どちらもすでにポートレートにあるものを記述します。
固定されるのは最初と最後のフレームだけで、その間はすべて生成され、プロンプトが空けたところをモデルが埋めます。服装を記述しないと、チャンクの途中で変わることがあります。
私にうまくいったルールをいくつか挙げます。
- 髪と服を平易な言葉で記述する: 例えば「a woman with long, light, wavy hair falling past her shoulders, wearing a white toga」。
- 背景はシンプルにして、そう書く: 無地の背景、柔らかく均一な照明。
- 書きすぎない。 記述が多すぎると結果が硬くなったり焼けたりします。各フィールドは具体的な言葉を数個にとどめてください。行き詰まったら、チャットボットに言い回しを絞ってもらえます。
テンプレートのプロンプトはすでにテキスト、字幕、ロゴを除外しており、モデルをテレビ番組風のグラフィックへ引っ張る「presenter」のような語を避けています。
バッチを実行する
正方形以外が必要なら解像度を設定し、**Run (Instant)**でキューに入れます。実行のたびに次の未完了チャンクをレンダリングし、フォルダ内のすべてのファイルが終わるまで続いて、自動で止まります。
まず1つのチャンクをテストしてください。 最初のチャンクはモデルの読み込みを含むため遅くなります(私の実行ではA5000で212秒、2つ目は118秒でした)。JupyterLabでoutput/h3_longform/<ナレーション名>/chunk_0000.mp4を開き、リップシンク、顔、背景の3点を確認します。ズームも衣装の変化もなければ、そのまま進められます。
再開は自動です。 300チャンク中150チャンク目でPodが止まっても、もう一度キューに入れれば151から続行されます。同じPodでも、同じボリュームに接続した新しいPodでも構いません。完成した動画もスキップされます。もう一度レンダリングするには、出力名ノードのname_suffixを変えるか、output/h3_longform/の下にあるそのフォルダを削除します。テスト中にファイル名を再利用したときは、この方法で古いチャンクを削除する必要がありました。
動画が完成すると、output/<ナレーション名>_fast.mp4として保存されます(サフィックスはワークフローに対応)。JupyterLabで右クリックしてダウンロードします。
オプション:motion carry
テンプレートには、Split Audio Chunkノードの実験的な設定motion_carryがあり、各チャンクをポートレートではなく前のチャンクの最後の数フレームから始めます。つなぎ目をさらに滑らかにできますが、デフォルトではオフで、READMEにはまだGPUで検証していないと書かれています。試す場合は、チャンクを順番にキューに入れ、新しいセッション名を使ってください。
終わったら
Podを停止します。ファイルはボリュームに残り、後で同じデータセンターの任意のGPUで再開できます。プロジェクトが終わったら、ボリュームも削除してください。さもないと課金され続けます。RunPodは、Podが接続されている間はボリュームを削除できないので、先にそのPodを終了してください。
避けたい失敗
- 対象外の地域で動かす。 自分の所在地だけでなく、データセンターを確認してください。
- 服装の記述を省く。 衣装がチャンクの途中で変わることがあります。
- 書きすぎたプロンプト。 具体的な言葉が数個のほうが、段落より優れています。
- いきなり10時間のバッチに進む。 最初のチャンクを確認してください。
- CUDAのバージョン違い。 デプロイ時にCUDA 13.0でフィルターしてください。
- ボリュームを忘れる。 停止したPodはほとんど費用がかかりませんが、忘れたボリュームは毎月課金されます。
テンプレートのRunPodリンクと私のRunPod紹介リンクから、Googleでサインアップした新規アカウントは最初の10ドルの利用後に5〜500ドル分のクレジットを受け取れ、私には少額の紹介報酬が入ります。
動画版を見る (14:43)
上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。
よくある質問
MiniMax H3のトーキングアバター動画のレンダリング費用はいくらですか?
私の実行では、完成した768 × 768の動画約20分で、GPU代が2〜3ドル、RTX 5090で完成1分あたりおよそ0.10〜0.15ドルでした。これはRunPodの以前の安い料金での数字なので、大きな作業の前に現在の料金を確認してください。
MiniMax H3にはどのくらいのVRAMが必要ですか?
32GBが安全な選択です。24GBでも動きますが、メモリ不足で長い作業が数時間後に停止することがあります。32GBのRTX 5090では、何日も停止せずに動作しました。
MiniMax H3は米国やEUで使えますか?
コミュニティライセンスでは使えません。米国、欧州連合、英国、韓国が対象外で、Podが動く場所も含まれます。これらの地域のライセンスは、申請すればMiniMaxが付与します。
MiniMax H3の1回の生成はどのくらいの長さですか?
約15秒(24fpsで362フレーム)です。テンプレートは10秒のチャンクを無音の区切りで切ってつなぎ合わせるので、ナレーション自体はどんな長さでも構いません。
バッチの途中でPodが止まったらどうなりますか?
もう一度キューに入れてください。完了したチャンクと完成した動画はスキップされ、同じPodか、同じネットワークボリュームに接続した新しいPodで、次の未完了チャンクから続行されます。
