| |
|
| | --- |
| | license: apache-2.0 |
| | pipeline_tag: audio-to-audio |
| | tags: |
| | - speech_enhancement |
| | - noise_suppression |
| | - real_time |
| | - streaming |
| | - causal |
| | - onnx |
| | - tflite |
| | - fullband |
| | --- |
| | |
| | # DPDFNet |
| |
|
| | DPDFNet is a family of **causal, single‑channel** speech enhancement models for **real‑time noise suppression**.\ |
| | It builds on **DeepFilterNet2** by adding **Dual‑Path RNN (DPRNN)** blocks in the encoder for stronger long‑range modeling while staying streaming‑friendly. |
| |
|
| | **Links** |
| | - Project page (audio samples + architecture): https://ceva-ip.github.io/DPDFNet/ |
| | - Paper (arXiv): https://arxiv.org/abs/2512.16420 |
| | - Code (GitHub): https://github.com/ceva-ip/DPDFNet |
| | - Demo Space: https://huggingface.co/spaces/Ceva-IP/DPDFNetDemo |
| | - Evaluation set: https://huggingface.co/datasets/Ceva-IP/DPDFNet_EvalSet |
| | |
| | --- |
| | |
| | ## What’s in this repo |
| | |
| | - **TFLite**: `*.tflite` (root) |
| | - **ONNX**: `onnx/*.onnx` |
| | - **PyTorch checkpoints**: `checkpoints/*.pth` |
| | |
| | --- |
| | |
| | ## Model variants |
| | |
| | ### 16 kHz models |
| | |
| | | Model | DPRNN blocks | Params (M) | MACs (G) | |
| | |---|:---:|:---:|:---:| |
| | | `baseline` | 0 | 2.31 | 0.36 | |
| | | `dpdfnet2` | 2 | 2.49 | 1.35 | |
| | | `dpdfnet4` | 4 | 2.84 | 2.36 | |
| | | `dpdfnet8` | 8 | 3.54 | 4.37 | |
| | |
| | ### 48 kHz fullband model |
| | |
| | | Model | DPRNN blocks | Params (M) | MACs (G) | |
| | |---|:---:|:---:|:---:| |
| | | `dpdfnet2_48khz_hr` | 2 | 2.58 | 2.42 | |
| | |
| | --- |
| | |
| | ## Recommended inference (CPU-only, ONNX) |
| | |
| | ```bash |
| | pip install dpdfnet |
| | ``` |
| | |
| | ### CLI |
| | |
| | ```bash |
| | # Enhance one file |
| | dpdfnet enhance noisy.wav enhanced.wav --model dpdfnet4 |
| | |
| | # Enhance a directory |
| | dpdfnet enhance-dir ./noisy_wavs ./enhanced_wavs --model dpdfnet2 |
| | |
| | # Download models |
| | dpdfnet download |
| | dpdfnet download dpdfnet8 |
| | dpdfnet download dpdfnet4 --force |
| | ``` |
| | |
| | ### Python API |
| | |
| | ```python |
| | import soundfile as sf |
| | import dpdfnet |
| | |
| | # In-memory enhancement: |
| | audio, sr = sf.read("noisy.wav") |
| | enhanced = dpdfnet.enhance(audio, sample_rate=sr, model="dpdfnet4") |
| | sf.write("enhanced.wav", enhanced, sr) |
| |
|
| | # Enhance one file: |
| | out_path = dpdfnet.enhance_file("noisy.wav", model="dpdfnet2") |
| | print(out_path) |
| | |
| | # Model listing: |
| | for row in dpdfnet.available_models(): |
| | print(row["name"], row["ready"], row["cached"]) |
| | |
| | # Download models: |
| | dpdfnet.download() # All models |
| | dpdfnet.download("dpdfnet4") # Specific model |
| | ``` |
| | |
| | --- |
| | |
| | ## Citation |
| | |
| | ```bibtex |
| | @article{rika2025dpdfnet, |
| | title = {DPDFNet: Boosting DeepFilterNet2 via Dual-Path RNN}, |
| | author = {Rika, Daniel and Sapir, Nino and Gus, Ido}, |
| | year = {2025} |
| | } |
| | ``` |
| | |
| | --- |
| | |
| | ## License |
| | |
| | Apache-2.0 |
| | |