Nodes/Comfyui-zhenzhen/Concurrent Submit | zhenzhen-heygen-avatar4-i2v-fal
ComfyUI Node

Concurrent Submit | zhenzhen-heygen-avatar4-i2v-fal

Talking-head video from a single photo, HeyGen Avatar 4, batched

By T8mars·Created about a year ago·Updated 2 days ago· 740
Concurrent Submit | zhenzhen-heygen-avatar4-i2v-fal
  • image
  • audio
  • task
promptHi.
image_url
api_key
audio_url
voiceserver_default
custom_voice
talking_stylestable
expressionnone
background_typenone
background_value#FFFFFF
resolution720p
aspect_ratio16:9
captionfalse
image_waybase64
audio_wayupload
poll_interval6
max_poll_attempts600
skip_errorfalse
seed0

This is the node that turns a still photo into a talking-head video. It wraps zhenzhen-heygen-avatar4-i2v-fal, the HeyGen Avatar 4 image-to-video endpoint on FAL: you feed a face, the node animates it speaking your prompt. The default prompt is just "Hi." - the endpoint's party trick is lip-synced speech from a single portrait, which is a whole category of work that local models still struggle with.

It's a concurrent submit node, so you can fire ten of these at once in the shared video pool. That's the use case: batch-test voices, compare talking styles, or animate the same photo across a dozen lines of dialogue and pick the reads you like.

How the wrapper works

The plain Comfly_heygen_avatar4_i2v_fal node is a FAL-queue client: it hits HeyGen's Avatar 4 endpoint through Zhenzhen's FAL proxy, and it's smart about options - the voice dropdown is actually loaded from HeyGen's live OpenAPI schema at runtime, with a fallback list if the fetch fails. The Submit wrapper keeps every input but returns a single task of type COMFLY_VIDEO_FUTURE, deferring the call to the video worker pool (default 10, COMFLY_VIDEO_CONCURRENCY env var).

The task output must flow into ComflyConcurrent_Video_Await, which waits for all connected tasks and returns video_1video_10 in order plus a status JSON. failure_mode (fail_fast / placeholder) controls whether one bad job aborts the batch or blanks the slot.

Inputs that matter

prompt is required - it's what the avatar says, not a scene description. image is the face (or image_url if you have a public URL). The audio path splits in two: connect audio (an AUDIO tensor) or audio_url to drive the exact audio you want, or leave both empty and pick a voice from the dropdown (104 options, or type into custom_voice to override). If audio is provided, voice is ignored - the tooltip says so explicitly.

talking_style (stable / expressive) and expression (none / happy) steer the performance. background_type (none/color/image/video) plus background_value (a hex like #FFFFFF, or a URL for image/video backgrounds) swap the backdrop. resolution goes 360p1080p, aspect_ratio offers 16:9/9:16/4:5/5:4/1:1/auto. caption adds burned-in subtitles. image_way and audio_way pick upload vs URL transport for each.

Install and gotchas

Pack install as always: ComfyUI Manager → search Comfyui-zhenzhen, or git clone https://github.com/T8mars/Comfyui-zhenzhen into ComfyUI/custom_nodes, restart. No local models.

FAL billing here is the hold-then-settle model (预扣制): a deposit is taken at submit and the real price lands after the render. The live-loaded voice catalog is a real feature - but it only loads if the node can reach HeyGen's schema, so in a firewall-happy environment you'll see the fallback list instead. Timeouts after a long render usually mean the video finished and the poll expired; check the site's task page before re-running. And HeyGen's avatar pipeline is sensitive to the source photo - a well-lit front-facing portrait will give you far better results than a side-angle crop, no matter what the node settings say.

Categoryzhenzhen/FAL/Concurrent Submit

Inputs (21)

NameTypeDefaultDescription
promptSTRINGHi.
imageoptIMAGE
image_urloptSTRING
api_keyoptSTRING
audiooptAUDIO
audio_urloptSTRING
voiceoptCOMBOserver_defaultserver_default leaves voice unset and lets FAL use its default. Ignored when audio is provided.
custom_voiceoptSTRINGOverrides voice dropdown when filled.
talking_styleoptCOMBOstable2 options: stable, expressive
expressionoptCOMBOnone2 options: none, happy
background_typeoptCOMBOnone4 options: none, color, image, video
background_valueoptSTRING#FFFFFFHex color for color background, or URL for image/video background.
resolutionoptCOMBO720p5 options: 360p, 480p, 540p, 720p, 1080p
aspect_ratiooptCOMBO16:96 options: 16:9, 9:16, 4:5, 5:4, 1:1, auto
captionoptBOOLEANfalse
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