Ovi をローカルで動かす (音声付きショート動画を生成するAI / StabilityMatrix + ComfyUI)

本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

概要

Ovi をローカル環境で動かしてみました。

fp8 版の拡散モデルを使えば、NVIDIA GeForce RTX 5060Ti 16GB でも 7~8 分程度で動画を生成できました。

Ovi とは

Ovi は、Character.ai チームによって開発されたオープンソースの動画生成モデルです。
T2V(テキストから動画生成)や I2V(画像から動画生成)に対応しており、音声も生成して動画と合成することができます。

公式 github
https://github.com/character-ai/Ovi

ライセンス

Ovi は Apache License 2.0 のもとで公開されており、商用利用も可能です。
https://github.com/character-ai/Ovi/blob/main/LICENSE

以下のサンプルワークフローでは Wan 2.2 も使われていますが、Wan 2.2 も Apache 2.0 ライセンス です。

ローカル実行環境の用意

参考情報

ComfyUI の動画で紹介されているワークフローを用います。

PC 環境

NVIDIA GeForce RTX 5060Ti 16GBを入れて自作した PC で行います。

Stability Matrix + ComfyUI の実行環境の用意

ComfyUI は、以前 Stability Matrix で用意したものを使います。
ただし、エラーが出るのでパッケージの追加が必要です。後ほど記載します。

利用したバージョンは以下です。
Stability Matrix : 2.15.4
ComfyUI : 0.3.67

必要なファイルのダウンロード

Hugging Face から必要なファイルをダウンロードします。

使用する グラフィックスボード (NVIDIA GeForce RTX 5060Ti 16GB) の都合上、fp8 の Diffusion Model を利用しました。

オプションと書かれているファイルは、今回の手順では不要です。
VRAM 容量やGPU 性能に応じて調整してみてください。

(1) 拡散モデル (Diffusion Model)
https://huggingface.co/Kijai/WanVideo_comfy_fp8_scaled/tree/main/TI2V/Ovi
Wan2_2_Ovi_Audio_fp8_e4m3fn_scaled_KJ.safetensors
Wan2_2_Ovi_Video_fp8_e4m3fn_scaled_KJ.safetensors

Wan2_2_Ovi_Audio_fp8_e4m3fn_scaled_KJ.safetensors と Wan2_2_Ovi_Video_fp8_e4m3fn_scaled_KJ.safetensors のダウンロード

https://huggingface.co/Kijai/WanVideo_comfy/tree/main/Ovi
Wan_2_2_Ovi_audio_model_bf16.safetensors (オプション)
Wan_2_2_Ovi_video_model_bf16.safetensors (オプション)

Wan_2_2_Ovi_audio_model_bf16.safetensors と │ Wan_2_2_Ovi_video_model_bf16.safetensors のダウンロード

(2) VAE
https://huggingface.co/Kijai/WanVideo_comfy/tree/main/Ovi
mmaudio_vae_16k_bf16.safetensors (オプション)
mmaudio_vae_16k_fp32.safetensors
mmaudio_vocoder_bigvgan_best_netG_bf16.safetensors (オプション)
mmaudio_vocoder_bigvgan_best_netG_fp32.safetensors

mmaudio の VAE のダウンロード


https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/tree/main/split_files/vae
wan2.2_vae.safetensors

使いまわし画像なので Wan 2.1 のところも囲ってありますが、今回は Wan 2.1 は不要です。

Wan_2.2_ComfyUI_Repackaged VAE

(3) テキストエンコーダ
https://huggingface.co/Kijai/WanVideo_comfy/tree/main
umt5-xxl-enc-bf16.safetensors
umt5-xxl-enc-fp8_e4m3fn.safetensors (オプション)

スクロールダウンして、Load more files をクリックすると見つかります。

(4) ワークフローファイル
https://github.com/Comfy-Org/workflows/blob/main/tutorial_workflows/get_comfy_with_comfy-ovi-video_and_audio.json
get_comfy_with_comfy-ovi-video_and_audio.json

Download raw file ボタンからダウンロードします。

ワークフローファイルのダウンロード

ダウンロードしたファイルの配置

