Nodes/ComfyUI-HunyuanVideo-Foley/Hunyuan Foley: Generate Audio
ComfyUI Node

Hunyuan Foley: Generate Audio

Put sound on your video without re-generating it

By railep·Created about a year ago·Updated about a year ago· 5
Hunyuan Foley: Generate Audio
  • video
  • audio
  • sample_rate
  • audio_wav_path
  • merged_video_path
prompt
config_nameconfig.yaml
diffusion_model
vae_model
clip_vision_model
clap_model
guidance_scale4.5
num_inference_steps50
save_videotrue
save_audiotrue
video_path
video_fps16.00
deviceauto
gpu_id0
output_diroutputs/hunyuan_foley

Most video models ship silent. You generate a clip, love the motion, and then stare at a .mp4 that needs a soundbed from somewhere else. Hunyuan Foley is the node that fixes exactly that: it takes a video you already have and writes synchronized sound effects onto it - footsteps, whooshes, rain, a door slamming, whatever the frames suggest. It won't touch a single pixel of your footage; it just makes it stop being silent.

It's a ComfyUI wrapper around Tencent's HunyuanVideo-Foley model (released August 2025), and it sits in a genuinely useful niche. The wider HunyuanVideo family has gone from first mover to barely-run-locally - the KB has it marked declining - but the foley model is the piece of that lineup that still earns its keep. If you only ever generate video, you've seen the pitch from LTX-2 (native audio+video in one pass) and Wan's S2V experiments. This is the other route: a dedicated video-to-audio model you bolt onto any silent render, Wan or LTX or meme-tier, after the fact.

Fair warning up front, from the launch-week consensus: it's good at sounds, not speech. The top comment thread on the release thread settled on "better than MMAudio, but not that great" - thuds, textures, and atmosphere read well; attempts to make a character talk come out as mumbling nonsense. Set your expectations as "foley pass," not "dubbing."

How it works

The node loads four models plus a helper: the HunyuanVideo-Foley diffusion transformer and its 128-dim audio VAE, a SigLIP2 vision encoder, a CLAP text encoder, and a Synchformer for audio-visual sync features. Your video gets decoded to frames, the frames go through SigLIP2 and Synchformer, and your prompt goes through CLAP. Those condition a flow-matching diffusion pass that denoises audio latents, and the VAE decodes to a 48kHz WAV that ffmpeg muxes back onto your original video. It's a real model, not an API call - everything runs on your GPU.

The inputs that actually matter

There are a lot of dropdowns, but only a few you'll touch:

  • The four model pickers (diffusion_model, vae_model, clip_vision_model, clap_model). The node scans your models/diffusion_models, models/vae, models/clip_vision, and models/clap folders and lists what it finds. If one shows <no files in models/...>, that's the model you haven't downloaded yet.
  • prompt - plain text, multiline. "Heavy rain on a tin roof with distant thunder" beats "rain." Description quality is the whole game here.
  • guidance_scale (default 4.5) and num_inference_steps (default 50). Lower the guidance if you're getting that "mutated exorcist" energy; 50 steps is already slow enough that you won't want to crank it.
  • video / video_path / video_fps - feed it frames from a Video Loader or point it at a file path. Feed frames and set video_fps to match your real footage: the node derives audio length as num_frames / video_fps, so a wrong fps means the soundbed is the wrong length. Default is 16.
  • save_audio / save_video - write the WAV, and/or the merged MP4, into output_dir (default outputs/hunyuan_foley, auto-numbered).

Outputs: audio (an AUDIO tensor you can pass to other nodes), sample_rate (48000), plus the saved audio_wav_path and merged_video_path strings. If you only want the WAV, wire it to a Save Audio node and turn saving off.

Installing it

Clone it in, install, then download five separate model pieces:

cd ComfyUI/custom_nodes
git clone https://github.com/railep/ComfyUI-HunyuanVideo-Foley
cd ComfyUI-HunyuanVideo-Foley
pip install -r requirements.txt

Then, from the README: hunyuanvideo_foley.pthmodels/diffusion_models/, foley_vae_128d_48k.pthmodels/vae/, SigLIP2 (google/siglip-base-patch16-512) → models/clip_vision/siglip2-base-patch16-512/, CLAP (laion/clap-htsat-unfused) → models/clap/clap-htsat-unfused/, and synchformer_state_dict.pthComfyUI/syncforner/.

Yes, syncforner. That typo is baked into the code - the node looks up ComfyUI/syncforner/synchformer_state_dict.pth, so keep the misspelled folder.

Where people get burned

  • The silent-failure trap. The whole run() is wrapped in a try/except, and on any error it returns one second of zeros instead of crashing. A bad model path, a missing ffmpeg, a corrupt weight - you get silence and empty path strings and the only clue is a log line in the ComfyUI console. If it "works" but outputs nothing, read the terminal.
  • pip install is the fiddly bit. requirements.txt pins numpy==1.26.4 and pulls transformers from a SigLIP-2 branch and audiotools straight from GitHub. Those git installs occasionally fail to resolve; if the install dies, that's the first suspect, and watch for the numpy pin clashing with whatever else you have installed.
  • ffmpeg is a hard requirement for the merged MP4. No ffmpeg, no merged_video_path - the WAV still saves.
  • VRAM is real. The README says 8GB+, and launch-week people were asking whether a 3080 Ti would cope. It runs, but expect swapping and patience on mid-range cards; device defaults to auto and will happily drop you onto CPU if no CUDA shows up - which is a "go make coffee" situation.
  • The license stings if you're in the EU, UK, or South Korea. Tencent's Hunyuan community license grants broad commercial rights but excludes those territories outright, and it reaches outputs, not just weights. Worth knowing before you build a product on it.
CategoryAudio/HunyuanVideo-Foley

Inputs (16)

NameTypeDefaultDescription
promptSTRING
config_nameCOMBOconfig.yaml1 options: config.yaml
diffusion_modelCOMBO1 options: <no files in models/diffusion_models>
vae_modelCOMBO1 options: <no files in models/vae>
clip_vision_modelCOMBO1 options: <no files in models/clip_vision>
clap_modelCOMBO1 options: <no files in models/clap>
guidance_scaleFLOAT4.50–20
num_inference_stepsINT501–200
save_videoBOOLEANtrue
save_audioBOOLEANtrue
video_pathoptSTRING
videooptIMAGE
video_fpsoptFLOAT16.001–120
deviceoptCOMBOauto4 options: auto, cuda, cpu, mps
gpu_idoptINT00–15
output_diroptSTRINGoutputs/hunyuan_foley

Outputs (4)

NameTypeDescription
audioAUDIO
sample_rateINT
audio_wav_pathSTRING
merged_video_pathSTRING