Nodes/ComfyTV/Audio Denoise
ComfyUI Node

Audio Denoise

Three denoise modes on one node

By jtydhr88·Created 3 months ago·Updated about 16 hours ago· 725
Audio Denoise
  • audio
  • video
  • audio
  • fx_spec
force_run_token0
project_id
parent_output_id0
methodafftdn
strength0.30
silence_db-50
min_silence_s0.5
keep_silence_s0.5

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 strength maps 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), and keep_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 strength to ~0.1–0.15, or switch to anlmdn which treats artifacts differently.
  • silenceremove ate the start of every word. Your keep_silence_s is 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_s too high (gaps shorter than it are ignored) or silence_db too strict (the "silence" isn't quiet enough to count). Loosen both.
  • The denoise did nothing. strength of 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.

CategoryComfyTV/AudioFX

Inputs (10)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
methodCOMBOafftdn3 options: afftdn, anlmdn, silenceremove
strengthFLOAT0.300–1
silence_dbFLOAT-50-80–-20
min_silence_sFLOAT0.50.1–5
keep_silence_sFLOAT0.50–5
audiooptCOMFYTV_AUDIO
videooptCOMFYTV_VIDEO

Outputs (2)

NameTypeDescription
audioCOMFYTV_AUDIO
fx_specCOMFYTV_FXSPEC