ダウンロードしたファイルを配置します。
Stability Matrix を利用する場合、 ComfyUI 個別の models に配置せずに、Stability Matrix の Models フォルダ配下に配置します。
(もし Stability Matrix を利用せずに直接 ComfyUI をインストールした環境で使いたい場合は適宜読み替えてください。)

(1) 拡散 モデル (Diffusion Model)
StabilityMatrxiのインストールフォルダ\Data\Models\TextEncoders\Data\Models\DiffusionModels

(2) テキストエンコーダ
StabilityMatrxiのインストールフォルダ\Data\Models\TextEncoders

(3) VAE
StabilityMatrxiのインストールフォルダ\Data\Models\TextEncoders\Data\Models\VAE


Stability Matrix を C:\StabilityMatrix にインストールしている場合は以下のような形です。
(オプションと記載したものも、念のため記載しておきます。)

C:\STABILITYMATRIX\DATA\MODELS
├─DiffusionModels
│      Wan2_2_Ovi_Audio_fp8_e4m3fn_scaled_KJ.safetensors
│      Wan2_2_Ovi_Video_fp8_e4m3fn_scaled_KJ.safetensors
│      Wan_2_2_Ovi_audio_model_bf16.safetensors
│      Wan_2_2_Ovi_video_model_bf16.safetensors
│
├─TextEncoders
│      umt5-xxl-enc-bf16.safetensors
│      umt5-xxl-enc-fp8_e4m3fn.safetensors
│
└─VAE
        mmaudio_vae_16k_bf16.safetensors
        mmaudio_vae_16k_fp32.safetensors
        mmaudio_vocoder_bigvgan_best_netG_bf16.safetensors
        mmaudio_vocoder_bigvgan_best_netG_fp32.safetensors
        wan2.2_vae.safetensors

ComfyUI Manager のインストール

今回参考したワークフロー get_comfy_with_comfy-ovi-video_and_audio.json ではカスタムノードが利用されています。
カスタムノードの導入を簡単にするため、ComfyUI Manager もインストールします。

インストールは Stability Matrix から行います。

Stability Matrix - パッケージ

(1) Stability Matrix – 左側のメニュー – [パッケージ] – ComfyUI – [Extensions] のアイコンをクリック

Stability Matrix - パッケージ - ComfyUI - Extensions ボタンをクリック

(2) ComfyUI-Manager で検索

ComfyUI-Manager で検索

(3) 表示された ComfyUI-Manager の右のチェックボックスをオンにして、下の インストールをクリック

ワークフローの実行に必要なカスタムノードのインストール

ComfyUI Manager を導入したら、ComfyUI を起動します。
起動時のコンソール画面で、FETCH ComfyRegistry Data が完了するのを待ってから、ComfyUI の Web UIを起動します。
(完了しないと Custom ノードがすべて表示されないことがあります。)

ComfyUI を起動後、FETCH ComfyRegistry Data が完了するまで待つ

get_comfy_with_comfy-ovi-video_and_audio.json を ComfyUI の WebUI にドラックアンドドロップすると、以下のエラーが出ます。

Some Nodes Are Missing

When loading the graph, the following node types were not found. This may also happen if your installed version is lower and that node type can’t be found.

  • WanVideoEncode
  • WanVideoTorchCompileSettings
  • WanVideoEmptyEmbeds
  • WanVideoEmptyMMAudioLatents
  • WanVideoDecode
  • VHS_VideoCombine
  • WanVideoSetBlockSwap
  • WanVideoBlockSwap
  • WanVideoEasyCache
  • ImageResizeKJv2
  • WanVideoModelLoader
  • WanVideoExtraModelSelect
  • WanVideoVAELoader
  • OviMMAudioVAELoader
  • WanVideoDecodeOviAudio
  • WanVideoSLG
  • WanVideoOviCFG
  • WanVideoSampler
  • WanVideoTextEncodeCached

これらのカスタムノードが必要となります。ComfyUI Manager 経由でインストールします。

(1) ComfyUI の WebUI の上部にある [Manager] をクリック

上部の Manager をクリックして ComfyUI Manager を起動

(2) [Install Missing Custom Nodes] をクリック

ComfyUI Manager - Install Missing Custom Node をクリック

(3) 3つのカスタムノードが表示されるので、順番を [Install] をクリック

  • ComfyUI-WanVideoWrapper
  • ComfyUI-KJNodes
  • ComfyUI-VideoHelperSuite
表示されたカスタムノードを順次インストールする


Restart Required となりますが、3つすべてインストールしてから最後に ComfyUI の再起動で OK です。

ComfyUI Manager 経由で Restart を行います。

ワークフローの実行に必要な Python パッケージのインストール

続けて、Stability Matrix でインストールされた ComfyUI の Python venv 環境に以下のパッケージを追加します。

  • sageattention 1.0.6
  • triton-windows 3.5.0.post21

ポイントは sageattention の 1.0.6 を指定してインストールすることです。
(指定しないと 2.2.0 がインストールされようとしてエラーとなることがあります。)

(1) ターミナルを起動します。
[スタート] 右クリック – [ターミナル]

(2) 以下を 4行を実行します。

cd C:\StabilityMatrix\Data\Packages\ComfyUI
.\venv\Scripts\activate
python -m pip install sageattention==1.0.6
python -m pip install triton-windows==3.5.0.post21
ComfyUI の Python venv 環境に必要なパッケージをインストールする

実行時の出力

PS C:\Users\ユーザ名> cd C:\StabilityMatrix\Data\Packages\ComfyUI
PS C:\StabilityMatrix\Data\Packages\ComfyUI> .\venv\Scripts\activate
(venv) PS C:\StabilityMatrix\Data\Packages\ComfyUI> python -m pip install sageattention==1.0.6
Collecting sageattention
  Using cached sageattention-1.0.6-py3-none-any.whl.metadata (5.6 kB)
Using cached sageattention-1.0.6-py3-none-any.whl (20 kB)
Installing collected packages: sageattention
Successfully installed sageattention-1.0.6
(venv) PS C:\StabilityMatrix\Data\Packages\ComfyUI> python -m pip install triton-windows==3.5.0.post21
Collecting triton-windows
  Using cached triton_windows-3.5.0.post21-cp312-cp312-win_amd64.whl.metadata (1.8 kB)
Using cached triton_windows-3.5.0.post21-cp312-cp312-win_amd64.whl (47.3 MB)
Installing collected packages: triton-windows
Successfully installed triton-windows-3.5.0.post21
(venv) PS C:\StabilityMatrix\Data\Packages\ComfyUI>

(3) インストール後、念のため Stability Matrix 自体を一度終了させて再起動します。その後 ComfyUI も起動します。

Ovi での動画生成

ここでは、サンプルの通り I2V (画像から動画) + 音声付きを行います。

ワークフロー内での設定

ComfyUI の Web UI にアクセスすると、先ほど開いていた get_comfy_with_comfy-ovi-video_and_audio.json が開かれると思いますが、今度はカスタムノードのエラーは出ません。

次に、以下の変更を行います。

(1) [WanVideo Extra Model Select] のノードの model で [Wan2_2_Ovi_Audio_fp8_e4m3fn_scaled_KJ.safetensors] を選択します。
その右の [WanVideo Model Loader] のノードの model で[Wan2_2_Ovi_Video_fp8_e4m3fn_scaled_KJ.safetensors] を選択します。

(2) 左下の [画像を読み込むノード] に適当な画像を読み込ませます。
ここでは、以前作成した画像を読み込ませています。

(3) 左側の [WanVideo TextEncode Cached] のノードのネガティブプロンプトを念のため英語に変えます。
(必須ではないですが、私自身が中国語を勉強していないので、英語にしておきます。)

Vivid tone, overexposed, static, unclear details, subtitles, style, artwork, painting, image, still, overall grayish, worst quality, low quality, JPEG compression artifacts, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, distorted, disfigured, misshapen limbs, finger fusion, static image, chaotic background, three legs, many people in the background, walking backward.

ワークフローの実行

準備ができたら [実行する] をクリックします。

変更後のワークフロー全体

私の環境でだいたい 7~8分くらいで生成できました。

動画生成完了後

