Nodes/ComfyUI_OmniAvatar/OmniAvatar All-in-One (14B)
ComfyUI Node

OmniAvatar All-in-One (14B)

Audio-driven avatars with OmniAvatar (14B)

By CallMe1101·Created about a year ago·Updated 10 months ago· 3
OmniAvatar All-in-One (14B)
  • portrait
  • audio
  • frames
prompt你好,欢迎体验 OmniAvatar
sample_steps20
sample_text_guide_scale3.0
sample_audio_guide_scale3.0
teacache_thresh0.20
seed91123456789
control_after_generatefixed

You hand it a face, a voice, and a line of text, and it hands back a video of that face saying the thing - mouth synced to the audio, expression moving along with it. For a long time that trick was the thing ComfyUI couldn't do: audio-driven avatar generation had no native workflow, and the community said so out loud when OmniAvatar's weights landed in mid-2025. This node is someone's answer to that gap - a single wrapper that turns OmniAvatar's Wan-based talking-avatar pipeline into one drag-in box.

What it actually is

OmniAvatar is a talking-avatar model built on top of Wan 2.1 - the community improved lineage of the old fantasytalking / OmniGen idea, and it was the first talking-avatar project to ship a 1.3B variant that ran on 8GB VRAM. The 14B model is the quality tier, and this node wraps its inference. "All-in-One" is fair: portrait + audio + prompt go in, a synchronized video comes out, and you never touch a command line.

Mechanically it's straightforward under the hood. The node saves your portrait to a temp PNG, takes whatever audio you feed it (more on that below), calls OmniAvatar's WanInferencePipeline.log_video(...), then reads the resulting MP4 back and extracts the frames into a tensor. It's a wrapper, not a reimplementation - which is exactly why the install is heavier than the node itself looks.

The inputs that matter

  • portrait (IMAGE): the static face that becomes your avatar. A clean front-facing headshot works best.
  • audio (AUDIO): the driving voice. The node auto-converts to 16kHz WAV, and it'll accept MP3/WAV buffers from ComfyUI audio nodes without complaint.
  • prompt (STRING): the text guide for what's being said and the delivery. Note the default is in Chinese - you can replace it freely.

The four knobs you'll actually touch, all optional:

  • sample_steps (default 20): sampling steps. Standard trade-off - fewer is faster, more is smoother.
  • sample_text_guide_scale and sample_audio_guide_scale (both default 3.0): separate guidance for text adherence versus audio/lip-sync adherence. Crank the audio one if the mouth drifts; ease off if things get weird.
  • teacache_thresh (default 0.2): TeaCache's temporal-cache threshold. TeaCache skips redundant computation across similar frames - it's the well-known Wan speed trick. Higher = faster but lazier; users report disabling it (0.0) improves face consistency at the cost of speed.
  • seed / control_after_generate: standard seed control - fixed replays the same result, dynamic rolls a new seed each run.

The single output is frames (IMAGE, an (F, C, H, W) sequence). Wire it into something like VHS' Save Video or a VideoViewer to actually save or preview it. Here's the gotcha: the README advertises a VIDEO object output, but the code this build ships returns only the frames tensor. Don't go hunting for a missing output port - it just isn't there yet.

Installing it - the real way

This one isn't a clean Manager one-click. Manager can install the pack, but the node is only half the story: it imports the original OmniAvatar repo at runtime, so you need that too.

cd ComfyUI/custom_nodes
git clone https://github.com/Omni-Avatar/OmniAvatar   # the original project + configs
git clone https://github.com/CallMe1101/ComfyUI_OmniAvatar
# download the 14B model weights and point the config at them

Then two manual bits the README insists on:

export PYTHONPATH=/path/to/custom_nodes/OmniAvatar:$PYTHONPATH   # so it can find WanInferencePipeline
pip install -r requirements.txt

That requirements file is a haul: torch, xfuser, peft, transformers, dlib, face_alignment, librosa, ffmpeg-python and friends. Plus the OmniAvatar repo's own requirements on top. Expect a real setup session, and expect the 14B weights to want serious VRAM - 1.3B ran on 8GB, but 14B OOMs on modest cards.

Troubleshooting

  • "找不到WanInferencePipeline" / ImportError on WanInferencePipeline: the classic. The node imports from custom_nodes/OmniAvatar/scripts and .../OmniAvatar/OmniAvatar, so the clone must be a sibling of ComfyUI_OmniAvatar, and your PYTHONPATH must point at it. Restart after fixing.
  • OOM on the 14B: real and common - the community hit it testing the 14B before the 1.3B existed. Try the 1.3B config if your card can't hold it.
  • No video appears in the UI: you're probably expecting a VIDEO output that this build doesn't have. You get frames; pipe them into a save/video node.

It's a young, small pack from a single author, with zero traction yet - so treat it as a wrapper to experiment with, and check the upstream OmniAvatar repo when something behaves oddly. For the first time, though, "make this face say this thing" is a single node on the canvas.

CategoryOmniAvatar

Inputs (9)

NameTypeDefaultDescription
portraitIMAGE
audioAUDIO
promptSTRING你好,欢迎体验 OmniAvatar
sample_stepsoptINT201–100
sample_text_guide_scaleoptFLOAT3.00–20
sample_audio_guide_scaleoptFLOAT3.00–20
teacache_threshoptFLOAT0.200–1
seedoptINT911234567890–18446744073709550000
control_after_generateoptCOMBOfixed2 options: fixed, dynamic

Outputs (1)

NameTypeDescription
framesIMAGE