LTX-2とは?

LTX-2 は、Lightricks が公開している 音声+動画を同時に生成できる拡散モデルです。


推奨設定値

  • 解像度
    • 640×640(1:1)
    • 768×512(3:2)
    • 704×512(4:3)
    • ※後処理で2倍にアップスケールするので、実際の出力は1280×1280になります
    • ※32の倍数である必要があります
  • FPS
    • 24 / 25 / 30
  • フレーム
    • 最大:257 frames(25fpsで約10秒)
    • 推奨:121–161(品質とメモリのバランス)
    • ※8n+1 になる必要があります

モデルのダウンロード

📂ComfyUI/
└── 📂models/
    ├── 📂checkpoints/
    │   └── ltx-2-19b-dev-fp8.safetensors
    ├── 📂latent_upscale_models/
    │   └── ltx-2-spatial-upscaler-x2-1.0.safetensors
    ├── 📂loras/
    │   └── ltx-2-19b-distilled-lora-384.safetensors
    └── 📂text_encoders/
        └── gemma_3_12B_it.safetensors

基本的な処理の流れ

Wan などに比べるとノード数が多いため複雑に感じるかもしれませんが、やっていることはこれだけです。

    1. text2video + audio
    • まずベースとなる動画(音声も)を生成します。
    1. Hires.fix(2段階目)
    • できた動画を 2 倍にアップスケールし、video2video でもう一度回してリファインします。
    • これをパスして直接デコードすることも出来ますが、品質的に、Hires.fixするのをオススメします。
    1. デコード
    • 動画と音声を別々にデコードして出力します。

text2video

LTX-2_text2video.json

1. 動画解像度・長さ・FPSの設定

生成したい動画と音声のパラメータをここで決めます。

  • EmptyLTXVLatentVideo / LTXV Empty Latent Audio に、解像度・フレーム数・FPS を入力します。
  • 推奨設定値 に従って設定してください。
  • 🚨後処理で解像度を 2 倍にします。
    • つまり、ここに設定する解像度は、作りたい動画の 半分 の値にしてください。

2. プロンプト

LTXシリーズの特徴ですが、プロンプトは多少こだわらないと大した動画が作れません。

  • とはいってもLLMの力を借りるほど細かいフォーマットが決まっているわけではありません。
  • 小説を書くように、生成したい動画を記述してみてください。
  • cf. Prompting Guide for LTX-2

3. サンプリング(1段目)

見慣れた KSampler ではないので少し複雑に見えますが、基本は「ステップ数と CFG を決めてサンプリングする」だけです。

  • この workflow では、20 steps / CFG 4.0 で 1段目を回しています。
  • LTXVScheduler という専用スケジューラーを使っています。
    • 動きとしてはlinear_quadraticに似たものですが、あまり気にしなくて大丈夫です。
  • LTX-2 は動画と音声を同時に扱うため、🟫LTXVConcatAVLatentで、動画 latent と音声 latent を 1 本にまとめます。

4. latent のアップスケール(x2)

動画latentの解像度を二倍にアップスケールします。

  • 専用のモデル (ltx-2-spatial-upscaler-x2)を使用します。

5. サンプリング(2段目 / video2video)

アップスケール後の latent を 短いステップでリファインします。

  • こちらでは4~8ステップで生成できるようになる distilled-loraを使用します。
    • 他のモデルでいうところの Lightning / Turbo のようなものだと考えてください。
    • この workflow では 3 steps で回しています。
    • これに合わせて、CFGは 1.0 に変更します。
  • Manual Sigma を使っているため少し分かりにくいですが、Simple 相当で考えるなら denoise = 0.47 前後に近い挙動です。

6. デコード

最後に、動画と音声をそれぞれデコードして書き出します。

  • latent を動画用 / 音声用に分け、適切なVAEでデコードします。
  • (VRAMに余裕が無いためTiled VAEを使っています。)

text2video 8ステップ

上ではHires.fixでのみ Distilled LoRA を使いましたが、1段目にも適用し、8ステップで高速に生成してみましょう。

LTX-2_text2video_distilled.json

distilled-loraを適用するため、サンプリング設定をいくつか変更します。

  • CFG : 1.0
  • scheduler : Simple
  • steps : 8

20ステップ / 8ステップ Distilled LoRA比較

20ステップ
8ステップ(Distilled LoRA)

私が試した限りでは、distilled LoRA を適用したほうが安定して生成できます。
そのため、速度アップを兼ねて以降のworkflowは全て1段目からdistilled loraを適用していきます。


image2video

LTX-2_image2video_distilled.json

基本は「1フレーム目を入力画像で固定して、残りを生成」です。
LTX-2 は 2段階(半解像度→x2アップスケール)なので、入力画像もそれに合わせて扱います。

1. 入力画像のリサイズ(2系統作る)

  • まず、最終出力したい解像度に合わせた フル解像度版 を作ります。
    • 任意のサイズにリサイズ (ここでは1MP)。
    • 幅・高さは 32 の倍数にします。
  • つぎに、1段目(半解像度)用に、上の画像を 縦横 1/2 にした版も作ります。
    • EmptyLTXVLatentVideo には、この 半解像度側の width/height を入力します。

2. 画像の下処理

LTX-Videoからの特徴ですが、動画は静止画と違い、少し圧縮されて劣化しているため、綺麗すぎる画像を使うと、全く動かない動画が生成されることがあります。

  • これを回避するため、LTXVPreprocess でわざと動画の圧縮っぽく劣化させます。

3. LTXVImgToVideoInplace(1段目の差し込み)

