HunyuanFoley Denoiser
The Heart of the Foley Pipeline — Where the Sound Is Actually Made
- siglip2
- syncformer
- positive
- negative
- audio_len
- samples
HunyuanFoley Denoiser is the node everything else in the Vantage-HunyuanFoley pack exists to feed. The two encoders prepare conditioning, the VAE decode renders the result, but the actual audio generation happens here: it builds Tencent's HunyuanVideoFoley diffusion transformer, runs the denoising loop, and hands you latents for the DAC VAE. It's also, predictably, the node that eats your VRAM and the place where the pack's fancy FP8 story quietly stops being true for most GPUs.
This pack splits HunyuanVideo-Foley into modular nodes so you don't hold every heavy encoder in memory at once - it's the design goal of the whole repo, aimed at 8–12GB cards. The Denoiser is the heaviest single component, and it's the one that benefits most from that modularity, because it's the only stage that really needs the GPU while it runs.
How it works
The node constructs a HunyuanVideoFoley model from the bundled YAML config - that's the XXL architecture: 18 triple blocks, 36 single blocks, hidden size 1536, an interleaved audio-visual RoPE transformer. It loads hunyuanvideo_foley.pth with a strict=False state-dict load (so minor key differences between the checkpoint and the config won't kill you), then runs a flow-matching scheduler with an Euler solver, reverse=True, velocity prediction. It's the audio analog of the video diffusion you already know, just working on latent audio frames at ~50 per second of audio.
All the inputs are the outputs of its sibling nodes: siglip2, syncformer, positive, negative, audio_len. Then the settings that matter:
- guidance_scale (default 4.5) - classic classifier-free guidance. The node literally duplicates the latents when it's above 1.0, so higher guidance costs compute as well as fidelity. Below ~3 things get under-conditioned; above ~7 you'll hear artifacts.
- steps (default 50) - the dial for quality vs. time/VRAM. Drop to 30-ish for quick tests.
- seed - fixed for reproducibility, randomized to taste.
- precision (auto/bf16/fp16/fp32) -
autopicks bf16 when your card supports it, which is the right call for almost everyone. - quantization (none/fp8_e4m3fn/fp8_e5m2/auto) - the headline feature, with a catch below.
The output is samples (LATENT), carrying audio_len_in_s alongside the latents, ready for the VAE Decode node.
The FP8 caveat you need to hear
The FP8 path swaps nn.Linear for TransformerEngine's te.Linear and runs the denoising inside te.fp8_autocast. But the node explicitly checks for an SM 90+ GPU (compute capability 9) before enabling it. That means Hopper and Blackwell get real FP8 - a 5090, yes; a 4090, no, even though the RTX 40-series does native fp8 compute in ComfyUI's general model loading. On anything below SM 90 it logs "Falling back without FP8" and runs the base precision instead. So: FP8 here is a Hopper/Blackwell perk, not a universal memory saver, and you also need TransformerEngine installed (pip install transformer-engine) or it just won't engage.
Installing it and what breaks
Same pack install as the rest - ComfyUI Manager, search Vantage-HunyuanFoley, or clone + pip install -r requirements.txt - then the model: hunyuanvideo_foley.pth from Tencent's Hugging Face repo into ComfyUI/models/hunyuan_foley/. Missing file, clear error. From there the practical problems are VRAM (lower steps, keep move_back_to_cpu on, run bf16) and sync (if the audio doesn't match the video, it's usually the fps/audio_len chain upstream, not this node). Community reports put a working setup on a 3060 12GB, so the modular split is doing its job - just don't expect the FP8 checkbox to do anything on that card.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| siglip2 | SIGLIP2_FEAT | — | |
| syncformer | SYNC_FEAT | — | |
| positive | TEXT_FEAT | — | |
| negative | UNCOND_TEXT_FEAT | — | |
| audio_len | AUDIO_LEN | — | |
| guidance_scale | FLOAT | 4.51–10 | — |
| steps | INT | 5010–200 | — |
| seed | INT | 00–4294967295 | — |
| precision | COMBO | auto | 4 options: auto, bf16, fp16, fp32 |
| quantization | COMBO | none | 4 options: none, fp8_e4m3fn, fp8_e5m2, auto |
| to_gpu | BOOLEAN | true | — |
| move_back_to_cpu | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| samples | LATENT | — |