【動画生成AI】Wan2.2で無限の長尺動画を作れるSVI v2.0 Proの導入方法とワークフローの配布【Wan2.2】

2/9 ノード接続などに誤りがあったため、ワークフローを修正しました。
5/4 Nodes 2.0だと正常に動作しない為、従来の表示に切り替える方法を追記しました。

Wan2.2、モデルやLoRAも増えてきて様々なジャンルの動画が作りやすくなってきています。

たくさんの動画を作っていると、こう思う時が来ると思います。
「長い動画を作りたい」
と。

しかし、通常の生成では5秒前後の動画しか作れなかったり、前動画の最終フレームをスタート画像として指定して長尺動画を作成しても、顔や服が変わってしまったりと一貫性を保てない問題があります。

そうした問題を解決し長尺動画を作成する技術がSVI (Stable Video Infinity)です。

今回の記事では、このSVI v2.0 ProをWan2.2で使う方法の解説とワークフローの配布を行います。

生成動画比較

まずは、SVI v2.0 Proを用いて生成した10秒の動画と、通常のフローで生成した5秒の動画2本を繋ぎ合わせた計10秒の動画を比較していきます。

このSVI v2.0 Proを導入しようか迷っている方は参考にしてください。

通常フローでの動画

まずは腕を動かす動画。

これはSVI v2.0 Proを使わなくてもいい感じに出来ていますね。

次は後ろを向いてから前を向き直す動画です。

振り返ると顔が変わっていました。

このように、フレームからはみ出した部分が再描画される場合、通常のフローでは大幅に変わってしまいます。

スポンサーリンク

SVI v2.0 Proを使用したフローでの動画

通常フローでは大幅に変わってしまった振り返り、SVI v2.0 Proではどうでしょうか。

かなり一貫性を保っていますね。

1度フレームから外れて、再度戻ってくるような動画を作成する場合はSVI v2.0 Proが良いですね。

導入方法

それでは導入方法を説明していきます。使用するツールはComfyUIです。
基本的なComfyUIのセットアップは済んでいることを前提として進めていきます。

必要モデルのダウンロード

Wan2.2 HighNoise 保存場所 : ComfyUI/models/diffusion_models
wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors

Wan2.2 LowNoise 保存場所 : ComfyUI/models/diffusion_models
wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors

SVI用LoRA HighNoise 保存場所 : ComfyUI/models/loras
SVI_v2_PRO_Wan2.2-I2V-A14B_HIGH_lora_rank_128_fp16.safetensors

SVI用LoRA LowNoise 保存場所 : ComfyUI/models/loras
SVI_v2_PRO_Wan2.2-I2V-A14B_LOW_lora_rank_128_fp16.safetensors

text encoder 保存場所 : ComfyUI/models/text_encoders
umt5_xxl_fp8_e4m3fn_scaled.safetensors

vae 保存場所 : ComfyUI/models/vae
wan_2.1_vae.safetensors

基本的にはこの6つです。もし足りないモデルが合った場合は、モデル名で検索すれば大抵はヒットするのでそちらからダウンロードしてください。

また、Wan2.2 High/Low モデルはベースモデルを載せましたが、civitaiなどで配布されているカスタムモデルを使用した方が生成される動画のクオリティが高くなる可能性があります。

スポンサーリンク

必要カスタムノード

こちらは後述するワークフローの読み込んだ際に不足しているカスタムノードが一覧で出てくると思うので、そちらを確認しながらインストールしてください。

Nodes 2.0から従来の表示方法へ切り替える方法

本記事で配布するワークフローを使用する場合、Nodes 2.0表示だと正常に動作しない為、従来の表示方法へ切り替えてください。

画面左上のCマークをクリックし、表示される一覧の「Nodes 2.0」のトグルを切り替えてください。

ワークフローの配布

それではワークフローを配布します。ワークフローは一気に最大4つの動画を生成し最大約20秒の動画を作成する「Wan22-SVI-Pro-v2-OnlineGamerNikki.json」続きを1動画ずつ生成していく「Wan22-SVI-Pro-v2PlusOne-OnlineGamerNikki.json」の2つを配布します。

Wan22-SVI-Pro-v2-OnlineGamerNikki.json はデフォルトでは最大約20秒の動画の生成ですが、ワークフローに少し変更を加えることで増やすことも出来ます。

・Wan22-SVI-Pro-v2-OnlineGamerNikki.json

Wan22-SVI-Pro-v2-OnlineGamerNikki.json

・Wan22-SVI-Pro-v2PlusOne-OnlineGamerNikki.json

Wan22-SVI-Pro-v2PlusOne-OnlineGamerNikki.json

配布ワークフローの解説

Wan22-SVI-Pro-v2-OnlineGamerNikki.json の説明

まずは一気に最大4つの動画を生成する「Wan22-SVI-Pro-v2-OnlineGamerNikki.json」の解説から行います。

ワークフローの全体図は以下の通りです。

値を変更する箇所は基本的に赤で囲ったグループに入っている緑色のノードだけです。

まずは「モデル読み込み」グループから説明していきます。

ここはグループ名の通り、モデルを設定するグループです。

Diffusion Model Loader KJ」ノードでWan2.2のモデルを指定します。上側のノードがHighモデル、下のがLowモデルです。

LoRAローダーモデルのみ」ノードは緑色ではありませんが、初回のみ設定が必要です。このノードにSVI v2.0 Pro用のLoRAを設定してください。上側がHigh、下がLow用です。

Power Lora Loader (rgthree)」ノードでLoRAの指定を行えます。LoRAを使う場合はここで追加してください。ここも同じく、上がHigh、下がLowです。

CLIPを読み込む」ノードは緑色ではありませんが、初回のみ設定が必要です。このノードにClipモデルを設定します。

VAEを読み込む」ノードは緑色ではありませんが、初回のみ設定が必要えす。このノードにVAEモデルを設定します。

これで「モデル読み込み」グループの説明を終わります。

次に「各種設定」グループの説明です。

まずは緑色のノードから説明していきます。

画像を読み込む」ノードに、開始画像を指定します。

プロンプト1~4(自動翻訳)」ノードに、プロンプトを入力します。日本語で入力しても自動で英語に翻訳されます。プロンプト1に1番目に生成される動画のプロンプト、プロンプト2に2番目に生成される動画のプロンプトというように入力していきます。

ランダムノイズ」ノードにシード値を設定します。

Step」ノードにステップ数を設定します。使用するモデルや高速化LoRAなどを使用する場合はこちらの数値を変更してください。

HighSamplerSettings」ノードで、ハイモデル用のサンプラーやCFG値を設定できます。

LowModelSettings」ノードは、HighSamplerSettingsのローモデル用です。

1~4動画時間(秒) / FPS」ノードで、動画の長さとフレームレートを指定できます。フレームレートは全ての生成で固定になっていますが、動画の長さはそれぞれで指定出来るようになっています。

ハイモデルとローモデルで違うモデルを使う事を想定して、サンプラーやCFG値の設定をハイモデル用とローモデル用で分けましたが、別なモデルを使う場合でも設定値は同じで良いかもしれません。

次に赤色のノードで説明です。

Fast Muter (rgthree)」ノードで生成する動画の解像度を指定できます。任意の解像度を選択する場合は下の「任意の解像度」ノードに数値を入力してください。

生成」ノードで生成する動画の数を変更出来ます。例えば3本(約15秒)の動画を作成する場合は1stG~3ndGまでをONにしてください。

これで「各種設定」グループの説明を終わります。

残りのグループは簡単に説明していきます。

1stG~4thGグループでは生成を行っています。そのグループで生成した動画を確認する為のノードも配置してあります。必要なければ削除してください。もし5本以上の動画を生成したい場合はこのグループを増やして適切にノードを繋げば出来ます

「結果」グループで生成した動画が全て繋がった動画を確認できます。

以上でWan22-SVI-Pro-v2-OnlineGamerNikki.jsonの説明を終わります。

スポンサーリンク

Wan22-SVI-Pro-v2PlusOne-OnlineGamerNikki.json の説明

先ほどのワークフローでは一気に動画を4本生成して約20秒の動画を作成するワークフローでしたが、こちらのワークフローでは続きの動画を1本ずつ生成していくワークフローとなります。

モデルやLoRAを切り替えて生成したい場合はこちらのワークフローをおすすめします。

使い方の説明は基本的に先ほどのワークフローと同じなので、違う所だけを説明します。

違う箇所は赤枠で囲った部分だけです。

PrevVideoLoad」ノードに、続きを生成したい動画を指定してください。

TotalVideoLoad」ノードに、今まで生成した動画全てが繋がっているトータルの動画を指定してください。

以上でこちらのワークフローの説明は終わりです。

最後に

色々な技術が出てきて、ローカルでの動画生成AIも本格的な創作に使えるようになって来ましたね。

それでは!

コメント

  1. パタパタ より:

    こんにちは。有意義な情報とワークフローのアップ大変助かります。 Wan22-SVI-Pro-v2-OnlineGamerNikki.jsonで生成しようとすると以下のエラーが出ます。Compex types (LATENT/IMAGE) need to reference their width/height, e.g. a.width またWan22-SVI-Pro-v2PlusOne-OnlineGamerNikki.jsonで生成した動画が砂嵐になってしまいます。どうすればいいでしょうか。よろしくお願いいたします。

    • ミスー より:

      ワークフロー「Wan22-SVI-Pro-v2-OnlineGamerNikki.json」のエラーについてですが、原因は特定出来ませんでしたが、サブグラフの3rd,4th GenVideoのlenghtに繋げているgetノードを一度削除してから再度設置し同じ名前のsetノードを参照したらエラーは出なくなりました。
      「Wan22-SVI-Pro-v2PlusOne-OnlineGamerNikki.json」こちらのワークフローで生成された動画が砂嵐になる原因は、サブグラフのGenVideo内で基本スケジューラー (Low) ノードのステップの項目に、サブグラフで取得しているstepの値が接続されていなかったのが原因です。

      配布したワークフローを修正しましたので、お手数ですが再ダウンロード、または上記の修正をダウンロード済みのワークフローに適応してください。

  2. サンサン より:

    素晴らしいワークフローを共有していただきありがとうございます!

    Wan22-SVI-Pro-v2-OnlineGamerNikki.jsonのワークフローについて質問です。
    こちらの環境で実行させていただいているのですが、2ndGまでは完璧に動作するものの、3rdGに入った段階で処理が終了してしまい、3rdGや4thGをONにしても実行されない状況です。

    3rdG を正常にキックさせるために、特に注意すべき接続ポイントや、特定のノード設定などはありますでしょうか?

    お忙しいところ恐縮ですが、もしアドバイスをいただければ幸いです。

    • ミスー より:

      ご報告ありがとうございます。

      3rdG,4thGのサブグラフ内にある「基本スケジューラー (Low)」ノードのモデル入力に接続が無いことが原因でした。お手数ですがこちらのノードにLowModelを接続してください。
      また、合わせて配布ワークフローを更新しました。

  3. テンテン より:

    こんにちは。
    素晴らしいワークフローをありがとうございます。
    こちらネガティブプロンプトを入れる場所はありますでしょうか?

    無い場合、手動で入れる方法をご教示いただけますと幸いです。
    よろしくお願いいたします。

    • ミスー より:

      各サブグラフ内に「Negative」というノードがあるので、それがネガティブプロンプト用のノードです。
      こちらのノードを変更してお使いください。

  4. テンテン より:

    ありがとうございます。。!
    完全に見落としておりました。

    ちなみに上記と別件なのですが、動画が次の動画へ切り替わった際、最初のフレームの動きがガクンとなる(抽象的ですみません。)のですが、ノードの数字を調整すればこの動きをスムーズに繋げれたり。。などございますか?

    • ミスー より:

      私の方ではそのような現象に遭遇したことがないので確かな事は言えませんが、シード値の変更やモデルの変更で直るかもしれません。

      他に考えられる原因としては、滑らかに繋がるように2ndGenVideo以降では生成された動画の開始数フレームをカットしています。本来はスムーズに繋がるための動作として機能していますが、生成した動画内容によってはそのようになってしまうのかもしれません。

      開始数フレームをカットしているノードは、2ndGenVideo以降の各サブグラフ内にある「Get Image or Mask Range From Batch」というノードです。

      デフォルトの設定だと、動画の最終フレームから数えて”num_frames”で指定した数値分が保存されるようになっているので、ここの数値を変更することで改善するかもしれません。
      “num_frames”の数値はデフォルトでは生成時に指定したフレーム数から4引いた値が代入されています。5秒の動画であれば総フレーム数が81なので、81-4=77で、動画の最後から数えて77フレーム目までが保存され、最初の4フレームまでがカットされます。

  5. ぽんた より:

    お世話になってます。 生成の部分ですが4つの項目がEnable1stGとなっています。 選択し右側に出る窓のような箇所で編集しようとするのですが、空欄のままで固定されているようです。そのため1stGのみでしか動画が作成することができないです。 どのようにしたら1~4をYesとできるでしょうか?

    • ミスー より:

      確認したところ、Nodes 2.0を使用しているとそのような表示になってしまうようです。従来の表示に切り替える方法を追記したので切り替えてご使用ください。

      • ぽんた より:

        早速のお返事ありがとうございます。 早速従来の表示に切り替え動画を作成してみたところ1~4Gで動画は作成されましたが、1Gで作成された動画がそのまま2~4Gに送られる状態でした。 本来であれば、5秒×4で20秒の動画ができあがるところが、1Gで作成された動画のみで5秒の動画が出来上がった次第です。 どうしたら1~4で合算した動画が作成できますでしょうか? ご教授お願いします。

        • ミスー より:

          確認したところ、最新のフロントエンドがインストールされている場合「HighSamplerSettings」「LowModelSettings」「動画時間(秒) / FPS」のサブグラフで設定している値が全て0になっていました。恐らく原因となっているのはこの部分だと思われます。
          フロントエンドのバージョンを変更して試してみてください。

          私の環境で使用しているフロントエンドのバージョンと変更方法は以下です。

          ComfyUI_frontend : v1.39.14

          v1.39.14のフロントエンドをインストールする場合は以下のようなコマンドになります。
          pip install comfyui-frontend-package==1.39.14

          ポータブル版のComfyUIを使用しているなら以下のコマンドです、
          python_embeded\python.exe -m pip install comfyui-frontend-package==1.39.14

          もし、普段使っているワークフローなどの関係でフロントエンドのバージョンを変更出来ない場合は、サブグラフを展開してお使いいただくか、SVI用ワークフロー専用のComfyUIを用意してください。

  6. ぽんた より:

    お返事ありがとうございます。 v1.39.14のフロントエンドをインストールいたしました。 サブグラフで確認したところ「HighSamplerSettings」「LowModelSettings」は値が入ってます。
    今回1thと2nd のみの動画を作ることを試みました。 1thはプロンプトの内容を理解し作成されたのですが、2nd は1thで作成された動画がそのまま送られたのみの状態でした。 サブグラフを確認してみると1thは1stPromptとなってますが2ndはPromptとなっています。これが原因で作成したPrompt2がうまく受け取れてないということはかんがえられますでしょうか? お手数ですがお知恵をお借りしたくご連絡いたしました。

    • ミスー より:

      2ndのPrompt表記はノードの名前を変えているだけなので、そこは関係ありません。サブグラフ「2ndGenVideo」のtext欄に「Get_Prompt2」というノードが繋がっていれば、「プロンプト2(自動翻訳)」に入力したプロンプトが反映されます。

      また、「CompleteVideo」というファイル名で保存された動画ファイルがあると思うのですが、このファイルの秒数は5秒でしょうか、10秒でしょうか。
      10秒であれば「2ndGenVideo」で生成自体は成功していますが、5秒であれば2ndGenVideoで生成がされてないということなので、問題の切り分けを行えます。

      もしくは、問題の発生している動画ファイルを、ワークフローが保存された状態で共有していただけると原因を特定できるかもしれません。

  7. ぽんた より:

    お返事ありがとうございます。
    生成されるビデオは常に5秒となります。 そしてAssetに吐き出される動画は 1stViseo‗000~となっています。

    サブグラフ「2ndGenVideo」のtext欄に「Get_Prompt2」というノード→サブグラフの中に「Get_Prompt2」というノードはない状態です。サブグラフに入らないオレンジの項目の中に「Get_Prompt2」はあります。

    • ミスー より:

      「2ndGenVideo」のサブグラフ内にある「Prompt」というノードはただのノード名なので気にしないでください。私の正常に動作している環境でもそうなっています。

      このワークフローでは生成する秒数に関係なく最後の結果グループにある「Video Combine」ノードが実行され「CompleteVideo」という名前の動画ファイルが保存されるはずなのですが、1stVideo_000~ だけしか保存されていないとなると、2nd動画の生成時にエラーが出ていると思われます。

      何かエラーが出ていないか、実行後にサブグラフ内で赤枠で囲まれているノードはないか、確認してみてください。

      また、念のため、新しくワークフローをダウンロードし直しから試してみてください。

      よろしくお願いします。