De-Esser
Tame the sibilance on your AI voiceover without leaving ComfyUI
- audio
- audio
- output_path
- duration_sec
- summary
TTS and AI voiceovers have a signature problem: sibilants. Every "s" and "sh" comes out hissy and hyped, and the whole track sounds like it was recorded through a cheap mic. MKRDeEsser is a classic de-esser implemented in numpy and wired up as a ComfyUI node - it detects the harsh high-frequency band in your audio and ducks it only when it spikes, leaving the rest of the voice untouched. For AI narration and voiceover, it's the difference between "generated audio" and "edited audio."
Part of MKRShift_Nodes by criskb. Install via ComfyUI Manager (search "MKRShift_Nodes") or git clone https://github.com/criskb/MKRShift_Nodes into custom_nodes/, restart. Needs ffmpeg on the system for decoding and encoding (the pack's one real system dependency for its audio/video lane).
How it works
The mechanism is straightforward and honest DSP. It splits the signal into a low band and a high band around center_freq_hz, measures the high band's envelope, and when that envelope crosses threshold_db, it attenuates the high band by up to amount - exactly how a hardware de-esser works, minus the glowing VU meter. The low band (your actual voice) passes through untouched, so the fix doesn't dull the take.
The three knobs
center_freq_hz(default 6500) - the de-ess frequency. 6.5 kHz is the classic spot; sibilance lives around 5–8 kHz. If you can hear the hiss somewhere else, nudge it.threshold_db(default -35) - how loud the high band must get before it's pulled back. Lower = more aggressive.amount(default 0.6) - how much reduction when it triggers. 0.6 is tasteful; 1.0 is surgical.
Outputs: audio (MKR_AUDIO), output_path, duration_sec, and a summary echoing your settings.
The realistic expectations
This is a broadband de-esser, not a multi-band surgical EQ - it cuts the whole high band when it spikes, which is the right trade for voiceover. Feed it a music mix and it can take the air out of cymbals, so use it on voice and leave the music alone. Defaults are well chosen: run it once, listen, and you'll usually hear the hiss drop without the voice going dull. There's no community lore to speak of on this node yet, but the behavior is simple enough to verify by ear in ten seconds.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | * | — | |
| threshold_db | FLOAT | -35.0-80–-5 | — |
| center_freq_hz | FLOAT | 65002000–12000 | — |
| amount | FLOAT | 0.600–1 | — |
| output_format | COMBO | auto | 5 options: auto, wav, mp3, flac, ogg |
| filename_prefix | STRING | MKR_deesser | — |
| subfolder | STRING | — | |
| overwrite | BOOLEAN | false | — |
| filename_labelopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| audio | MKR_AUDIO | — |
| output_path | STRING | — |
| duration_sec | FLOAT | — |
| summary | STRING | — |