Audio AI Enhance (Resemble)
Make CosyVoice audio sound like it wasn't generated
- audio
- splice_info
- audio
- splice_info
This is the node the AIIA author actually recommends you use, and the reason is specific: CosyVoice and other TTS engines output at 22–24kHz, and it shows. This node runs the resemble-enhance model - a Conditional Flow Matching network - that does two jobs at once: it removes noise and does bandwidth extension, rebuilding the upper frequencies so the output lands at 44.1kHz and sounds like a real recording instead of a codec's best guess. If you've ever rendered a CosyVoice line and thought "that's clearly a robot," this is the fix that's actually aimed at your problem.
How it works
resemble-enhance isn't an EQ; it's a generative enhancer. Its flow-matching model synthesizes the high-frequency detail from the audio's structure, which is why it can "invent" bandwidth that was never recorded. Because it's generative, every parameter here is about managing how creative it gets and where it gets it wrong. On first run the node auto-installs resemble-enhance (installed --no-deps to protect your environment - a thoughtful touch given how much ComfyUI dependency hell exists) and the model weights land in ComfyUI/models/resemble_enhance/.
Inputs that matter
- mode -
Enhance (Denoise + Bandwidth Ext)(default) vsDenoise Only. If your audio is already 44.1kHz and just noisy, Denoise Only is faster and safer. - nfe - the number of solver steps. 32 for a fast preview, 64 for real use, 128 when you want every artifact gone and have time to burn.
- solver -
Midpoint(default, best speed/quality balance),RK4(higher quality, ~2× slower),Euler(fastest, can leave streaks). - tau - temperature, default 0.5. If the voice goes thin or "虚", drop it toward 0.3.
- denoise_strength - 0.5 default, tooltip says it plainly: 0.0 keeps original noise, 1.0 full denoise. If you see horizontal hum stripes in the low end of a spectrogram, crank it to 0.8–1.0.
- high_pass_hz - default 0 (off). When denoise_strength alone can't kill low-frequency hum because the model treats it as signal, set 50–80Hz and it's cut before enhancement. The author calls this the "stripes won't die" lever.
- chunk_seconds / overlap_seconds - 30s / 1s is the 4090-class sweet spot; longer files get chunked so VRAM stays sane.
Plus use_cuda (on) and an optional splice_info passthrough for pipeline use. Outputs: audio and splice_info.
The gotchas, honestly
- First run JIT-compiles the model and takes about a minute. One-time, but it looks hung. Wait it out.
- It's slow relative to a filter. This is a generative model running per chunk; a long podcast takes real minutes.
- Don't double-dip. The README explicitly steers you away from running VoiceFixer on top of this - VoiceFixer's reconstruction adds artifacts to already-clean audio. Pick one.
Wiring it in
Typical spot in a graph: TTS (CosyVoice/Qwen/VibeVoice) → Audio Enhance → Audio Post-Process → save. Feed the enhance output into the post-process node for the final resample/normalize, and you have a "generated speech → sounds recorded properly" chain in two nodes. That's the whole pitch, and it works.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| mode | COMBO | Enhance (Denoise + Bandwidth Ext) | 2 options: Enhance (Denoise + Bandwidth Ext), Denoise Only |
| solver | COMBO | 3 options: Midpoint, RK4, Euler | |
| nfe | INT | 321–128 | — |
| tau | FLOAT | 0.500–1 | — |
| denoise_strength | FLOAT | 0.500–1 | 0.0 = Keep Original Noise, 1.0 = Full Denoise. Increase to remove artifacts/hum. |
| chunk_seconds | FLOAT | 301–60 | — |
| overlap_seconds | FLOAT | 1.00–5 | — |
| high_pass_hz | INT | 00–1000 | Remove low frequency rumble/hum before enhancement. Try 50-80Hz if you see horizontal stripes. |
| use_cuda | BOOLEAN | true | — |
| splice_infoopt | SPLICE_INFO | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| splice_info | SPLICE_INFO | — |