元画像は以下です。

生成した画像2

“Now we can generate videos with audio, locally!!” と音声が生成されていて、口もそれに合わせて動いています。

注意) 音声が出ますので、音が出てもよい状況で再生してください。

生成される音声は [WanVideo TextEncode Cached] のポジティブプロンプトで指定します。
<S> と <E> の間に音声にする単語・文章 を記載し、<AUDCAP> と <ENDAUDCAP> の間に、追加情報を記載します。

[WanVideo TextEncode Cached] のプロンプトで生成する音声なども指定する

サンプルでは以下となっています。

A woman exclaiming <S>Now we can generate videos with audio, locally!!<E>. <AUDCAP>Clear female voice speaking dialogue, subtle outdoor ambience.<ENDAUDCAP>

(日本語音声の生成は、少なくとも fp8 のモデルだとうまくいかないことが多いようです。)

ちなみに、fp8 の拡散モデルではなく、bf16 の Wan_2_2_Ovi_audio_model_bf16.safetensors と Wan_2_2_Ovi_video_model_bf16.safetensors を利用した場合は、NVIDIA GeForce RTX 5060Ti 16GB の VRAM では足りず、共有 GPU メモリを 16 GB 以上使いつつ 2時間半以上かかりました。私の環境では fp8 の利用が現実的でした。

補足 : エラーと対処方法

実行時に遭遇したエラーについても記載しておきます。解決のためのコマンドはここまでの本文中に記載してあります。

(1) sageattention のパッケージがない場合

ComfyUI でワークフローを実行中に以下のエラーが表示されます。

No module named 'sageattention' のエラー

WanVideoModelLoader

Can’t import SageAttention: No module named ‘sageattention’

解決策は、ComfyUI の Python venv 環境に sageattention のパッケージをインストールすることです。

(2) sageattention のパッケージインストール時に 1.0.6 を指定しなかった場合

以下のようなエラーとなります。

PS C:\StabilityMatrix\Data\Packages\ComfyUI> .\venv\Scripts\activate
(venv) PS C:\StabilityMatrix\Data\Packages\ComfyUI> python -m pip install sageattention
Collecting sageattention
Using cached sageattention-2.2.0.tar.gz (67 kB)
Installing build dependencies … done
Getting requirements to build wheel … error
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [18 lines of output]
Traceback (most recent call last):
File “C:\StabilityMatrix\Data\Packages\ComfyUI\venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py”, line 389, in <module>
main()
File “C:\StabilityMatrix\Data\Packages\ComfyUI\venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py”, line 373, in main
json_out[“return_val”] = hook(**hook_input[“kwargs”])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\StabilityMatrix\Data\Packages\ComfyUI\venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py”, line 143, in get_requires_for_build_wheel
return hook(config_settings)
^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\ユーザ名\AppData\Local\Temp\pip-build-env-0dmgqp60\overlay\Lib\site-packages\setuptools\build_meta.py”, line 332, in get_requires_for_build_wheel
return self._get_build_requires(config_settings, requirements=[])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\ユーザ名\AppData\Local\Temp\pip-build-env-0dmgqp60\overlay\Lib\site-packages\setuptools\build_meta.py”, line 302, in _get_build_requires
self.run_setup()
File “C:\Users\ユーザ名\AppData\Local\Temp\pip-build-env-0dmgqp60\overlay\Lib\site-packages\setuptools\build_meta.py”, line 318, in run_setup
exec(code, locals())
File “<string>”, line 36, in <module>
ModuleNotFoundError: No module named ‘torch’
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed to build ‘sageattention’ when getting requirements to build wheel

回避策は、sageattention 2.2.0 ではなく sageattention 1.0.6 をインストールすることです。(今回のワークフローの実行の場合に限りますが。)

(3) triton のパッケージがない場合

ComfyUI でワークフローを実行中に以下のエラーが表示されます。

No module named 'triton'

WanVideoModelLoader

Can’t import SageAttention: No module named ‘triton’

解決策は、ComfyUI の Python venv 環境に triton-windows のパッケージをインストールすることです。

以上、参考となれば幸いです。

▼ 関連