LTX-2 Text to Video
Generate high-quality videos from text prompts with synchronized audio-video generation using LTX-2. Features expressive lip sync, dynamic motion generation, and efficient performance.
ワークフローの内部
ソーステンプレートの読み取り専用プレビューです。Cloud で開くと、ノードを確認して変更できます。
Loading the graph
Open full-size workflow preview- 出力
- 動画
- 作成者
- ComfyUI
コードからこのモデルを呼び出す
以下のリクエストでは、Playground と同じ準備済みグラフと設定を使用します。送信ごとに有料実行が開始される場合があります。結果が不明な送信を自動的に再試行しないでください。
What you need
- Runs on
- Comfy Cloud
- キー
- COMFY_API_KEY
有料の Cloud プランとクレジットが必要です。
# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"75": {
"class_type": "SaveVideo",
"inputs": {
"filename_prefix": "video/LTX-2",
"format": "mp4",
"format.codec": "auto",
"video": [
"92:97",
0
]
},
"_meta": {
"title": "Save Video"
}
},
"92:1": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "ltx-2-19b-dev-fp8.safetensors"
},
"_meta": {
"title": "Load Checkpoint"
}
},
"92:102": {
"class_type": "PrimitiveFloat",
"inputs": {
"value": 24
},
"_meta": {
"title": "Frame Rate(float)"
}
},
"92:11": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 10
},
"_meta": {
"title": "RandomNoise"
}
},
"92:22": {
"class_type": "LTXVConditioning",
"inputs": {
"frame_rate": [
"92:102",
0
],
"negative": [
"92:4",
0
],
"positive": [
"92:3",
0
]
},
"_meta": {
"title": "LTXVConditioning"
}
},
"92:3": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"92:60",
0
],
"text": "During an overcast midday torrential downpour, a burly, weathered fifty-year-old Black blues singer with a salt-and-pepper buzzcut stands centered, singing directly into the camera in a close shot. Rain streams down his furrowed brow onto a sodden, textured waxed-canvas work jacket. The camera slowly pushes in closer as he grips a battered chrome microphone, passionately belting with raw intensity: \"Wash the fire right out of my soul.\" Cool, diffused gray daylight wraps around him, momentarily illuminated by sharp flickers of distant lightning catching each falling drop. The audio features a driving, distorted slide guitar over rumbling thunder, heavy splashing rain, and his resonant, gravelly baritone voice vibrating with soulful grief."
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"92:4": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"92:60",
0
],
"text": "blurry, low quality, still frame, frames, watermark, overlay, titles, has blurbox, has subtitles"
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"92:41": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"92:47",
0
],
"latent_image": [
"92:56",
0
],
"noise": [
"92:11",
0
],
"sampler": [
"92:8",
0
],
"sigmas": [
"92:9",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"92:43": {
"class_type": "EmptyLTXVLatentVideo",
"inputs": {
"batch_size": 1,
"height": [
"92:91",
1
],
"length": [
"92:62",
0
],
"width": [
"92:91",
0
]
},
"_meta": {
"title": "Empty LTXV Latent Video"
}
},
"92:47": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 4,
"model": [
"92:1",
0
],
"negative": [
"92:22",
1
],
"positive": [
"92:22",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"92:48": {
"class_type": "LTXVAudioVAELoader",
"inputs": {
"ckpt_name": "ltx-2-19b-dev-fp8.safetensors"
},
"_meta": {
"title": "Load LTXV Audio VAE"
}
},
"92:51": {
"class_type": "LTXVEmptyLatentAudio",
"inputs": {
"audio_vae": [
"92:48",
0
],
"batch_size": 1,
"frame_rate": [
"92:99",
0
],
"frames_number": [
"92:62",
0
]
},
"_meta": {
"title": "Empty LTXV Latent Audio"
}
},
"92:56": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"92:51",
0
],
"video_latent": [
"92:43",
0
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"92:60": {
"class_type": "LTXAVTextEncoderLoader",
"inputs": {
"ckpt_name": "ltx-2-19b-dev-fp8.safetensors",
"device": "default",
"text_encoder": "gemma_3_12B_it_fp4_mixed.safetensors"
},
"_meta": {
"title": "Load LTXV Audio Text Encoder"
}
},
"92:62": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 121
},
"_meta": {
"title": "Length"
}
},
"92:66": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler_ancestral"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"92:67": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 0
},
"_meta": {
"title": "RandomNoise"
}
},
"92:68": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "ltx-2-19b-distilled-lora-384.safetensors",
"model": [
"92:1",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"92:70": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"92:82",
0
],
"latent_image": [
"92:83",
0
],
"noise": [
"92:67",
0
],
"sampler": [
"92:66",
0
],
"sigmas": [
"92:73",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"92:73": {
"class_type": "ManualSigmas",
"inputs": {
"sigmas": "0.909375, 0.725, 0.421875, 0.0"
},
"_meta": {
"title": "ManualSigmas"
}
},
"92:76": {
"class_type": "LatentUpscaleModelLoader",
"inputs": {
"model_name": "ltx-2-spatial-upscaler-x2-1.0.safetensors"
},
"_meta": {
"title": "Load Latent Upscale Model"
}
},
"92:8": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler_ancestral"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"92:80": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"92:41",
0
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"92:81": {
"class_type": "LTXVCropGuides",
"inputs": {
"latent": [
"92:80",
0
],
"negative": [
"92:22",
1
],
"positive": [
"92:22",
0
]
},
"_meta": {
"title": "LTXVCropGuides"
}
},
"92:82": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 1,
"model": [
"92:68",
0
],
"negative": [
"92:81",
1
],
"positive": [
"92:81",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"92:83": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"92:80",
1
],
"video_latent": [
"92:84",
0
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"92:84": {
"class_type": "LTXVLatentUpsampler",
"inputs": {
"samples": [
"92:81",
2
],
"upscale_model": [
"92:76",
0
],
"vae": [
"92:1",
2
]
},
"_meta": {
"title": "spatial"
}
},
"92:89": {
"class_type": "EmptyImage",
"inputs": {
"batch_size": 1,
"color": 0,
"height": 720,
"width": 1280
},
"_meta": {
"title": "Empty Image"
}
},
"92:9": {
"class_type": "LTXVScheduler",
"inputs": {
"base_shift": 0.95,
"latent": [
"92:56",
0
],
"max_shift": 2.05,
"steps": 20,
"stretch": True,
"terminal": 0.1
},
"_meta": {
"title": "LTXVScheduler"
}
},
"92:90": {
"class_type": "ImageScaleBy",
"inputs": {
"image": [
"92:89",
0
],
"scale_by": 0.5,
"upscale_method": "lanczos"
},
"_meta": {
"title": "Upscale Image By"
}
},
"92:91": {
"class_type": "GetImageSize",
"inputs": {
"image": [
"92:90",
0
]
},
"_meta": {
"title": "Get Image Size"
}
},
"92:94": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"92:70",
1
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"92:96": {
"class_type": "LTXVAudioVAEDecode",
"inputs": {
"audio_vae": [
"92:48",
0
],
"samples": [
"92:94",
1
]
},
"_meta": {
"title": "LTXV Audio VAE Decode"
}
},
"92:97": {
"class_type": "CreateVideo",
"inputs": {
"audio": [
"92:96",
0
],
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": [
"92:102",
0
],
"images": [
"92:98",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"92:98": {
"class_type": "VAEDecodeTiled",
"inputs": {
"overlap": 64,
"samples": [
"92:94",
0
],
"temporal_overlap": 8,
"temporal_size": 4096,
"tile_size": 512,
"vae": [
"92:1",
2
]
},
"_meta": {
"title": "VAE Decode (Tiled)"
}
},
"92:99": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 24
},
"_meta": {
"title": "Frame Rate(int)"
}
}
})
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)
for output in job.get_outputs("75"):
output.to_file(output.name)例を試す
このワークフローについて
The LTX-2 Text to Video workflow in ComfyUI is designed to transform text prompts into high-quality videos with synchronized audio and video generation. This workflow leverages the LTX-2 model, developed by Lightricks, which is renowned for its expressive lip-sync capabilities and dynamic motion generation.
The workflow efficiently processes text inputs to create videos that not only match the described actions but also maintain a high level of visual fidelity. Technically, it utilizes nodes such as SaveVideo and a subgraph node identified by b7c2d337-c38d-4c04-922b-2d638449d13e, which are crucial for saving the output and managing the complex video generation process. The MarkdownNote node is used for documentation and guidance within the workflow, ensuring users understand each step and parameter involved.
よくある質問
By default, the workflow uses 720p resolution. You can try 1920x1088 if your system can handle higher resolutions, ensuring width and height are divisible by 64.
Make sure the frame count is divisible by 8 plus 1. The workflow will adjust to the closest valid parameters if incorrect values are used.
The LTX-2 workflow is optimized for high-quality video generation, which may not be suitable for real-time applications due to processing requirements.
Prompts that clearly describe actions over time and include detailed visual descriptions yield the best results.