A CLI tool for denoising WAV audio with 3 leading backends:
- rnnoise (fast, CPU-only, low-latency)
- deepfilternet (high-quality full-band denoising)
- fbdenoiser (FacebookResearch Denoiser / causal Demucs; strong enhancement)
Inputs/outputs are WAV files. If your audio is not WAV, convert it first.
Use this if you want to install and use the tool without cloning the repo. Requires (Python ==3.10.*).
Use this if you want to install and use the tool without cloning the repo.
pip install denoise-audioGlobal help:
python -m denoise --helpList available backends:
python -m denoise --list-modelsModel-specific help:
python -m denoise --model rnnoise --help
python -m denoise --model deepfilternet --help
python -m denoise --model fbdenoiser --helpBasic command (all models):
python -m denoise --model <model> --input <in.wav> --output <out.wav><model>is one of:rnnoise,deepfilternet,fbdenoiser--inputand--outputmust be WAV files
A fresh virtual environment with Python 3.10 is recommended to avoid dependency conflicts.
Some environments may already have a newer wheel installed that requires packaging>=24, while deepfilternet requires packaging<24.
If you see an error mentioning a wheel/packaging conflict, use a clean venv (recommended) or pin compatible versions:
python -m pip install --upgrade "packaging>=23,<24" "wheel<0.46"
python -m pip install --upgrade --force-reinstall denoise-audioYou can also use this package directly in your Python code after installing with pip install denoise-audio.
python -c "import denoise; print(denoise.__version__)"from denoise import available_models, backend_help
print(available_models())
print(backend_help())from denoise import model_kwargs_help
print(model_kwargs_help("rnnoise"))
print(model_kwargs_help("deepfilternet"))
print(model_kwargs_help("fbdenoiser"))Create run_denoise.py:
from denoise import denoise_file
IN_WAV = "input.wav"
OUT_WAV = "output.wav"
# Choose one: rnnoise | deepfilternet | fbdenoiser
MODEL = "rnnoise"
# Model-specific kwargs (examples below)
kwargs = {}
# Example: RNNoise
# kwargs = {"rnnoise_sample_rate": 48000}
# Example: DeepFilterNet
# kwargs = {"df_model": "DeepFilterNet3", "df_pf": True, "df_compensate_delay": True}
# Example: FacebookResearch Denoiser
# kwargs = {"fb_model": "dns64", "fb_device": "cpu", "fb_dry": 1.0}
for _ in denoise_file(IN_WAV, OUT_WAV, model=MODEL, **kwargs):
pass
print(f"Wrote: {OUT_WAV}")Run it:
python run_denoise.pyInstall uv using Astral’s standalone installer:
https://docs.astral.sh/uv/getting-started/installation/#standalone-installer
Verify:
uv --versiongit clone https://github.com/Surya-Rayala/denoise-audio.git
cd denoise-audio
uv syncRun everything with uv run to ensure you’re using the project environment:
uv run python -m denoise --helpuv run python -m denoise --list-modelsPass --model <name> and --help to see only that backend’s options:
uv run python -m denoise --model rnnoise --help
uv run python -m denoise --model deepfilternet --help
uv run python -m denoise --model fbdenoiser --helpuv run python -m denoise --model <model> --input <in.wav> --output <out.wav><model>is one of:rnnoise,deepfilternet,fbdenoiser--inputand--outputmust be WAV files
Basic command
uv run python -m denoise --model rnnoise --input <in.wav> --output <out.wav>Arguments
--rnnoise-sample-rate <int>: Force the RNNoise wrapper sample rate. If omitted, the tool infers the sample rate from the input WAV (recommended).
Basic command
uv run python -m denoise --model deepfilternet --input <in.wav> --output <out.wav>Arguments
--df-model <name>: Select which pretrained DeepFilterNet model to load. Common options:DeepFilterNet,DeepFilterNet2,DeepFilterNet3.- To see available models, visit: https://github.com/Rikorose/DeepFilterNet/tree/main/models
--df-pf: Enable the post-filter (can reduce residual noise; may sound more aggressive in very noisy sections).--df-compensate-delay: Add padding to compensate processing delay (useful when you need better alignment with the original audio).
Basic command
uv run python -m denoise --model fbdenoiser --input <in.wav> --output <out.wav>Arguments
--fb-model <name>: Choose the pretrained model:dns48: pre-trained real time H=48 model trained on DNSdns64: pre-trained real time H=64 model trained on DNSmaster64: pre-trained real time H=64 model trained on DNS and Valentini
--fb-device <device>: Inference device, e.g.cpuorcuda. If omitted, it automatically uses CUDA if available, otherwise CPU.--fb-dry <float>: Dry/wet mix (0.0= original input only,1.0= denoised output only). Values outside[0.0, 1.0]are clamped.--fb-streaming: Enable streaming mode (flag is accepted by the CLI).--fb-batch-size <int>: Batch size (flag is accepted by the CLI).--fb-num-workers <int>: Number of workers (flag is accepted by the CLI).--fb-verbose: Enable verbose logging (flag is accepted by the CLI).
If you’re using the repo locally with uv sync + uv run, updating to new code from Git is:
cd denoise-audio
git pull
uv syncUse one of these (pick what you intend):
- Keep your local changes and rebase on top:
git pull --rebase
uv sync- Discard local changes and reset to remote (
⚠️ destructive):
git fetch origin
git reset --hard origin/main
uv syncThis project's source code is licensed under the MIT License.
Note on Dependencies: This tool relies on the denoiser library (Facebook Research), which is licensed under CC-BY-NC 4.0 (Non-Commercial). Consequently, this tool as a whole is suitable for research and personal use only, unless you obtain a commercial license for the denoiser dependency.