凤希AI - LTX2.3采集器
A custom LTX 2.3 sampler that locks the face and syncs the lips at once
- model
- positive
- negative
- latent
- ref_latent
- audio_cond
- LATENT
FxAiLTX23Sampler (凤希AI - LTX2.3采集器) is a drop-in sampler for LTX 2.3 that does three jobs the stock KSampler won't: it merges an audio conditioning into the positive prompt for native audio-video cross-attention, anchors the character's face to a reference latent so it doesn't drift across frames, and applies per-step temporal smoothing. Long LTX clips have two chronic failure modes - the face subtly changes identity between frames, and lipsynced audio drifts out of sync over a few seconds - and this node is the pack's answer to both. It sits under the category LTX23/自定义采样(音画+人物锁定), which translates to "custom sampling, audio+video and person-lock," and that's exactly what it is.
How it works: it's not a new scheduler or a fancy method. It's a per-step callback layered on top of ComfyUI's own comfy.sample.sample (euler/normal). Before sampling, it concatenates your audio_cond (the conditioning from an LTXAudioConditioner, per the source comment) into the positive, so the LTX 2.3 AV cross-attention sees the audio track. Then, on every step, three corrections pile onto the latent x:
- ID anchor: pulls
xtoward yourref_latent- the first-frame reference - hard during the first 40% of steps, then fading. That's the face-lock. - STG-style temporal constraint: nudges
xtoward the previous step's latent, suppressing per-frame character drift. - Audio sync: a
tanhpull toward the reference shaped byaudio_sync_weight, which is what drives lip motion toward the audio.
The knobs that matter: steps (default 12), cfg_scale (default 3 - LTX is flow-matching, keep it low), stg_weight (0.38), id_anchor_strength (0.35, how hard the face is glued to ref_latent), and audio_sync_weight (0.45, how hard the mouth follows audio). The three required conditionings are positive, negative, and audio_cond; ref_latent is the latent of your first/reference frame - pull it from a prior segment's latent via FxAiLatentGetFrames and the continuity story gets very tidy. Output is a single LATENT.
The LTX context is worth knowing: LTX is the speed tier of local video (draft in LTX, refine in Wan), and 2.3 is the mainstream primary generator by mid-2026 - but it punishes short prompts and loses to Wan on faces and complex motion. This sampler is a band-aid for exactly that weakness: it trades a bit of sampling time for keeping the face honest and the lips timed.
Install: ComfyUI Manager → "fxai-toolkit", or cd ComfyUI/custom_nodes && git clone https://github.com/fxai666/fxai-toolkit, restart. Auto-installs soundfile/psutil, needs FFmpeg. Labels are Chinese (凤希AI is a Chinese-first author; support in QQ 775649071 / Bilibili).
Troubleshooting: if the face-lock feels like rubber-banding, lower id_anchor_strength rather than the whole sampler. If lips lag, raise audio_sync_weight slowly - past ~0.6 you start warping geometry for the sake of the mouth. And ref_latent must actually be a latent, not a decoded image: encode it or slice it from an earlier latent, or the math silently gets weird. It's a fiddly node, but it's the fiddly node that makes a 3-minute LTX clip hold together.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent | LATENT | — | |
| ref_latent | LATENT | — | |
| audio_cond | CONDITIONING | — | |
| steps | INT | 124–32 | — |
| cfg_scale | FLOAT | 3.001–10 | — |
| stg_weight | FLOAT | 0.380–1.2 | — |
| id_anchor_strength | FLOAT | 0.350.1–0.8 | — |
| audio_sync_weight | FLOAT | 0.450.1–0.8 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |