Model reference · open weights

DPDFNet

Audio Ceva-IP Audio→audio 1 build Open weights 504 dl/mo

DPDFNet is an open-weight audio or speech model from Ceva-IP. DPDFNet (BF16) weighs 96 MB; the smallest configuration that runs it is RTX 3060 12 GB.

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • DPDFNet is a family of causal, single-channel speech enhancement models developed by Ceva-IP for real-time noise suppression.
  • The models build on DeepFilterNet2 by incorporating Dual-Path RNN blocks in the encoder to improve long-range modeling while maintaining streaming compatibility.
  • Available in narrowband, wideband, and fullband variants with parameter counts ranging from 2.31 to 3.63 million, the models are distributed under the Apache-2.0 license.

Summary of the Ceva-IP/DPDFNet model card, 2026-10-01

What it is

Released byCeva-IP
Released2025-12-17
VRAM96 MB for the weights

What it runs on

Memory and cards for DPDFNet (BF16)

96 MBweights, file size
1.6 GBruntime overhead
CardOne streamMemory
RTX 3060 12 GBfits11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

From the model card

What Ceva-IP says about DPDFNet

Read the model card

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

8 kHz narrowband model

ModelDPRNN blocksParams (M)MACs (G)
dpdfnet2_8khz22.511.29
dpdfnet8_8khz83.563.99

16 kHz wideband models

ModelDPRNN blocksParams (M)MACs (G)
baseline02.310.36
dpdfnet222.491.35
dpdfnet442.842.36
dpdfnet883.544.37

48 kHz fullband model

ModelDPRNN blocksParams (M)MACs (G)
dpdfnet2_48khz_hr22.582.42
dpdfnet8_48khz_hr83.637.17

Recommended inference (CPU-only, ONNX)

pip install dpdfnet

CLI

# Enhance one file
dpdfnet enhance noisy.wav enhanced.wav --model dpdfnet4

# Enhance a directory (uses all CPU cores by default)
dpdfnet enhance-dir ./noisy_wavs ./enhanced_wavs --model dpdfnet2

# Enhance a directory with a fixed worker count
dpdfnet enhance-dir ./noisy_wavs ./enhanced_wavs --model dpdfnet2 --workers 4

# Download models
dpdfnet download
dpdfnet download dpdfnet8
dpdfnet download dpdfnet4 --force

Python API

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

Real-time Microphone Enhancement

Install sounddevice (not included in dpdfnet dependencies):

pip install sounddevice

StreamEnhancer processes audio chunk-by-chunk, preserving RNN state across calls. Any chunk size works; enhanced samples are returned as soon as enough data has accumulated for the first model frame (20 ms).

import numpy as np
import sounddevice as sd
import dpdfnet

INPUT_SR   = 48000
# Use one model hop (10 ms) as the block size so process() returns
# exactly one hop's worth of enhanced audio on every callback.
BLOCK_SIZE = int(INPUT_SR * 0.010)   # 480 samples at 48 kHz

enhancer = dpdfnet.StreamEnhancer(model="dpdfnet2_48khz_hr")

def callback(indata, outdata, frames, time, status):
    mono_in = indata[:, 0] if indata.ndim > 1 else indata.ravel()
    enhanced = enhancer.process(mono_in, sample_rate=INPUT_SR)
    n = min(len(enhanced), frames)
    outdata[:n, 0] = enhanced[:n]
    if n < frames:
        outdata[n:] = 0.0   # silence while the first window accumulates

with sd.Stream(
    samplerate=INPUT_SR,
    blocksize=BLOCK_SIZE,
    channels=1,
    dtype="float32",
    callback=callback,
):
    print("Enhancing microphone input - press Ctrl+C to stop")
    try:
        while True:
            sd.sleep(100)
    except KeyboardInterrupt:
        pass

# Optional: drain the final partial window at the end of a recording
tail = enhancer.flush()

[!NOTE] Latency The first enhanced output arrives after one full model window (~20 ms) has been buffered. All subsequent blocks are returned with ~10 ms additional delay.

Sample rate StreamEnhancer resamples internally. Pass your device's native rate as sample_rate; the return value is at the same rate.

Block size Using BLOCK_SIZE = int(SR * 0.010) (one model hop) gives one enhanced block per callback. Other sizes also work but may produce empty returns while the buffer fills.

Multiple streams Create a separate StreamEnhancer per stream. Call enhancer.reset() between independent audio segments to clear RNN state.


Citation

@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

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

How it works

How audio & music work

Audio or textinputAudio modelrecognise / synthesiseText or audiooutputSpeech-to-text turns audio into text; text-to-speech and music models turn text into audio.
© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms