zhenzhen-heygen-avatar4-i2v-fal
HeyGen avatar 4 image-to-video inside ComfyUI
- image
- audio
- video
- video_url
- response
Here's the thing people actually want from HeyGen: hand it a still of a face and it makes that face talk - lips synced to a script, natural head movement, no 3D-model cleanup required. That's the whole job of this node. It's the HeyGen avatar 4 image-to-video endpoint wrapped up in the Comfyui-zhenzhen pack, and it's the node you reach for when you need a talking-head clip from a photo you already have, mid-workflow, without leaving ComfyUI.
Everything you'd expect from a talking-avatar tool is here: pick a voice (the dropdown has 100+ voices), attach your own audio if you have it, control expression and talking style, swap the background, choose resolution and aspect ratio. It's the closest thing this pack has to a "digital human" node, and it's a closed-model API call, so no local weights and no VRAM cost - just per-clip credits through Zhenzhen's fal proxy.
How it works
HeyGen avatar 4 i2v is an image-to-video job: the still face goes in (image input, or image_url), the script goes in the prompt (the default is just "Hi." - one word will do for a test), and the model animates the face. The node submits to Zhenzhen's fal proxy, polls, downloads the result MP4 and returns it as a VIDEO output.
Key mechanics:
- Voice vs audio - no audio attached? The model reads the
promptwith thevoiceyou chose (orserver_defaultto let fal pick). Attachaudio/audio_urland the node lip-syncs to that instead, andvoiceis ignored. talking_style-stable(calmer, better for narration) orexpressive(more animated).expression-noneorhappyfor the default face mood.- Background -
background_typeofnone/color/image/video, withbackground_valueholding a hex color (#FFFFFFdefault) or a URL for image/video backgrounds. caption- on/off for burnt-in subtitles.custom_voice- if you have a specific voice ID, drop it here; it overrides the dropdown.
The inputs most people set
prompt, image (the face), voice, talking_style, resolution (360p–1080p), aspect_ratio (16:9 / 9:16 / 4:5 / 5:4 / 1:1 / auto). That's the whole workflow for a talking-head video in about six fields.
Installing it
ComfyUI Manager → search Comfyui-zhenzhen → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
Restart, paste your api_key into the widget. No model downloads; image_way (base64 default vs image_url) only changes how your photo travels.
Common issues
- Stiff or unnatural motion - this is where HeyGen's quality lives, but
stable+ a mid-quality resolution is deliberately conservative. Bump resolution and tryexpressivebefore blaming the node. - Voice doing nothing - you attached audio; that's expected (audio wins over voice). Disconnect audio if you wanted the TTS path.
- Blank background_ input* -
colorneeds a hex inbackground_value,image/videoneed a URL there; leaving it#FFFFFFwhile selectingimagegets you a white screen. - The pack standard gotchas - empty key, 443/VPN-in-TUN-mode for overseas servers, vendor 500s needing a re-run, pre-deducted fal billing refunding the difference afterward.
One aside: a talking avatar from a single photo is exactly the thing people should be mildly careful about - HeyGen is a closed commercial service, so whatever moderation it applies to the face or script applies here too, and the node can't bypass it.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Hi. | — |
| imageopt | IMAGE | — | |
| image_urlopt | STRING | — | |
| api_keyopt | STRING | — | |
| audioopt | AUDIO | — | |
| audio_urlopt | STRING | — | |
| voiceopt | COMBO | server_default | server_default leaves voice unset and lets FAL use its default. Ignored when audio is provided. |
| custom_voiceopt | STRING | Overrides voice dropdown when filled. | |
| talking_styleopt | COMBO | stable | 2 options: stable, expressive |
| expressionopt | COMBO | none | 2 options: none, happy |
| background_typeopt | COMBO | none | 4 options: none, color, image, video |
| background_valueopt | STRING | #FFFFFF | Hex color for color background, or URL for image/video background. |
| resolutionopt | COMBO | 720p | 5 options: 360p, 480p, 540p, 720p, 1080p |
| aspect_ratioopt | COMBO | 16:9 | 6 options: 16:9, 9:16, 4:5, 5:4, 1:1, auto |
| captionopt | BOOLEAN | false | — |
| image_wayopt | COMBO | base64 | 2 options: base64, image_url |
| audio_wayopt | COMBO | upload | 2 options: upload, audio_url |
| poll_intervalopt | INT | 61–60 | — |
| max_poll_attemptsopt | INT | 60010–3600 | Default 600*6s = 3600s timeout. |
| skip_erroropt | BOOLEAN | false | — |
| seedopt | INT | 00–18446744073709550000 | Execution 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)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| response | STRING | — |