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

dpdfnet2_8khz

2.51

1.29

Low-bandwidth real-time enhancement

dpdfnet8_8khz

3.56

3.99

Best 8 kHz enhancement quality

16 kHz models

Model

Params (M)

MACs (G)

Intended use

dpdfnet_baseline

2.31

0.36

Fastest / lowest resource usage

dpdfnet2

2.49

1.35

Real-time / embedded devices

dpdfnet4

2.84

2.36

Balanced performance

dpdfnet8

3.54

4.37

Best enhancement quality

48 kHz models

Model

Params (M)

MACs (G)

Intended use

dpdfnet2_48khz_hr

2.58

2.42

Balanced high-resolution enhancement

dpdfnet8_48khz_hr

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

attenuation_limit_db

Dart / Flutter, JavaScript / WebAssembly / HarmonyOS, Kotlin, Swift

attenuationLimitDb

.NET, Go, Pascal

AttenuationLimitDb

Java

setAttenuationLimitDb(float) on the builder

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.

Citation

@article{rika2025dpdfnet,
  title = {DPDFNet: Boosting DeepFilterNet2 via Dual-Path RNN},
  author = {Rika, Daniel and Sapir, Nino and Gus, Ido},
  year = {2025},
}