XB-BOX - 🎵 语音转视频分块(单人)
The no-surprises InfiniteTalk engine
- model
- model_patch
- positive
- negative
- vae
- audio_encoder_output_1
- clip_vision_output
- start_image
- previous_frames
- model
- positive
- negative
- latent
- trim_image
If you're doing a talking-head video with exactly one speaker, the do-everything XB_WanInfiniteTalkToVideo node works fine - but it carries a mode toggle and a stack of two-speaker inputs you'll never touch. XB_WanInfiniteTalkToVideo_Single ("XB-BOX - 🎵 语音转视频分块(单人)") is the pack's fixed single-speaker version: the same audio-to-video chunk engine, minus the ambiguity.
The mechanism is identical under the hood - it routes through the same shared audio-processing helper that the combo node uses, so the output contract is what you already know: a patched model, positive, negative, latent, and the trim_image INT telling the relay how many overlap frames to drop.
How it works
The inputs are the single-speaker subset, all required and upfront: model, model_patch, positive/negative conditioning, vae, width/height (832×480), length (81), audio_encoder_output_1, motion_frame_count (9), audio_scale (1.0), vae_tile_size (256). Optional: clip_vision_output for identity, start_image to pin the first frame, previous_frames for seamless chaining across segments, plus the usual scale_method/crop_mode.
The node clones the model, patches the audio embeddings (downsampled from 50fps to 25fps) into the conditioning, VAE-encodes your start image as a concat latent with a mask, and - critically - validates previous_frames against motion_frame_count, raising a clear error if you feed it fewer frames than the overlap demands. That check is the kind of thing that saves beginners an hour of "why does my chain jump."
When to use it
When your graph will never be two-speaker. The fixed-input design has one real advantage beyond clarity: it can't silently switch modes on you, and the required-input list makes a broken wiring obvious at a glance instead of failing at queue time. Pair it with the XB_WanInfiniteTalk_ParamBus (which carries the audio encoder, clip vision and chunking settings) and a relay node, and it slots straight into the pack's bus architecture.
Install & notes
Same pack ritual: ComfyUI Manager → XB_ToolBox, or git clone https://github.com/wjluoxiao/XB_ToolBox.git into custom_nodes, restart. Declared deps opencv-python + easyocr, no weights shipped.
One honest note: "single speaker" describes the audio channel count, not the shot - the character is still whatever your start_image and prompt say. And as with all InfiniteTalk work, this is the conditioning/patching step, not the sampler: wire the outputs into a KSampler or let a relay drive it, then expect the usual niche-model debugging if lips and audio disagree.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| model_patch | MODEL_PATCH | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| width | INT | 83216–8192 | — |
| height | INT | 48016–8192 | — |
| length | INT | 811–8192 | — |
| audio_encoder_output_1 | AUDIO_ENCODER_OUTPUT | — | |
| motion_frame_count | INT | 91–33 | — |
| audio_scale | FLOAT | 1.00-10–10 | — |
| vae_tile_size | INT | 25664–3840 | — |
| clip_vision_outputopt | CLIP_VISION_OUTPUT | — | |
| start_imageopt | IMAGE | — | |
| previous_framesopt | IMAGE | — | |
| scale_methodopt | COMBO | lanczos | 5 options: lanczos, bilinear, bicubic, nearest-exact, area |
| crop_modeopt | COMBO | center | 2 options: center, disabled |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |
| trim_image | INT | — |