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
从代码中调用该模型
以下请求使用与体验区相同的预设图和设置。每次提交都可能开始一次付费运行;如果提交结果未知,请勿自动重试。
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.