HeyGen Avatar IV
HeyGen Avatar IV turns a still photo into a talking presenter
- image
- background
- speech
- video
This is the "AI presenter" node. Give HeyGen Avatar IV an image of a person and some speech, and it comes back with a video of that face talking, lipsynced to the audio - the thing you've seen a thousand times in corporate onboarding videos and, lately, in plenty of very convincing deepfakes. It's the rare ComfyUI node that isn't about generating media at all; it's about animating someone. That makes it useful and also worth a beat of caution about what you're animating and who owns the face.
It runs through the Runware/ComfyUI-Runware pack, which means no local GPU and no HeyGen account to set up separately - one Runware API key covers this node and every other model in the catalog. The heavy lifting happens on HeyGen's servers; your graph just passes parameters.
How it works
The node takes either a script to be spoken (via the Runware Speech builder, which carries text plus a voice pick) or an audio file (UUID or URL) to lipsync against, then drives HeyGen's avatar API with an avatar ID. That dropdown is the star: 514 preset avatars, all the named photoreal stock presenters plus your own photo/video avatars if you've trained them on HeyGen's side. Output comes back as a native VIDEO (or a saved file path when ComfyUI's runtime lacks the native type), and the title bar shows the run cost like every other node here.
The inputs that matter
- speech - wire in a Runware Speech builder node with the text and a voice. This is how you get dialogue without preparing an audio file yourself.
- audio - the alternative path: an existing audio clip as a UUID or URL. Pick one, not both, depending on whether you're scripting or reusing a track.
- avatar - the presenter. Browse the 500+ presets or use
(default). If you want a specific person from an image, that's what theimageinput is for (HeyGen photo avatars). - image - your own still to animate, if you're not using a stock avatar.
- background (
IMAGE) or settings.backgroundColor (hex) - where they stand. Thebackgroundsocket takes an actual image; the hex field is for a solid color.settings.removeBackgroundexists too, with the honest caveat baked into the tooltip: video avatars must have been trained with matting enabled for it to work. - settings.expressiveness - low/medium/high. Low keeps things stiff and professional; high gets animated eyebrows.
size (720p/1080p), numberResults (max 4), outputFormat, and the standard safety/TTL/output-quality fields round it out.
Installing
Install the pack once and every node in it shows up together:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, or use ComfyUI Manager and search Runware. Needs a Runware API key - Settings panel, RUNWARE_API_KEY, or runware auth login.
Where people get burned
The speech socket is a custom type, not a text box - beginners drag it in expecting a prompt field and get a dangling input. Add the Runware Speech builder from Runware/Params. Also, don't expect a deepfake-level tool from the stock avatars; the preset presenters look like stock presenters, which is the point. If you want your own face moving, that means training a photo avatar on HeyGen's platform first - the node is the runtime, not the trainer. And be smart about consent; this is a node that makes it very easy to put words in someone's mouth, and that cuts both ways.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| imageopt | IMAGE | — | |
| backgroundopt | IMAGE | — | |
| speechopt | RUNWARE_SPEECH | — | |
| audioopt | STRING | Audio input (UUID or URL). | |
| positivePromptopt | STRING | Text prompt describing elements to include in the generated output. | |
| sizeopt | COMBO | 1080p (16:9) | Output size. Only one of resolution or dimensions is sent. |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| avataropt | COMBO | (default) | HeyGen avatar ID for a photo or video avatar. |
| settings.backgroundColoropt | STRING | Hex color code for solid background (e.g. #ff0000). | |
| settings.expressivenessopt | COMBO | low | Controls the level of avatar expressiveness. |
| settings.removeBackgroundopt | BOOLEAN | false | Remove the avatar background. Video avatars must be trained with matting enabled. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| safety.modeopt | COMBO | fast | Safety checking mode for video generation. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |