noisereduce
Noise reduction using Spectral Gating in Python
What it is and what it does
Noisereduce is a spectral-gating noise reduction library for Python that removes unwanted noise from audio and time-domain signals like speech, bioacoustics, and physiological recordings. It works by computing a spectrogram, estimating a noise threshold for each frequency band, and applying a mask to gate out noise below that threshold. The package offers two main algorithms: stationary noise reduction, which applies a fixed threshold across the entire signal, and non-stationary noise reduction, which continuously adapts the threshold over time—useful when you know the timescale of your signal of interest.
Version 3 introduced a PyTorch-based implementation alongside the original scipy-based approach, substantially reducing runtime. The library handles both single-channel and multi-channel audio, supports parallel processing for larger datasets via joblib, and provides fine-grained control over parameters like frequency smoothing, time smoothing, and sensitivity. It depends on scipy, numpy, matplotlib, tqdm, and joblib, making it straightforward to integrate into existing signal-processing pipelines.
Use it for:
- Clean up speech recordings or voice calls by removing background noise while preserving intelligibility.
- Denoise bioacoustic recordings (bird calls, animal vocalizations) to improve detection and analysis.
- Reduce noise in physiological signals (ECG, EMG, EEG) for cleaner downstream analysis.
- Preprocess audio data before feeding it into machine learning models for speech or sound recognition.
- Batch-process large audio datasets using parallel processing to reduce computation time.
- Fine-tune noise reduction parameters per frequency band for domain-specific signal characteristics.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Reduces noise in audio and time-domain signals using spectral gating, with both stationary and non-stationary algorithms and optional PyTorch-based implementations.
Yes, if you need spectral-gating noise reduction for audio or time-domain signals. The library is mature, well-maintained, has no known vulnerabilities, and offers both simple and advanced use cases. The aging maintenance status (677 days since last release) is a minor concern but not a blocker given the stable API and active repository. Install it for speech, bioacoustics, or physiological signal denoising.
Install
noisereduce on PyPI
pip
pip install noisereduceuv
uv add noisereducepoetry
poetry add noisereduceInstalling noisereduce
Before you install
Low friction installation with five well-established dependencies (scipy, numpy, matplotlib, tqdm, joblib). Maintenance status is aging—677 days since the last release—but the repository remains active and unarchived with 1871 stars.
License in practice
MIT license is permissive, allowing commercial and private use with minimal restrictions; you must retain the license notice in distributions.
Quickstart
from scipy.io import wavfile
import noisereduce as nr
rate, data = wavfile.read("mywav.wav")
reduced_noise = nr.reduce_noise(y=data, sr=rate)
wavfile.write("mywav_reduced_noise.wav", rate, reduced_noise)
Verify before relying
- Whether PyTorch is an optional or required dependency for version 3.0.3 (description mentions PyTorch-based implementation but PyTorch is not listed in runtime dependencies).
- Current performance characteristics and runtime improvements claimed in version 3 updates.
- Compatibility with modern Python versions (requires_python is unspecified in metadata).
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — scipy, matplotlib, numpy, tqdm, joblib |
| Maintenance | aging — 677 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 513,533/month — #6,245 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: noisereduce-3.0.3-py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
deepfilternetDeepFilterNet removes background noise from…
permissive · top 15,000 on PyPI
GammatoneApplies banks of gammatone filters to audio…
unclear · top 15,000 on PyPI
audiomentationsAudiomentations applies randomized audio…
permissive · top 15,000 on PyPI
juliusJulius provides differentiable, GPU-accelerated…
permissive · top 5,000 on PyPI
pystoiComputes Short Term Objective Intelligibility…
permissive · top 5,000 on PyPI
pyrnnoisePython bindings for RNNoise that perform…
unclear · top 15,000 on PyPI
PyWaveletsPyWavelets provides discrete, continuous, and…
permissive · top 5,000 on PyPI
antropyAntroPy computes entropy and fractal dimension…
permissive · top 15,000 on PyPI
torchaudioProvides PyTorch-based audio processing,…
permissive · top 5,000 on PyPI
neurokit2NeuroKit2 processes physiological signals (ECG,…
permissive · top 15,000 on PyPI