Nodes/Comfyui-zhenzhen/zhenzhen-veed-fabric-1.0-fal
ComfyUI Node

zhenzhen-veed-fabric-1.0-fal

Talking-head avatar video from one photo and an audio file

By T8mars·Created about a year ago·Updated 2 days ago· 740
zhenzhen-veed-fabric-1.0-fal
  • image
  • audio
  • video
  • video_url
  • response
image_url
audio_url
api_key
resolution480p
image_waybase64
audio_wayupload
poll_interval6
max_poll_attempts600
skip_errorfalse
seed0

You have a photo of a person and an audio clip, and you want a video of that person talking - lips synced, head moving. That used to mean a dedicated avatar service and a browser tab full of uploads. Comfly_veed_fabric_1_0_fal turns it into one node in your graph: in goes an image and an audio track, out comes a VIDEO you can preview and save like anything else ComfyUI produced.

It's part of the Comfyui-zhenzhen pack, and like every FAL node in that pack it's a cloud wrapper - VEED's fabric-1.0 model runs on fal, not on your GPU. You're buying capability you can't run locally (there are no open weights for this), which is the whole category this pack exists for. For voiceover, dubbing, or a quick talking-head for a video project, it's genuinely the fast path.

How it works

The node takes your image and audio, prepares them (base64 by default, or as URLs), and submits them to the veed/fabric-1.0 fal endpoint through Zhenzhen's proxy. Then it polls until the render's ready, downloads the result, and returns it as both a VIDEO output and a video_url string you can grab directly. The raw response JSON comes out too, which is handy if you ever want the task metadata.

Two inputs feed it, and you can provide either as a live connection or a URL:

  • image (IMAGE) or image_url - the person. A clean, front-facing headshot works best; the model has to invent the mouth and neck motion, so give it a face worth animating.
  • audio (AUDIO) or audio_url - the speech track. Default audio_way is upload, which takes your connected audio and uploads it; switch to audio_url if you already have a hosted file.

resolution is the only real dial - 480p or 720p. 480p is plenty for a talking-head draft and uses fewer credits; go 720p for anything that'll actually ship.

Installing and setting up

Install through ComfyUI Manager (search Comfyui-zhenzhen) or:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen

Restart ComfyUI. No model downloads - everything runs on fal. You need an API key from Zhenzhen's overseas "AI工坊" storefront; paste it into api_key. Remember the FAL pricing quirk: routes are pre-charged (the README cites ~3.4 credits held up front) and the difference is refunded after the run.

Common issues

Two failure modes worth knowing before you hit Run. First, image_url/audio_url are both marked required in the schema, but the node only needs one source of each - the _way toggles decide which is used, and passing neither raises an "requires image/audio inputs or URLs" error. Second, if the whole thing stalls, that's usually the network: the overseas server throws 443 errors without a proxy (TUN mode), per the README. A skip_error toggle is on every node in this pack - flip it and a failure returns empty outputs instead of aborting your whole workflow.

One last thing: the input photo quality matters more than any setting. Grainy or side-angle faces produce uncanny mouth sync. Feed it a clean headshot and VEED Fabric does the rest - the node is the boring part, which is exactly what you want from it.

Categoryzhenzhen/FAL

Inputs (12)

NameTypeDefaultDescription
image_urlSTRING
audio_urlSTRING
imageoptIMAGE
audiooptAUDIO
api_keyoptSTRING
resolutionoptCOMBO480p2 options: 480p, 720p
image_wayoptCOMBObase642 options: base64, image_url
audio_wayoptCOMBOupload2 options: upload, audio_url
poll_intervaloptINT61–60
max_poll_attemptsoptINT60010–3600Default 600*6s = 3600s timeout.
skip_erroroptBOOLEANfalse
seedoptINT00–18446744073709550000Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter.

Outputs (3)

NameTypeDescription
videoVIDEO
video_urlSTRING
responseSTRING