Echo_Sampler
Echo_Sampler — the node that finally turns all that conditioning into talking-head frames
- model
- emb
- image
- frame_rate
Echo_Sampler is where the wait ends. LoadModel hauled the weights into VRAM, Predata turned your portrait and audio into conditioning, and this node runs the actual denoising loop that spits out your talking-head frames. It's the last stop in the three-node EchoMimic V3 flash chain, and the only one that hands you pixels.
How it works
Under the hood it's the Wan 2.1-Fun inpainting-audio pipeline doing a flow-matching sample - the scheduler defaults to a Flow UniPC / DPM++ style solver in the pack's config, not the classic epsilon-prediction Euler you might be used to from SD 1.5 days. The audio embeddings condition every frame, so the mouth and expressions track the clip; the reference image conditions appearance. The sampler also runs the denoiser in temporal chunks (context_frames at a time with context_overlap frames of overlap), which is how the flash model keeps 12 GB cards alive on 768×768 output. When it's done it returns the frames plus the fps to feed a video-encoding node.
Inputs that matter
model(MODEL_PIPE_E) - fromEcho_LoadModel.emb(MODEL_EMB_E) - fromEcho_Predata.seed- reproducibility. Same seed + same everything = same clip, so when you hit a good one, note the seed before touching the other knobs.cfg- default 3.5, and the README is explicit: 3.5 is the V3 recommendation; 1.0 is only valid in turbo mode and errors elsewhere. This is a flow-matching, guidance-distilled-era model - cranking CFG to 7 like an SDXL habit will overcook the clip rather than make it obey better.steps- default 25, but the flash model's whole selling point is short step counts: the README shows 8 steps for 768×768 on 12 GB. With Kijai's lightx2v LoRA you can go 10 steps (auto-UniPC), and at 4 steps it switches into LCM mode. Start at 8–10 for flash, climb only if quality suffers.sample_rate- audio sample rate, 8k–48k, default 16000. Leave it unless your source audio is recorded at something exotic.context_frames/context_overlap- the temporal window: 12 frames per chunk with 3 overlapping by default. Settingcontext_framesto 0 disables chunking (whole clip at once, more VRAM, usually slightly better temporal consistency). Lower it if you OOM; raise it if you see seams between chunks.save_video- if you'd rather not wire up VideoHelperSuite, flip this on to have the sampler write the file itself. Default off.
Outputs
image(IMAGE) - your video as a batch of frames. Wire it intoVHS_VideoCombine(from ComfyUI-VideoHelperSuite, the README's own example) to mux into an mp4.frame_rate(FLOAT) - the fps to feed that same combine node, so the frames play at the right speed.
Installing
Same pack, same story as its siblings - ComfyUI Manager (search ComfyUI_EchomimicV3_DL) or:
cd ComfyUI/custom_nodes
git clone https://github.com/lieding/ComfyUI_EchomimicV3_DL
cd ComfyUI_EchomimicV3_DL
pip install -r requirements.txt
Restart after. Note this pack doesn't include a video-save helper, so grab VideoHelperSuite too if you're not using save_video - it's the standard way to turn the frame batch into something you can watch.
Common issues
Out of memory at sample time. Your order of operations: lower partial_video_length in Predata, drop context_frames toward 4–6, reduce resolution in Predata, and confirm block_offload is on in LoadModel. The README's numbers (65 block length for 12 GB, 97 for 16 GB) assume that setup.
Washed-out or fried output. Check cfg - this is not an SDXL checkpoint. 3.5 is the house default for V3; anything past 6 is cooking. If you're at 25 steps on flash, cut to 8 and see if the output holds; more steps on a distilled-style flow model mostly buys you render time, not quality.
Weird hands or garbled gestures. Partly the nature of a 1.3B model - the shipped negative prompt is basically a hand/gesture whitelist ("Strange and twisted hands, bad fingers..."), so keep it. Lower facecrop_ratio if the face is tiny, and give the model a clean, front-facing reference image; that's the single biggest quality lever.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL_PIPE_E | — | |
| emb | MODEL_EMB_E | — | |
| seed | INT | 00–2147483647 | — |
| cfg | FLOAT | 3.50–10 | — |
| steps | INT | 251–100 | — |
| sample_rate | INT | 160008000–48000 | — |
| context_frames | INT | 120–50 | — |
| context_overlap | INT | 30–10 | — |
| save_video | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| frame_rate | FLOAT | — |