Audio-to-Audio
MLX
Safetensors
audio
speech-enhancement
noise-suppression
deepfilternet
apple-silicon
Instructions to use mlx-community/DeepFilterNet-mlx with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use mlx-community/DeepFilterNet-mlx with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] huggingface-cli download --local-dir DeepFilterNet-mlx mlx-community/DeepFilterNet-mlx
- Notebooks
- Google Colab
- Kaggle
- Local Apps
- LM Studio
| license: mit | |
| library_name: mlx | |
| tags: | |
| - mlx | |
| - audio | |
| - speech-enhancement | |
| - noise-suppression | |
| - deepfilternet | |
| - apple-silicon | |
| base_model: | |
| - DeepFilterNet/DeepFilterNet | |
| - DeepFilterNet/DeepFilterNet2 | |
| - DeepFilterNet/DeepFilterNet3 | |
| pipeline_tag: audio-to-audio | |
| # DeepFilterNet — MLX | |
| MLX-compatible weights for [DeepFilterNet](https://github.com/Rikorose/DeepFilterNet), a real-time speech enhancement framework that suppresses background noise from full-band 48 kHz audio. | |
| This repository contains all three model versions (v1, v2, v3), converted directly from the original PyTorch checkpoints to `safetensors` format for use with [MLX](https://github.com/ml-explore/mlx) on Apple Silicon. No fine-tuning or quantization was applied — the weights are numerically identical to the originals. | |
| ## Models | |
| Each version is stored in its own subfolder: | |
| | Version | Subfolder | Weights | Paper | | |
| |---------|-----------|---------|-------| | |
| | DeepFilterNet v1 | `v1/` | ~7.2 MB (float32) | [arXiv:2110.05588](https://arxiv.org/abs/2110.05588) | | |
| | DeepFilterNet v2 | `v2/` | ~8.9 MB (float32) | [arXiv:2205.05474](https://arxiv.org/abs/2205.05474) | | |
| | DeepFilterNet v3 | `v3/` | ~8.3 MB (float32) | [arXiv:2305.08227](https://arxiv.org/abs/2305.08227) | | |
| ## Model Details | |
| All versions share the same audio parameters: | |
| | Parameter | Value | | |
| |-----------|-------| | |
| | Sample rate | 48 kHz | | |
| | FFT size | 960 | | |
| | Hop size | 480 | | |
| | ERB bands | 32 | | |
| | DF bins | 96 | | |
| | DF order | 5 | | |
| | Version | Embedding hidden dim | | |
| |---------|---------------------| | |
| | v1 | 512 | | |
| | v2 | 256 | | |
| | v3 | 256 | | |
| ## Files | |
| ``` | |
| convert_deepfilternet.py # PyTorch → MLX conversion script | |
| v1/ | |
| config.json # v1 architecture configuration | |
| model.safetensors # v1 weights | |
| v2/ | |
| config.json # v2 architecture configuration | |
| model.safetensors # v2 weights | |
| v3/ | |
| config.json # v3 architecture configuration | |
| model.safetensors # v3 weights | |
| ``` | |
| ## Usage | |
| ### Python (mlx-audio) | |
| ```python | |
| from mlx_audio.sts.models.deepfilternet import DeepFilterNetModel | |
| # Load v3 (default) | |
| model = DeepFilterNetModel.from_pretrained("mlx-community/DeepFilterNet-mlx") | |
| # Load a specific version | |
| model = DeepFilterNetModel.from_pretrained("mlx-community/DeepFilterNet-mlx", subfolder="v1") | |
| # Enhance a file | |
| enhanced = model.enhance("noisy.wav") | |
| ``` | |
| ### Swift (mlx-audio-swift) | |
| ```swift | |
| import MLXAudioSTS | |
| let model = try await DeepFilterNetModel.fromPretrained("mlx-community/DeepFilterNet-mlx", subfolder: "v3") | |
| let enhanced = try model.enhance(audioArray) | |
| ``` | |
| ## Converting from PyTorch | |
| To re-create these weights from the original DeepFilterNet checkpoints: | |
| ```bash | |
| # Clone the original repo to get the pretrained checkpoints | |
| git clone https://github.com/Rikorose/DeepFilterNet | |
| # Convert each version | |
| python convert_deepfilternet.py --input DeepFilterNet/DeepFilterNet --output v1 --name DeepFilterNet | |
| python convert_deepfilternet.py --input DeepFilterNet/DeepFilterNet2 --output v2 --name DeepFilterNet2 | |
| python convert_deepfilternet.py --input DeepFilterNet/DeepFilterNet3 --output v3 --name DeepFilterNet3 | |
| ``` | |
| Each input directory should contain a `config.ini` and a `checkpoints/` folder from the original repo. | |
| Requires `torch` and `mlx` to be installed. | |
| ## Origin | |
| - **Original model:** [DeepFilterNet](https://github.com/Rikorose/DeepFilterNet) by Hendrik Schroeter | |
| - **License:** MIT (same as the original) | |
| - **Conversion:** PyTorch → `safetensors` via `convert_deepfilternet.py` | |
| ## Citations | |
| ```bibtex | |
| @inproceedings{schroeter2022deepfilternet, | |
| title={{DeepFilterNet}: A Low Complexity Speech Enhancement Framework for Full-Band Audio based on Deep Filtering}, | |
| author={Schr{\"o}ter, Hendrik and Escalante-B., Alberto N. and Rosenkranz, Tobias and Maier, Andreas}, | |
| booktitle={ICASSP 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)}, | |
| year={2022}, | |
| organization={IEEE} | |
| } | |
| @inproceedings{schroeter2022deepfilternet2, | |
| title={{DeepFilterNet2}: Towards Real-Time Speech Enhancement on Embedded Devices for Full-Band Audio}, | |
| author={Schr{\"o}ter, Hendrik and Escalante-B., Alberto N. and Rosenkranz, Tobias and Maier, Andreas}, | |
| booktitle={17th International Workshop on Acoustic Signal Enhancement (IWAENC 2022)}, | |
| year={2022}, | |
| } | |
| @inproceedings{schroeter2023deepfilternet3, | |
| title={DeepFilterNet: Perceptually Motivated Real-Time Speech Enhancement}, | |
| author={Schr{\"o}ter, Hendrik and Rosenkranz, Tobias and Escalante-B., Alberto N. and Maier, Andreas}, | |
| booktitle={INTERSPEECH}, | |
| year={2023} | |
| } | |
| ``` | |