Unclean Speech
Make any voiceover sound like a walkie-talkie, radio, or burned tape
- audio
- audio
Unclean Speech is the audio branch of a pack that mostly does video and images, and it does one thing well: it takes clean audio and makes it sound like it was recorded through something worse. A full degradation chain - compression, EQ, soft-clip distortion, noise, reverb - in one node that takes an AUDIO in and returns an AUDIO out. If you've ever needed a voiceover to sound like a phone call, a walkie-talkie, or a radio in another room, this is the node you didn't know you were missing.
How it works
It's a proper effect chain, applied in order in the code:
- Compression - dynamic range squashing via
compression_ratio(1–20) andcompression_thresholdin dB (default -20). This is the "professional radio" factor; the ratio is how hard the loud parts get pulled down. - EQ -
low_cut(below 20–2000 Hz attenuated) andhigh_cut(above 1000–20000 Hz rolled off). A high low-cut plus a low high-cut is the classic telephone-bandwidth sound. - Distortion - soft clipping via
distortion_amount(0–1). Cheap and convincing for "overdriven" voice. - Noise - additive noise at
noise_level(0–1) in your pick of white, pink, or brown. Pink is tape hiss; brown is rumble; white is harsh signal noise. - Reverb -
reverb_amount(0–1) with aroom_size(0.1–1) to place it in a space.
Everything auto-normalizes on the way out so a degraded track doesn't come back at a wildly different loudness - a small detail that keeps the node usable mid-pipeline.
Inputs and outputs
- audio - the AUDIO you want to degrade
- preset - a preset dropdown that ships with only one option:
none. The author built a JSON preset system and loads from a presets folder, but none ship in the pack, so you'll be dialing the sliders yourself. - Then the chain above: compression_ratio, compression_threshold, low_cut, high_cut, distortion_amount, noise_level, noise_color, reverb_amount, room_size.
Output: audio, ready to wire into an audio player or a video muxer.
Where it sits in a workflow
Voiceover work, mostly. Load a clean TTS or narration track, run it through Unclean Speech with high low-cut + low high-cut + a touch of noise, and suddenly the line "reads" as a radio transmission or an old answering machine. For a pack that's 90% visual, this is a surprisingly useful glue node for video-with-dialogue - the kind of thing you'd otherwise open an audio editor for.
Install
Part of DJZ-Nodes by Drift Johnson. ComfyUI Manager → "DJZ-Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/MushroomFleet/DJZ-Nodes
cd DJZ-Nodes
pip install -r requirements.txt
Restart ComfyUI. This node specifically imports scipy.signal, which is not in the pack's requirements.txt - it arrives transitively (librosa depends on scipy, and ComfyUI ships it anyway), so it works in practice, but it's a reminder that this pack's dependency story is "install everything, use what you need."
Gotchas
You need a real AUDIO input - this node doesn't load audio files, so you need a Load Audio node from VideoHelperSuite or similar feeding it. And the effect is easy to overshoot: distortion_amount at 1.0 plus reverb plus noise at 0.5 is not a radio, it's noise. The sound is in the modest settings - thin the bandwidth, add a little noise, and let the listener's brain do the rest.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| preset | COMBO | 1 options: none | |
| compression_ratio | FLOAT | 1.01–20 | — |
| compression_threshold | FLOAT | -20.0-60–0 | — |
| low_cut | FLOAT | 2020–2000 | — |
| high_cut | FLOAT | 200001000–20000 | — |
| distortion_amount | FLOAT | 0.000–1 | — |
| noise_level | FLOAT | 0.000–1 | — |
| noise_color | COMBO | 3 options: white, pink, brown | |
| reverb_amount | FLOAT | 0.000–1 | — |
| room_size | FLOAT | 0.500.1–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |