LTX-2 Text to Video (Distilled)
Generate high-quality videos from text prompts with synchronized audio-video generation using LTX-2 distilled model. Optimized for faster generation while maintaining quality. Features expressive lip sync, dynamic motion generation, and improved speed.
简介
The LTX-2 Text to Video (Distilled) workflow is designed to transform text prompts into high-quality videos with synchronized audio and video elements. Utilizing the LTX-2 distilled model, this workflow is optimized for faster video generation while maintaining a high level of quality. It features expressive lip sync and dynamic motion generation, making it ideal for creating engaging video content.
The workflow employs nodes like SaveVideo and 9b0e709c-82c7-46c0-a2e4-5e96b6f16090, which are crucial for processing and rendering the final video output. The LTX-2 model, developed by Lightricks, is accessible via Huggingface and GitHub, providing a robust foundation for this workflow.
你需要提供
- 正在读取工作流
在 ComfyUI 中运行。 此工作流无法在本页面运行。你可以在 Comfy Cloud 中打开(已预先加载所需内容),或下载后在自己的 ComfyUI 中使用。
在 Cloud 中试用查看工作流内部
节点图的只读预览。在 Comfy 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({
"104": {
"class_type": "SaveVideo",
"inputs": {
"filename_prefix": "video/LTX-2",
"format": "auto",
"format.codec": "auto",
"video": [
"177:114",
0
]
},
"_meta": {
"title": "Save Video"
}
},
"177:100": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "ltx-2-19b-distilled.safetensors"
},
"_meta": {
"title": "Load Checkpoint"
}
},
"177:101": {
"class_type": "LTXVAudioVAELoader",
"inputs": {
"ckpt_name": "ltx-2-19b-distilled.safetensors"
},
"_meta": {
"title": "Load LTXV Audio VAE"
}
},
"177:102": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"177:111",
0
],
"text": [
"177:109",
0
]
},
"_meta": {
"title": "enhanced prompt (positive)"
}
},
"177:103": {
"class_type": "LTXVConditioning",
"inputs": {
"frame_rate": [
"177:112",
0
],
"negative": [
"177:102",
0
],
"positive": [
"177:102",
0
]
},
"_meta": {
"title": "LTXVConditioning"
}
},
"177:106": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 24
},
"_meta": {
"title": "Frame Rate (Int)"
}
},
"177:109": {
"class_type": "PrimitiveStringMultiline",
"inputs": {
"value": "A man in a black tuxedo stands motionless in a small, red-tiled bathroom, facing a mirror. The camera sits just behind his right shoulder, framing both his back and his solemn reflection. Suddenly, he opens his mouth and begins to sing opera in Italian: \"La donna è mobile, qual piuma al vento.\" Rich, resonant notes echo through the space. As his voice climbs in pitch, his brows lift, and his expression becomes more passionate, almost vulnerable. The overhead lighting casts a sharp glow on his face and tuxedo, reflecting in the glossy red tiles around him. The camera is static"
},
"_meta": {
"title": "Positive prompt"
}
},
"177:110": {
"class_type": "LatentUpscaleModelLoader",
"inputs": {
"model_name": "ltx-2-spatial-upscaler-x2-1.0.safetensors"
},
"_meta": {
"title": "Load Latent Upscale Model"
}
},
"177:111": {
"class_type": "LTXAVTextEncoderLoader",
"inputs": {
"ckpt_name": "ltx-2-19b-distilled.safetensors",
"device": "default",
"text_encoder": "gemma_3_12B_it_fp4_mixed.safetensors"
},
"_meta": {
"title": "Load LTXV Audio Text Encoder"
}
},
"177:112": {
"class_type": "PrimitiveFloat",
"inputs": {
"value": 24
},
"_meta": {
"title": "Frame Rate (Float)"
}
},
"177:113": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 121
},
"_meta": {
"title": "Frame Count"
}
},
"177:114": {
"class_type": "CreateVideo",
"inputs": {
"audio": [
"177:120",
0
],
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": [
"177:112",
0
],
"images": [
"177:119",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"177:115": {
"class_type": "LTXVEmptyLatentAudio",
"inputs": {
"audio_vae": [
"177:101",
0
],
"batch_size": 1,
"frame_rate": [
"177:106",
0
],
"frames_number": [
"177:113",
0
]
},
"_meta": {
"title": "Empty LTXV Latent Audio"
}
},
"177:116": {
"class_type": "EmptyLTXVLatentVideo",
"inputs": {
"batch_size": 1,
"height": [
"177:122",
1
],
"length": [
"177:113",
0
],
"width": [
"177:122",
0
]
},
"_meta": {
"title": "Empty LTXV Latent Video"
}
},
"177:117": {
"class_type": "ManualSigmas",
"inputs": {
"sigmas": "0.909375, 0.725, 0.421875, 0.0"
},
"_meta": {
"title": "ManualSigmas"
}
},
"177:118": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 420
},
"_meta": {
"title": "RandomNoise"
}
},
"177:119": {
"class_type": "VAEDecodeTiled",
"inputs": {
"overlap": 64,
"samples": [
"177:130",
0
],
"temporal_overlap": 8,
"temporal_size": 4096,
"tile_size": 512,
"vae": [
"177:100",
2
]
},
"_meta": {
"title": "VAE Decode (Tiled)"
}
},
"177:120": {
"class_type": "LTXVAudioVAEDecode",
"inputs": {
"audio_vae": [
"177:101",
0
],
"samples": [
"177:130",
1
]
},
"_meta": {
"title": "LTXV Audio VAE Decode"
}
},
"177:121": {
"class_type": "ImageScaleBy",
"inputs": {
"image": [
"177:131",
0
],
"scale_by": 0.5,
"upscale_method": "nearest-exact"
},
"_meta": {
"title": "Upscale Image By"
}
},
"177:122": {
"class_type": "GetImageSize",
"inputs": {
"image": [
"177:121",
0
]
},
"_meta": {
"title": "Get Image Size"
}
},
"177:123": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 45
},
"_meta": {
"title": "RandomNoise"
}
},
"177:124": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 1,
"model": [
"177:100",
0
],
"negative": [
"177:103",
1
],
"positive": [
"177:103",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"177:125": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"177:127",
0
],
"latent_image": [
"177:132",
0
],
"noise": [
"177:123",
0
],
"sampler": [
"177:126",
0
],
"sigmas": [
"177:176",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"177:126": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler_ancestral"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"177:127": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 1,
"model": [
"177:100",
0
],
"negative": [
"177:103",
1
],
"positive": [
"177:103",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"177:128": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"177:133",
1
],
"video_latent": [
"177:135",
0
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"177:129": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler_ancestral"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"177:130": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"177:134",
1
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"177:131": {
"class_type": "EmptyImage",
"inputs": {
"batch_size": 1,
"color": 0,
"height": 720,
"width": 1280
},
"_meta": {
"title": "Empty Image"
}
},
"177:132": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"177:115",
0
],
"video_latent": [
"177:116",
0
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"177:133": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"177:125",
1
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"177:134": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"177:124",
0
],
"latent_image": [
"177:128",
0
],
"noise": [
"177:118",
0
],
"sampler": [
"177:129",
0
],
"sigmas": [
"177:117",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"177:135": {
"class_type": "LTXVLatentUpsampler",
"inputs": {
"samples": [
"177:133",
0
],
"upscale_model": [
"177:110",
0
],
"vae": [
"177:100",
2
]
},
"_meta": {
"title": "LTXVLatentUpsampler"
}
},
"177:176": {
"class_type": "ManualSigmas",
"inputs": {
"sigmas": "1., 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0"
},
"_meta": {
"title": "ManualSigmas"
}
}
})
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)常见问答
The LTX-2 distilled model is optimized for faster video generation while maintaining high quality, making it efficient for quick content creation.
Ensure your resolution settings have dimensions divisible by 64 and frame count divisible by 8 plus 1 to maintain optimal video quality.
Yes, the workflow supports resolutions up to 1920x1088, provided your hardware can handle the processing requirements.
Focus on describing core actions and visual details to ensure the generated video accurately reflects your intended narrative.