Audio Denoise
Three denoise modes on one node
- audio
- video
- audio
- fx_spec
The voiceover you recorded sounds like it came through a fan, and the alternative is learning a whole audio tool just to clean it. Audio Denoise is the ComfyTV stage for exactly that - it's a one-node denoiser with three methods under the hood, from a light spectral hiss removal to a full silence-stripper. It's the first thing you'll run on anything recorded on a laptop mic, and the last thing you'll thank it for.
Three methods, three jobs:
- afftdn (default) - the FFT-domain noise reducer. Takes a
strength(0–1, default 0.3) and removes broadband hiss and steady noise. This is the one you want for "make the fan noise go away." - anlmdn - non-local means denoising. Slower, better on tonal/impulse noise, and
strengthmaps onto its smoothing. Good when afftdn leaves artifacts. - silenceremove - not a noise reducer at all: it detects and removes silence between words, using
silence_db(threshold, default -50),min_silence_s(how long a gap must be to count, default 0.5), andkeep_silence_s(how much padding to leave so speech doesn't slam together, default 0.5). This is the "tighten up the podcast" mode.
How it works
The method combo picks the filter, and the source maps each straight to an FFmpeg filter (afftdn, anlmdn, silenceremove) run through the pack's PyAV runner. The strength slider feeds the noise-reduction amount for afftdn/anlmdn; the three silence params only matter in silenceremove mode. You can feed audio (COMFYTV_AUDIO) or video (uses the clip's soundtrack). The force_run_token/project_id/parent_output_id inputs are ComfyTV internal plumbing.
Two outputs: audio (the cleaned track) and fx_spec (COMFYTV_FXSPEC) - a machine-readable description of the filter chain that was applied, which the pack's FX Chain machinery can read. For most users, audio is the one you wire forward.
Installing ComfyTV
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Full backend restart, then ComfyTV → AudioFX; ComfyUI Manager finds "ComfyTV". Zero extra Python deps - the filters run through FFmpeg via PyAV, bundled with ComfyUI. No models.
The pack-wide install trap: on macOS / ComfyUI Desktop / multi-install machines, cd ComfyUI/custom_nodes can clone into the wrong instance - clone succeeds, stages never appear. Read the running instance's path from the startup log, clone into that instance's custom_nodes by absolute path (quote paths with spaces/parentheses), verify ComfyTV/__init__.py is top-level, restart the backend fully.
Common issues
- afftdn leaves a watery "underwater" sound. Classic over-processing. Drop
strengthto ~0.1–0.15, or switch toanlmdnwhich treats artifacts differently. - silenceremove ate the start of every word. Your
keep_silence_sis too low - the filter is cutting into the attack of speech. Raise it to ~0.5–0.8s. - Silence isn't being removed at all.
min_silence_stoo high (gaps shorter than it are ignored) orsilence_dbtoo strict (the "silence" isn't quiet enough to count). Loosen both. - The denoise did nothing.
strengthof 0 disables it. And if your noise is louder than the signal, no consumer filter will save it - re-record or get closer to the mic.
The golden rule: denoise a little, listen, denoise a little more. This node makes it cheap to iterate, which is exactly what you want.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| method | COMBO | afftdn | 3 options: afftdn, anlmdn, silenceremove |
| strength | FLOAT | 0.300–1 | — |
| silence_db | FLOAT | -50-80–-20 | — |
| min_silence_s | FLOAT | 0.50.1–5 | — |
| keep_silence_s | FLOAT | 0.50–5 | — |
| audioopt | COMFYTV_AUDIO | — | |
| videoopt | COMFYTV_VIDEO | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | COMFYTV_AUDIO | — |
| fx_spec | COMFYTV_FXSPEC | — |