File size: 3,166 Bytes
ee4210e 63d8ba4 ee4210e 63d8ba4 ee4210e 63d8ba4 ee4210e 63d8ba4 da6e607 ee4210e 63d8ba4 ee4210e 63d8ba4 6c71c1b 63d8ba4 6c71c1b 63d8ba4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | ---
tags:
- speech-enhancement
- noise-cancellation
- denoising
- onnx
license: mit
library_name: onnxruntime
---
# DeepFilterNet3 ONNX
Verified neural-network export of the official
[DeepFilterNet3 v0.5.6](https://github.com/Rikorose/DeepFilterNet/tree/v0.5.6)
checkpoint for native 48 kHz speech enhancement.
This is the neural graph only. It expects normalized spectral features and
returns an ERB mask plus complex deep-filter coefficients. A compatible STFT,
feature-normalization, filtering, and synthesis implementation is required.
## Files
| File | Description |
|---|---|
| `deepfilter.onnx` | FP32 ONNX graph with a dynamic frame axis |
| `deepfilter-auxiliary.bin` | Canonical ERB matrices and Vorbis window for legacy consumers |
| `config.json` | Model and DSP configuration |
| `export_manifest.json` | Source checksum, artifact checksums, and ONNX parity results |
## Tensor contract
| Direction | Name | Shape | Type |
|---|---|---|---|
| input | `feat_erb` | `[1, 1, T, 32]` | float32 |
| input | `feat_spec` | `[1, 2, T, 96]` | float32 |
| output | `erb_mask` | `[1, 1, T, 32]` | float32 |
| output | `df_coefs` | `[1, 5, T, 96, 2]` | float32 |
The `feat_spec` channels are real then imaginary. The coefficient axes are
batch, filter order, frame, frequency, then real/imaginary.
## Required DSP contract
- sample rate: 48,000 Hz
- STFT: 960-point real FFT, 480-sample hop, Vorbis window
- spectrum: 481 bins; deep filtering: first 96 bins
- ERB bank: 32 disjoint bands with at least 2 FFT bins per band
- normalization: `tau=1.0`, rounded alpha `0.99`; ERB mean state linearly
initialized from -60 dB to -90 dB and complex unit state from 0.001 to 0.0001
- deep filter: order 5, lookahead 2, applied from an immutable copy of the noisy
spectrum before fusion with the ERB-masked spectrum
- batch/offline parity: append one 960-sample analysis tail and remove the
480-sample STFT delay after overlap-add synthesis
`deepfilter-auxiliary.bin` is little-endian float32 data containing, in order,
the `[481,32]` forward ERB matrix, `[32,481]` inverse ERB matrix, and `[960]`
Vorbis window. New integrations can generate these deterministic constants.
## Verification
The export script checks the graph with ONNX, then compares ONNX Runtime CPU
outputs with PyTorch for several frame lengths. Exact errors and SHA-256 hashes
are recorded in `export_manifest.json`.
End-to-end validation used 20 VoiceBank-DEMAND clips (101.51 seconds total):
| Runtime | PESQ | STOI | SI-SDR |
|---|---:|---:|---:|
| official DeepFilterNet v0.5.6 | 2.9585 | 0.96064 | 18.228 dB |
| speech-core with this graph | 2.9602 | 0.96064 | 18.225 dB |
The speech-core output matched the official reference at 54.85 dB mean SI-SDR
with 0.000140 mean waveform RMSE. These values validate the tested native DSP
integration; other implementations must follow the contract above.
## Attribution and license
DeepFilterNet is by Hendrik Schröter and contributors and is dual-licensed
under Apache-2.0 or MIT. This repository publishes the converted model under
the MIT option. See the upstream project and papers for architecture and
training details.
|