Nodes/Comfyui-zhenzhen/Concurrent Submit | zhenzhen-veed-fabric-1.0-fal
ComfyUI Node

Concurrent Submit | zhenzhen-veed-fabric-1.0-fal

Talking-avatar video from one image and one audio file

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

This node wraps VEED's Fabric 1.0 - a talking-avatar service. You give it a person's image and an audio track, and it produces a video of that person "speaking" the audio, with lip-sync and head movement. It's the same trick as HeyGen's avatars, and it's the kind of thing that's awkward to do locally but trivial as a paid API call: upload a photo, upload a voice file, get a video. Inside ComfyUI it means you can build a graph where an image and a TTS node's audio feed straight into a talking-head video.

The concurrent wrapper is the standard Zhenzhen Submit pattern, and here it's video-pooled (ten workers). Each Submit returns a task; you collect them in Concurrent Collect Videos (ComflyConcurrent_Video_Await), which waits on all of them and restores slot order.

Inputs that matter

The required pair is the whole trick:

  • image_url - a public URL to the face/avatar image. Required in the schema, but the optional image socket is there too: if you connect an image directly it gets uploaded and used instead.
  • audio_url - a public URL to the speech audio. Same deal: the optional audio socket lets you connect ComfyUI audio (say, from a TTS node) and the node uploads it.
  • resolution - 480p or 720p.
  • api_key, image_way (base64/image_url), audio_way (upload/audio_url), poll_interval, max_poll_attempts, seed, skip_error - the standard fal-node set.

The audio_way and image_way dropdowns decide how your input travels: connect real tensors and leave them at upload/base64, or paste hosted URLs and switch to the URL modes.

How it works

Like the rest of the fal nodes, the original Comfly_veed_fabric_1_0_fal submits a job to fal's queue API (VEED Fabric 1.0 runs there) and polls until the video is rendered, then hands back a ComfyVideoAdapter. The concurrent wrapper skips straight to "submit": validate, push onto the bounded video executor (ten workers), return the COMFLY_VIDEO_FUTURE immediately. The collector does the waiting. Set its failure_mode to placeholder if you'd rather have a failed avatar render as a blank clip than abort the whole batch.

Setup

Install the pack once - ComfyUI Manager (search "Comfyui-zhenzhen"), or:

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

No models, no VRAM, no weights. You need a paid Zhenzhen key from ai.t8star.org (overseas) or api.seedance.nz (domestic). The fal channel pre-deducts credits on submit and settles after, so the cost hits your account before the video lands.

Gotchas

The quality ceiling is real: Fabric 1.0 is a solid avatar pipeline, but it's not deepfake-level - expect a working lip-sync, not a perfect twin, and feed it a clean frontal face photo. If nothing renders, the usual suspects are an audio URL the server can't fetch, an expired image URL, or a face that the detector simply won't pick out of a busy frame. And because both your inputs leave the machine and hit fal's servers, don't send anything here you'd be embarrassed to have processed off-site - the avatar-resale space has a checkered privacy history, and you're renting someone's GPU either way.

Categoryzhenzhen/FAL/Concurrent Submit

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 (1)

NameTypeDescription
taskCOMFLY_VIDEO_FUTURE