ここが image2video の本体です。

  • 1段目(半解像度)の video latent に対して、1フレーム目を画像で差し込みます。

4. アップスケール側(2段目)にも同じことをする

2段目も同様に画像を差し込みます。

  • 必ずspatialノードの あと にこのノードを接続してください。
  • strengthは 1.0 にします。
    • これを小さくすると、差し込んだ画像自体も image2image されるような挙動になります。
    • 全体として馴染ませたいときはそれでも良いですが、 入力画像と1フレーム目を完全一致させたいなら 1.0 にします。

出力例

入力
入力
出力

audio2video

LTX-2 は「動画+音声」を同時に扱うモデルなので、音声を入力として渡して 音に引っ張られた動画 を作る構成もできます。

LTX-2_audio2video_distilled.json
  • Trim Audio Duration で音声を適当な長さにトリミング
  • 音声をエンコードして、LTXVConcatAVLatent に接続します。
  • 二段目の LTXVConcatAVLatent にも接続します。
  • 入力音声をそのまま使います(生成音声は使いません)。

🚨音声の長さが生成する動画の長さより 短い 場合、音声条件が効きません。音と無関係な動画が生成されます。
無音でもいいので生成する動画の長さより余計に長くしておく必要があります。

ここに Set Latent Noise Mask を使うworkflowも見かけますが、あってもなくても同じ結果になります。

出力例


audio-image2video

上2つを組み合わせることも出来ます。
顔画像に喋っている音声を組み合わせれば、talking headのようなことも出来ます。やってみましょう。

LTX-2_audio-image2video_distilled.json
  • audio2video / image2video この 2 つのworkflowを組み合わせるだけです。

出力例

入力
入力
出力

IC-LoRA

IC-LoRA は、ポーズや深度マップ、エッジなどの 制御信号から動画を作ります。

モデルのダウンロード

📂ComfyUI/
└── 📂models/
    └── 📂loras/
        ├── ltx-2-19b-ic-lora-canny-control.safetensors
        ├── ltx-2-19b-ic-lora-depth-control.safetensors
        ├── ltx-2-19b-ic-lora-detailer.safetensors
        └── ltx-2-19b-ic-lora-pose-control.safetensors

IC-LoRA (Pose)

text2videoをベースに制御動画を追加します。

LTX-2_IC-LoRA(Pose)_distilled.json

1. 制御動画のリサイズ

生成する動画と同じ比率・解像度に揃えます。

  • 任意のサイズにリサイズ (ここでは1MP)。
  • 幅・高さは 32 の倍数にします。
  • EmptyLTXVLatentVideo に、 縦横 1/2 にした画像の width/height を入力します。

2. ポーズ画像の生成

動画から棒人間の画像を作ります。

  • OpenPose や DWPose でポーズを抽出

3. LTXVAddGuide

制御信号(ポーズ動画)を conditioning に入れます。

  • LTXVAddGuide に、先ほど作ったポーズ動画を入力します。

4. IC-LoRAの適用

IC-LoRA (今回はPose) を適用してサンプリングします。

  • IC-LoRA は strength = 1.0 を前提に設計されています。
  • この workflow では 1段目のサンプリングだけ IC-LoRA を適用しています。
    • 2段目はリファインに専念させたほうがキレイな動画になります。

5. LTXVCropGuides

1段目が終わったあと、一度デコードしてみると分かりやすいんですが、生成した動画に先程作ったポーズ動画が混ざっています。

これがまさにIC-LoRAの仕組みですが、出力には不要なものなので、2段目に入る前に削除します。

  • LTXVCropGuidesは、latent / conditioning から 制御画像 を取り除くためのノードです。

ポーズ画像・IC-LoRAを、Canny / Depth へ変更すれば同じように使えます。
注意点として、基本1種類の使用が推奨されています。(Pose と Depth を同時に適用したりするのは非推奨です。)

出力例


IC-LoRA (Pose) + image2video

複数IC-LoRAを重ねることは出来ませんが、image2videoやaudio2videoと組み合わせることはできます。

LTX-2_IC-LoRA(Pose)_image2video_distilled.json

やっていることは、上の IC-LoRA (Pose) と image2video を合体させただけです。

  • 注意点として、LTXVAddGuideLTXVImgToVideoInplaceあと に接続します。
    • 逆だと制御が効きません。
  • これはあくまで image2video であり、VACE のような reference2video ではありません
    • 入力画像は「1フレーム目として固定される画像」なので、ポーズ動画の1フレーム目と大きくズレると期待通りの動画になりません。
    • 事前に ControlNet や Qwen-Image-Edit などで「ポーズ1フレーム目に寄せた画像」を作りましょう。

出力例


IC-LoRA (Detailer)

IC-LoRA (Detailer)は、低解像度の動画のディテールや質感を修復します。

カスタムノードのインストール

  • ComfyUI-LTXVideo

  • コアノードだけでも動かすこと自体はできますが、大きな解像度・長時間動画を扱うためにはカスタムノードが必要です。

LTX-2_IC-LoRA(Detailer).json

基本は IC-LoRA(Detailer) を適用した video2video です。

  • 🟦 先に、入力動画を 最終的に欲しいサイズ にリサイズします。
  • SamplerCustomAdvanced の代わりに 🅛🅣🅧 LTXV Looping Sampler を使います。
    • これはUltimate SD upscaleのように時間・空間をタイルに分けて処理するため、VRAM 節約をすることができます。
    • この workflow では 時間方向だけ タイリングしています。
  • 蒸留LoRAを使っていませんが、3 ステップで生成します。

出力例

入力
出力

参考