DPDFNet
DPDFNet is a family of causal, single-channel speech enhancement models for real-time noise suppression. It extends DeepFilterNet2 with Dual-Path RNN (DPRNN) blocks in the encoder for stronger long-range temporal and cross-band modeling while staying streaming-friendly. The paper is available on arXiv. The source project is hosted at GitHub and the pre-trained ONNX models used by sherpa-onnx are published in the speech-enhancement-models release. They are also available from the official Hugging Face repository.
In sherpa-onnx, DPDFNet supports offline speech enhancement and online streaming speech enhancement. Both modes support the official 8, 16, and 48 kHz ONNX exports listed below. The input is resampled when necessary, and the enhanced audio uses the model’s native sample rate.
Note
The full set of DPDFNet ONNX models and sample wave files such as
inp_16k.wav and speech_with_noise.wav are available from the
speech-enhancement-models GitHub release.
Model variants
8 kHz models
Model |
Params (M) |
MACs (G) |
Intended use |
|---|---|---|---|
|
2.51 |
1.29 |
Low-bandwidth real-time enhancement |
|
3.56 |
3.99 |
Best 8 kHz enhancement quality |
16 kHz models
Model |
Params (M) |
MACs (G) |
Intended use |
|---|---|---|---|
|
2.31 |
0.36 |
Fastest / lowest resource usage |
|
2.49 |
1.35 |
Real-time / embedded devices |
|
2.84 |
2.36 |
Balanced performance |
|
3.54 |
4.37 |
Best enhancement quality |
48 kHz models
Model |
Params (M) |
MACs (G) |
Intended use |
|---|---|---|---|
|
2.58 |
2.42 |
Balanced high-resolution enhancement |
|
3.63 |
7.17 |
Best 48 kHz enhancement quality |
Hint
Use dpdfnet2_8khz or dpdfnet8_8khz for 8 kHz audio;
dpdfnet_baseline, dpdfnet2, dpdfnet4, or dpdfnet8 for
16 kHz downstream ASR or speech recognition; and
dpdfnet2_48khz_hr or dpdfnet8_48khz_hr for 48 kHz enhancement.
Download pre-trained models
Please use the following commands to download DPDFNet ONNX models and a test wave file:
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet_baseline.onnx
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet2.onnx
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet4.onnx
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet8.onnx
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet2_48khz_hr.onnx
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet2_8khz.onnx
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet8_8khz.onnx
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet8_48khz_hr.onnx
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
After downloading, you should have files similar to the following:
ls -lh *.onnx inp_16k.wav
Offline attenuation limit
DPDFNet’s offline configuration has an optional attenuation limit. It reduces
over-suppression by mixing an aligned copy of the noisy spectrum back into the
enhanced spectrum. For a positive limit L in dB, the noisy-signal weight is
10^(-L / 20) and the enhanced-signal weight is the remainder. For example,
12 dB uses a noisy-signal weight of about 0.251.
The default value, 0, disables the limit and preserves the model’s full
suppression. Finite values in [0, 100] are valid; 0 and infinity
disable the limit. Among positive values, a larger value permits stronger
suppression because it mixes in less of the noisy spectrum.
The command-line option is
--speech-denoiser-dpdfnet-attenuation-limit-db. The corresponding binding
names are:
API |
Offline DPDFNet configuration field |
|---|---|
C, C++, Python, Rust |
|
Dart / Flutter, JavaScript / WebAssembly / HarmonyOS, Kotlin, Swift |
|
.NET, Go, Pascal |
|
Java |
|
Important
The attenuation limit is implemented only by the offline DPDFNet denoiser. It is not applied during online streaming enhancement; leave it at its default value in an online configuration.
Command-line examples
The offline command accepts the attenuation limit and every model variant:
./bin/sherpa-onnx-offline-denoiser \
--speech-denoiser-dpdfnet-model=dpdfnet8_8khz.onnx \
--speech-denoiser-dpdfnet-attenuation-limit-db=12 \
--input-wav=input.wav \
--output-wav=enhanced-8k.wav
The online command supports the same model variants, without the offline-only attenuation behavior:
./bin/sherpa-onnx-online-denoiser \
--speech-denoiser-dpdfnet-model=dpdfnet8_48khz_hr.onnx \
--chunk-duration-ms=10 \
--input-wav=input.wav \
--output-wav=enhanced-48k.wav
See DPDFNet Python API for Python usage and DPDFNet C API for C API examples.
Demo and project links
You can listen to samples and try the online demo at
Citation
@article{rika2025dpdfnet,
title = {DPDFNet: Boosting DeepFilterNet2 via Dual-Path RNN},
author = {Rika, Daniel and Sapir, Nino and Gus, Ido},
year = {2025},
}