--- license: apache-2.0 library_name: coreml tags: - coreml - audio - speech-enhancement - noise-suppression - streaming - deepfilternet --- # DeepFilterNet3 Streaming Core ML A stateful, fixed-shape Core ML conversion of **DeepFilterNet3** for real-time 48 kHz speech enhancement on Apple platforms. It consumes one 480-sample (10 ms) hop at a time and exposes all recurrent state explicitly. This repository is the default model source for the [`DeepFilterNetCoreML`](https://github.com/kylehowells/DeepFilterNet-mlx) Swift product. It is self-contained: the Core ML graph, matching MLX weights/configuration, and normalization state are versioned together. ## Origin - Original project: [Rikorose/DeepFilterNet](https://github.com/Rikorose/DeepFilterNet) - Paper: [DeepFilterNet: Perceptually Motivated Real-Time Speech Enhancement](https://arxiv.org/abs/2305.08227) - Swift runtime and conversion: [kylehowells/DeepFilterNet-mlx](https://github.com/kylehowells/DeepFilterNet-mlx) - Conversion script: [`Scripts/Conversion/convert_deepfilternet_to_coreml.py`](https://github.com/kylehowells/DeepFilterNet-mlx/blob/feature/deepfilternet4/Scripts/Conversion/convert_deepfilternet_to_coreml.py) ## Runtime contract | Property | Value | |---|---:| | Sample rate | 48,000 Hz | | Input hop | 480 samples / 10 ms | | Fixed algorithmic delay | 1,440 samples / 30 ms | | Core ML graph | `DeepFilterNet3-Streaming.mlpackage` | | Recurrent state | Explicit inputs and outputs | The fixed 30 ms delay is separate from model execution time and application audio buffering. ## Validation The validated Swift streaming path measured 0.999993 correlation to the official PyTorch CLI output. A fresh end-to-end run from the original stereo source, including Swift downmix/resampling, measured 0.999969 correlation and 42.13 dB signal-to-error ratio. On the development Apple Silicon Mac, unpaced steady per-hop Core ML compute was 0.264 ms and the 52.13-second validation clip processed in 1.494 seconds (34.9x real time). Performance and paced callback latency vary by device, operating system, and concurrent load. ## Swift usage ```swift import DeepFilterNetCoreML let enhancer = try await DeepFilterNetCoreMLStreamer.load( configuration: .init(variant: .deepFilterNet3) ) let enhancedHop = try enhancer.processHop(input480Samples) let tail = try enhancer.flush() ``` The default loader downloads this repository through `swift-huggingface`. Applications can instead provide `.local(...)` or `.bundle(...)` as the model source. ## Files - `DeepFilterNet3-Streaming.mlpackage`: stateful one-hop Core ML graph. - `auxiliary.npz`: validated normalization state. - `config.json` and `model.safetensors`: matching model configuration and DSP/filterbank data used by the Swift runtime. - `LICENSE-APACHE` and `LICENSE-MIT`: upstream dual-license terms. ## License DeepFilterNet is available under Apache-2.0 or MIT at your option. This repository preserves both upstream license files. See the original project for full attribution.