Nodes/ComfyUI_iAskAsk_SoulX_FlashHead/iAskAsk Local FlashHead Sampler
ComfyUI Node

iAskAsk Local FlashHead Sampler

FlashHead sampling in ComfyUI

By UCreateAI·Created 2 months ago·Updated 2 months ago· 0
iAskAsk Local FlashHead Sampler
  • pipeline
  • ref_audio
  • avatar_image
  • video
seed42
width512
height512

This is where the magic actually happens. The "iAskAsk Local FlashHead Sampler" is the payoff node of this pack: you hand it the pipeline from the Loader, a single portrait, and a driving audio clip, and it returns a talking-head video where the person in the picture speaks with believable lip sync. Everything before it - the 12GB model download, the Loader, the reference image - is just staging for this node. Nothing moves until here.

If you've read the sibling article on the Loader, you know the deal: FlashHead is Soul-AILab's 1.3B audio-driven talking-head model, wrapped as two typed nodes, and this is the one that actually samples. The wider context in the audio knowledge base is that local talking-head work is real but second-class in ComfyUI - a pile of bespoke packs, each with its own dependency stack - and this is one of those bespoke packs. It doesn't call any API and needs no key; the "Local" in the name is the point.

How it works

The node's job breaks into a few mechanical steps, and knowing them explains the whole design:

  1. It writes the incoming AUDIO tensor and IMAGE to temporary files on disk (a wav and a png), then reads the audio back with librosa at 16kHz.
  2. wav2vec2 (the small encoder you had to download) turns the audio into embeddings the model can condition on.
  3. The audio is cut into short slices. Each slice generates a clip conditioned on a rolling ~8-second window of cached audio, the overlapping motion-frame heads are trimmed off, and the clips are stitched back together.

That slicing is the "long audio" feature - it's how a 30-second voice clip doesn't blow up your VRAM but still produces one coherent video. The model runs at a hard-coded 4 sampling steps, which is the few-step-distillation playbook: fast, but you're trading away the last bit of refinement for speed, exactly as distilled models always do.

The inputs you actually set

  • pipeline - the FlashHead Pipeline from the Loader. First wire this up or the node is dead on arrival.
  • ref_audio - an AUDIO tensor. Load it with ComfyUI's Load Audio / audio-input nodes. Longer clips are fine; that's what the slicing is for.
  • avatar_image - an IMAGE with one clear, front-ish face. Keep it simple: a single subject, decent lighting. The code even runs with face-crop disabled, so garbage in, garbage out.
  • seed - default 42. Bump it to get a different motion take. Note the widget floor is 0, so the README's "-1 for random" claim doesn't actually work - just pick a different number.
  • width / height - default 512×512, and that's what the author actually tested (continuous generation for a minute-plus). The range goes up to 2048 in steps of 8, but don't start there; 512×512 is the safe, known-good resolution.

The output

One VIDEO (labeled "video"), written as an mp4 to ComfyUI's output folder and returned as a proper video object. Wire it into a Preview Video / Video Combine-style node to see and save it. The audio is muxed back in, so the file you get has the original sound - no separate audio track to reattach.

Getting it running and where it trips

Install is the same as the Loader - it's the same pack: Manager search for "ComfyUI_iAskAsk_SoulX_FlashHead", or git clone https://github.com/iaskask-com/ComfyUI_iAskAsk_SoulX_FlashHead into custom_nodes, then pip install -r requirements.txt. Both models must be present and findable (the Loader article covers the path mismatch trap in the download scripts - worth reading before you blame this node).

Things that will actually bite:

  • ffmpeg must be on your PATH. The node shells out to a system ffmpeg binary to mux the audio into the final mp4. If you get an ffmpeg-not-found error, that's the cause - install ffmpeg and retry.
  • VRAM. This is a ~12GB model running at bf16 on Ampere-or-newer GPUs. On a 12GB card you're realistically right at the edge; close other heavy stuff.
  • First run is slow. A minute-plus of continuous generation is the author's own test note, and that's after the models are loaded. Chunking keeps memory flat, but it doesn't make the whole thing fast.
  • Don't judge it on a bad reference photo. If the face is occluded or tiny, the "talking head" has nothing to work with - recrop before you curse the model.

It's not a silver bullet, and a 1.3B model won't outdo the big closed lip-sync services on a perfect-enunciating celebrity closeup. But for a fully local, free, portrait-plugs-in workflow, this is a remarkably short path from "one photo and a voice file" to "video that looks like a person talking."

CategoryiAskAsk/FlashHead

Inputs (6)

NameTypeDefaultDescription
pipelineiAskAsk_FlashHead_Pipeline
ref_audioAUDIO
avatar_imageIMAGE
seedINT420–18446744073709550000
widthoptINT51264–2048
heightoptINT51264–2048

Outputs (1)

NameTypeDescription
videoVIDEO