Skip to content

Replace DeepFilterNet with an actively maintained alternative #100

Description

@MaleicAcid

Problem

DeepFilterNet (last release: v0.5.6, August 2023) has been unmaintained for nearly three years. This causes several concrete problems:

Breaks on modern PyTorch. DeepFilterNet's native dependency deepfilterlib imports torchaudio.backend.common, a module that was removed in torchaudio 2.6. Any user with torch>=2.6 and noise_suppress=True will hit an ImportError at runtime. This effectively pins the entire project to torch<=2.5, preventing users from benefiting from newer PyTorch performance improvements and bug fixes.

No pre-built wheels for Python 3.12+. deepfilterlib is a Rust native extension built with pyo3/maturin. The maintainer only published wheels for CPython 3.8–3.11. Users on Python 3.12 or later must have a working Rust toolchain (cargo, maturin) to compile from source — a significant barrier for most Python users. This is currently the sole blocker preventing openlrc from declaring Python 3.13/3.14 support.

Heavy and fragile dependency chain. Even though noise suppression is off by default, the [full] extra pulls in deepfilternetdeepfilterlib (Rust native) → torchtorchaudio. The Rust compilation step is slow, error-prone on Windows, and incompatible with common packaging tools like PyInstaller and Nuitka.

No sign of upstream activity. The DeepFilterNet repository has had no releases, no merged PRs addressing compatibility, and no maintainer responses on these issues since August 2023. There is no indication this will change.

Alternatives

SpeechBrain (MetricGAN+)

SpeechBrain (11k+ stars, latest release v1.1.0, March 2026) is an actively maintained speech toolkit. Its metricgan-plus-voicebank pretrained model provides speech enhancement quality comparable to DeepFilterNet.

  • Requires torch>=2.1.0 with no upper bound — works with latest PyTorch
  • Pure Python — no Rust toolchain needed
  • Pretrained models hosted on HuggingFace, downloaded on first use
  • Apache 2.0 license
from speechbrain.pretrained import SpectralMaskEnhancement
enhancer = SpectralMaskEnhancement.from_hparams(source="speechbrain/metricgan-plus-voicebank")
enhanced = enhancer.enhance_file("noisy.wav")

noisereduce

noisereduce (1.8k stars) uses classical spectral gating. No torch dependency at all (numpy/scipy only). Lower quality than neural approaches but adequate for mild noise and extremely lightweight (~100KB).

Comparison

DeepFilterNet (current) SpeechBrain noisereduce
Last release Aug 2023 Mar 2026 Oct 2024
Approach Neural (deep filtering) Neural (MetricGAN+) Classical (spectral gating)
Torch compatibility Pinned <=2.5 >=2.1, no upper bound Not required
Rust toolchain Required No No
Python 3.12+ No wheels Yes Yes
Enhancement quality High High Moderate

Discussion

  1. Should we run a quality comparison test before committing to SpeechBrain?
  2. Should noisereduce be offered as a lightweight fallback (e.g. base noise_suppress=True uses noisereduce, [full] uses SpeechBrain)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions