Audio-to-Audio
MLX
Safetensors
audio
speech-enhancement
noise-suppression
deepfilternet
apple-silicon
Instructions to use iky1e/DeepFilterNet3-MLX with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use iky1e/DeepFilterNet3-MLX with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] huggingface-cli download --local-dir DeepFilterNet3-MLX iky1e/DeepFilterNet3-MLX
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
| license: mit | |
| library_name: mlx | |
| tags: | |
| - mlx | |
| - audio | |
| - speech-enhancement | |
| - noise-suppression | |
| - deepfilternet | |
| - apple-silicon | |
| base_model: DeepFilterNet/DeepFilterNet3 | |
| pipeline_tag: audio-to-audio | |
| # DeepFilterNet3 — MLX | |
| MLX-compatible weights for [DeepFilterNet3](https://github.com/Rikorose/DeepFilterNet), a real-time speech enhancement model that suppresses background noise from audio. | |
| This is a direct conversion of the original PyTorch weights to `safetensors` format for use with [MLX](https://github.com/ml-explore/mlx) on Apple Silicon. | |
| ## Origin | |
| - **Original model:** [DeepFilterNet3](https://github.com/Rikorose/DeepFilterNet) by Hendrik Schröter | |
| - **Paper:** [DeepFilterNet: Perceptually Motivated Real-Time Speech Enhancement](https://arxiv.org/abs/2305.08227) | |
| - **License:** MIT (same as the original) | |
| - **Conversion:** PyTorch → `safetensors` via the included `convert_deepfilternet.py` script | |
| No fine-tuning or quantisation was applied — the weights are numerically identical to the original checkpoint. | |
| ## Files | |
| | File | Description | | |
| |---|---| | |
| | `config.json` | Model architecture configuration | | |
| | `model.safetensors` | Pre-converted weights (8.3 MB, float32) | | |
| | `convert_deepfilternet.py` | Conversion script (PyTorch → MLX safetensors) | | |
| ## Model Details | |
| | Parameter | Value | | |
| |---|---| | |
| | Sample rate | 48 kHz | | |
| | FFT size | 960 | | |
| | Hop size | 480 | | |
| | ERB bands | 32 | | |
| | DF bins | 96 | | |
| | DF order | 5 | | |
| | Parameters | ~2M | | |
| ## Usage | |
| ### Swift (mlx-audio-swift) | |
| ```swift | |
| import MLXAudioSTS | |
| let model = try await DeepFilterNetModel.fromPretrained("iky1e/DeepFilterNet3-MLX") | |
| let enhanced = try model.enhance(audioArray) | |
| ``` | |
| ### Python (mlx-audio) | |
| ```python | |
| from mlx_audio.sts.models.deepfilternet import DeepFilterNetModel | |
| model = DeepFilterNetModel.from_pretrained(version=3, model_dir="path/to/local/dir") | |
| enhanced = model.enhance("noisy.wav") | |
| ``` | |
| ## Converting from PyTorch | |
| To re-create this conversion from the original DeepFilterNet checkpoint: | |
| ```bash | |
| python convert_deepfilternet.py \ | |
| --input /path/to/DeepFilterNet3 \ | |
| --output ./DeepFilterNet3-MLX \ | |
| --name DeepFilterNet3 | |
| ``` | |
| The input directory should contain a `config.ini` and a `checkpoints/` folder from the original repo. | |
| ## Citation | |
| ```bibtex | |
| @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} | |
| } | |
| ``` | |