Nodes/XB_ToolBox/XB-BOX - 🎵 语音转视频分块(单人)
ComfyUI Node

XB-BOX - 🎵 语音转视频分块(单人)

The no-surprises InfiniteTalk engine

By wjluoxiao·Created 5 months ago·Updated 6 days ago· 302
XB-BOX - 🎵 语音转视频分块(单人)
  • model
  • model_patch
  • positive
  • negative
  • vae
  • audio_encoder_output_1
  • clip_vision_output
  • start_image
  • previous_frames
  • model
  • positive
  • negative
  • latent
  • trim_image
width832
height480
length81
motion_frame_count9
audio_scale1.00
vae_tile_size256
scale_methodlanczos
crop_modecenter

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.

CategoryXB_ToolBox/Pipeline

Inputs (17)

NameTypeDefaultDescription
modelMODEL
model_patchMODEL_PATCH
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–8192
heightINT48016–8192
lengthINT811–8192
audio_encoder_output_1AUDIO_ENCODER_OUTPUT
motion_frame_countINT91–33
audio_scaleFLOAT1.00-10–10
vae_tile_sizeINT25664–3840
clip_vision_outputoptCLIP_VISION_OUTPUT
start_imageoptIMAGE
previous_framesoptIMAGE
scale_methodoptCOMBOlanczos5 options: lanczos, bilinear, bicubic, nearest-exact, area
crop_modeoptCOMBOcenter2 options: center, disabled

Outputs (5)

NameTypeDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
trim_imageINT