Nodes/Comfyui-zhenzhen/zhenzhen-heygen-avatar4-i2v-fal
ComfyUI Node

zhenzhen-heygen-avatar4-i2v-fal

HeyGen avatar 4 image-to-video inside ComfyUI

By T8mars·Created about a year ago·Updated 2 days ago· 740
zhenzhen-heygen-avatar4-i2v-fal
  • image
  • audio
  • video
  • video_url
  • response
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

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 prompt with the voice you chose (or server_default to let fal pick). Attach audio / audio_url and the node lip-syncs to that instead, and voice is ignored.
  • talking_style - stable (calmer, better for narration) or expressive (more animated). expression - none or happy for the default face mood.
  • Background - background_type of none/color/image/video, with background_value holding a hex color (#FFFFFF default) 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 try expressive before 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* - color needs a hex in background_value, image/video need a URL there; leaving it #FFFFFF while selecting image gets 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.

Categoryzhenzhen/FAL

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

NameTypeDescription
videoVIDEO
video_urlSTRING
responseSTRING