ComfyUI Node

FL Hedra API

Turn a photo and an audio clip into a talking video

By filliptm·Created 3 years ago·Updated about 17 hours ago· 628
FL Hedra API
  • image
  • frames
  • api_log
api_key
audio_file_pathassets/audio.mp3
text_promptcharacter talking on a white background
aspect_ratio1:1
resolution720p
duration_seconds0.0
seed0

Hedra is one of the paid talking-avatar platforms - it comes up in the same breath as Runway, Kling, and HeyGen whenever people compare tools for making a still photo lip-sync to audio. FL_Hedra_API is Fill-Nodes' wrapper around that service: hand it a face, an audio file, and a text prompt, and it comes back with a lip-synced performance as ComfyUI frames. Like the rest of the pack's API nodes, no generation happens locally - you're paying Hedra's cloud, this node is just the plumbing.

How it works

You give it an image (the face), a path to an audio file, and a text_prompt describing the performance. The node calls Hedra's API, polls until the job finishes, downloads the resulting video, and extracts its frames back into ComfyUI as an IMAGE batch, plus a text log of what happened along the way. Aspect ratio and resolution are set up front so the output frames come back sized the way you want, rather than needing a resize pass afterward.

The inputs and outputs that matter

Required:

  • api_key - your Hedra API key. This is what gets billed, not your ComfyUI host.
  • image - the face to animate.
  • audio_file_path - a path on disk to an audio file (default shown is assets/audio.mp3), not an AUDIO socket. That's the detail that trips people up most - see below.
  • text_prompt - describes the performance, e.g. "character talking on a white background."
  • aspect_ratio (1:1 / 16:9 / 9:16) and resolution (720p / 540p) - set the output framing up front.

Optional: duration_seconds (0 = let the audio decide) and seed.

Outputs: frames (the IMAGE batch you feed into a video-combine node) and api_log (a STRING - read this first if something looks wrong, since Hedra errors surface here rather than as a hard crash).

How to install it

Part of the ComfyUI_Fill-Nodes pack. In ComfyUI Manager, search ComfyUI_Fill-Nodes, install, restart. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes

then restart ComfyUI. No local model download - you need a Hedra account and API key, which you get from Hedra directly, not from this repo.

Common issues & troubleshooting

audio_file_path wants a file path, not an audio input. Unlike some of the pack's other avatar-generation nodes (its Fal AI Kling avatar equivalent, for instance, takes a live AUDIO socket), this one expects a string path to an audio file already sitting on disk. If your audio is coming out of an upstream ComfyUI audio node, you need to save it to a file first and point this node at that path - wiring an AUDIO output directly in won't work because the input type is STRING.

Nothing comes back, no crash either. Check api_log before anything else. A bad key, an exhausted quota, or a rejected input (unclear face, audio format Hedra doesn't like) shows up as text there rather than as a ComfyUI error popup.

It's slow, and that's expected. This is a network round-trip: upload, Hedra's generation queue, then a video download and frame extraction on your end. A long pause is normal, not a hang - don't kill the run assuming it's stuck.

Clip length follows your audio, not a slider. With duration_seconds left at 0, the output length is driven by how long your audio file is. If you want a specific clip length, trim your audio to that length first rather than expecting a duration setting to cut it short.

Front-facing, clear portraits work best. As with every talking-avatar tool in this category, a blurry, tiny, or heavily-angled source photo gives a noticeably worse lip-sync than a clean front-on portrait.

Category🏵️Fill Nodes/AI

Inputs (8)

NameTypeDefaultDescription
api_keySTRING
imageIMAGE
audio_file_pathSTRINGassets/audio.mp3
text_promptSTRINGcharacter talking on a white background
aspect_ratioCOMBO1:13 options: 1:1, 16:9, 9:16
resolutionCOMBO720p2 options: 720p, 540p
duration_secondsoptFLOAT0.0
seedoptINT00–4294967295

Outputs (2)

NameTypeDescription
framesIMAGE
api_logSTRING