Create talking or singing portrait videos from uploaded audio and portrait images with LTX 2.3. The workflow generates successive segments, spatially upscales and refines them, blends their boundaries, and saves individual segment videos plus an assembled H.264 MP4 at 25 FPS. Both saved outputs use the selected original recording, including accompaniment. For a first run, upload speech or singing and supply an image in all four portrait slots. Reuse the primary portrait in unused slots because every image loader remains connected. Replace shot 1's example prompt, "hello", with a visual description of the subject, setting, expression and motion. Prompts describe visuals; the recording supplies the voice. The source's intended single-shot setup leaves prompts 2–4 empty. Filling them supplies additional image/prompt pairs to the shot looper, but the supplied evidence does not establish its exact empty-slot filtering or rotation order. Audio start time is measured in seconds and defaults to 30; set it to 0 to begin at the start. Duration 0 loads the remaining recording. Select a short duration for an initial trial. Chunk duration is a positive target in whole seconds, not total video duration. One chunker determines loop count from the original recording; another derives segment timings from separated vocals. Both receive the same target duration, but identical boundaries or counts are not established. Their independent variation controls retain the source value of 10; units and exact effects are unspecified. Width and height control shared crop framing for shots 1 and 2, with separate crop positions. Base generation dimensions come from shot 1's crop at half scale, followed by a two-times spatial upscaler; rounding can affect final dimensions. Shots 3 and 4 skip that initial crop, so prepare compatible framing. Only RGB image outputs are connected, so uploaded transparency is not preserved. Generation and refinement have independent image strengths and disable switches. Disabling one stage's image guidance leaves the other stage unchanged and does not remove any upload requirement. Portrait compression is applied before both conditioning stages. The static-camera LoRA affects both sampling stages; strength 0 removes its contribution. Three additional slots accept names of compatible installed LoRAs, each with its own strength. None leaves a slot inactive. Generation steps, schedule shifts, stretching and terminal sigma control the initial sampling schedule. Refinement uses its separate comma-separated sigma sequence. Each stage has an independent seed, CFG value and sampler. Seed -1 randomizes that stage on each run; fix both seeds when comparing other settings. The negative prompt is shared and its influence depends on each stage's CFG. Keep the source sampling defaults for the first run. Decode tiling, overlap and last-frame handling are separate advanced controls; their exact conventions are not fully established by the supplied evidence. Dissolve frames controls boundary blending: 20 frames equals 0.8 seconds at 25 FPS. Overlap trimming is calculated separately, so retain the transition defaults initially. The dissolve curve is a string field; use only values supported by the installed transition node. Final and segment CRF settings independently control H.264 compression. Lower CRF means less compression and larger files. Encoded segments are reloaded for assembly, so final encoding cannot recover detail lost during segment encoding. Final encoding trims the video to the selected audio. Segment outputs are produced within the generation loop and cannot run independently. Longer recordings require more total processing and storage. The workflow relies on its configured models and custom nodes; the supplied dependency catalog does not resolve every required asset.
Runtime profile
Description
Create talking or singing portrait videos from uploaded audio and portrait images with LTX 2.3. The workflow generates successive segments, spatially upscales and refines them, blends their boundaries, and saves individual segment videos plus an assembled H.264 MP4 at 25 FPS. Both saved outputs use the selected original recording, including accompaniment. For a first run, upload speech or singing and supply an image in all four portrait slots. Reuse the primary portrait in unused slots because every image loader remains connected. Replace shot 1's example prompt, "hello", with a visual description of the subject, setting, expression and motion. Prompts describe visuals; the recording supplies the voice. The source's intended single-shot setup leaves prompts 2–4 empty. Filling them supplies additional image/prompt pairs to the shot looper, but the supplied evidence does not establish its exact empty-slot filtering or rotation order. Audio start time is measured in seconds and defaults to 30; set it to 0 to begin at the start. Duration 0 loads the remaining recording. Select a short duration for an initial trial. Chunk duration is a positive target in whole seconds, not total video duration. One chunker determines loop count from the original recording; another derives segment timings from separated vocals. Both receive the same target duration, but identical boundaries or counts are not established. Their independent variation controls retain the source value of 10; units and exact effects are unspecified. Width and height control shared crop framing for shots 1 and 2, with separate crop positions. Base generation dimensions come from shot 1's crop at half scale, followed by a two-times spatial upscaler; rounding can affect final dimensions. Shots 3 and 4 skip that initial crop, so prepare compatible framing. Only RGB image outputs are connected, so uploaded transparency is not preserved. Generation and refinement have independent image strengths and disable switches. Disabling one stage's image guidance leaves the other stage unchanged and does not remove any upload requirement. Portrait compression is applied before both conditioning stages. The static-camera LoRA affects both sampling stages; strength 0 removes its contribution. Three additional slots accept names of compatible installed LoRAs, each with its own strength. None leaves a slot inactive. Generation steps, schedule shifts, stretching and terminal sigma control the initial sampling schedule. Refinement uses its separate comma-separated sigma sequence. Each stage has an independent seed, CFG value and sampler. Seed -1 randomizes that stage on each run; fix both seeds when comparing other settings. The negative prompt is shared and its influence depends on each stage's CFG. Keep the source sampling defaults for the first run. Decode tiling, overlap and last-frame handling are separate advanced controls; their exact conventions are not fully established by the supplied evidence. Dissolve frames controls boundary blending: 20 frames equals 0.8 seconds at 25 FPS. Overlap trimming is calculated separately, so retain the transition defaults initially. The dissolve curve is a string field; use only values supported by the installed transition node. Final and segment CRF settings independently control H.264 compression. Lower CRF means less compression and larger files. Encoded segments are reloaded for assembly, so final encoding cannot recover detail lost during segment encoding. Final encoding trims the video to the selected audio. Segment outputs are produced within the generation loop and cannot run independently. Longer recordings require more total processing and storage. The workflow relies on its configured models and custom nodes; the supplied dependency catalog does not resolve every required asset.
Hover nodes for Pipe controls
Core
Primary Pipe surface
Driving audio
VHS_LoadAudioUpload
Shot 1 image
LoadImage
Shot 1 prompt
Text Multiline
Shot 2 image
LoadImage
Shot 2 prompt
Text Multiline
Shot 3 image
LoadImage
Shot 3 prompt
Text Multiline
Shot 4 image
LoadImage
Shot 4 prompt
Text Multiline
Portrait framing size
TKVideoUserInputsBasic
Segment duration
INTConstant
Extended
Additional surfaced controls
Negative prompt
CLIPTextEncode
Shot 1 framing
ImageResizeKJv2
Shot 2 framing
ImageResizeKJv2
Image guidance
LTXVImgToVideoInplace
Refinement image guidance
LTXVImgToVideoInplace
Camera and LoRAs
Lora Loader Stack (rgthree)
Segment transitions
TKCrossDissolve
Generation variation
RandomNoise
Generation sampling
LTXVScheduler
Generation guidance
CFGGuider
Generation sampler
KSamplerSelect
Refinement variation
RandomNoise
Refinement guidance
CFGGuider
Refinement sampler
KSamplerSelect
Refinement schedule
ManualSigmas
Decode tiling
LTXVSpatioTemporalTiledVAEDecode
Final video encoding
VHS_VideoCombine
Segment video encoding
VHS_VideoCombine
Original audio chunking
TKSmartAudioChunker
Vocal segment boundaries
TKSmartAudioChunker
Portrait preprocessing
LTXVPreprocess
Sources
1 sourceRemaining hardware or download-size estimates are not available yet.
Requirements
Text encoder · 6.92 GB · GGUF · Unknown
ltx-2-19b-lora-camera-control-static.safetensors
Not resolvedLoRA · Unknown
Upscaler · Hugging Face · Lightricks/LTX-2 · LTX 2
ltx-2.3_text_projection_bf16.safetensors
Not resolvedText encoder · Unknown
LTX-2.3-distilled-Q5_K_S.gguf
Not resolvedCheckpoint · Unknown
VAE · 348 MB · SAFETENSORS · bf16 · full · Unknown
LTX23_video_vae_bf16.safetensors
File unverifiedVAE · Unknown · LTX23 Video VAE Bf16.safetensors
Checkpoint · 435 MB · SAFETENSORS · Unknown
basic_data_handling
Not resolvedNode pack · Registry
Node pack · Registry
comfyui-easy-use
FoundNode pack · Registry
ComfyUI-GGUF
PossibleNode pack · Registry
comfyui-handynodes-kt
Not resolvedNode pack · Registry
Node pack · Registry
ComfyUI-LTXVideo
FoundNode pack · Registry
Node pack · Registry
comfyui-videohelpersuite
FoundNode pack · Registry
rgthree-comfy
FoundNode pack · Registry
was-ns
Not resolvedNode pack · Registry