Native Rust inference engines for published speech-enhancement models, built as LADSPA and PipeWire plugins for BigLinux.
The models come from their authors: DeepFilterNet3 (Schröter et al.), DPDFNet (Ceva), GTCRN-AEC (LocalVQE), Silero VAD (Silero Team) and FireRedVAD (FireRedTeam). This repository reimplements their inference path without ONNX Runtime, OpenVINO or PyTorch. Recurrent weights are int8 with int16 activations (W8A16), and the kernels are chosen at runtime for the CPU: scalar, SSE4.1, AVX or AVX2+FMA. The int8 matrix products accumulate exactly in integers, so their result does not depend on the tier.
| Package | Plugin | File | Label / name |
|---|---|---|---|
deepfilternet3-native |
DeepFilterNet3 noise suppression (default) | /usr/lib/ladspa/libdfn3_ladspa.so |
deep_filter_net3_rs_mono |
| DeepFilterNet3-LL, larger model, no lookahead | /usr/lib/ladspa/libdfn3ll_ladspa.so |
deep_filter_net3_ll_rs_mono |
|
| Lookahead peak limiter | /usr/lib/ladspa/liblimiter_ladspa.so |
biglinux_lookahead_limiter_mono |
|
dpdfnet-native |
DPDFNet-2 48 kHz HR noise suppression | /usr/lib/ladspa/libdpdfnet_native.so |
dpdfnet_native_48hr |
| The same model over whole files, on several threads (how) | /usr/bin/dpdfnet-enhance |
||
gtcrn-aec-native |
GTCRN-AEC echo cancellation | /usr/lib/spa-0.2/aec/libspa-aec-gtcrn.so |
library.name = aec/libspa-aec-gtcrn |
All plugins take mono at 48 kHz (the limiter at any rate) and accept any host
block size. The DeepFilterNet3
and DPDFNet plugins include a voice gate that mutes the output while nobody
speaks, with Silero or, by choice, FireRedVAD as its detector, at one of five
sensitivity levels. It raises the latency of every engine to 66 ms, from 40 ms
for DeepFilterNet3, 20 ms for DeepFilterNet3-LL and 60 ms for DPDFNet
(details). It is on by default in the
DeepFilterNet3 plugins and off in DPDFNet, where it costs nothing until a host
turns it on (controls).
Each LADSPA plugin reports its current delay, in samples, on an output control
port named latency, which PipeWire's filter-chain adds to the node latency.
CPU seconds per minute of audio, one core, measured with perf stat
(method):
| Engine | i5-13400 (AVX2) | i3-2375M (AVX, 2011) |
|---|---|---|
| DeepFilterNet3 | 0.8 | 5.2 |
| DeepFilterNet3-LL | 2.1 | 15.2 |
| DPDFNet-2 48 kHz HR | 3.9 | 27.3 |
| GTCRN-AEC (16 kHz core) | 1.2 | 7.2 |
| Voice gate with Silero, added to any engine | 0.33 | not measured |
| Voice gate with FireRedVAD, added to any engine | 0.55 | not measured |
Rust 1.98.1 or newer (rust-toolchain.toml).
cargo build --release --locked --workspace --exclude dpdfnet-native
cargo build --locked --profile release-unwind -p dpdfnet-native
cargo test --release --locked --workspace --exclude dpdfnet-native
cargo test --locked --profile release-unwind -p dpdfnet-nativeThe tests use the models in the repository.
pkgbuild/PKGBUILD builds the three packages the same way.
ops/ int8/SIMD kernels and resampler shared by all engines
deepfilternet3/ DeepFilterNet3 and -LL engines, their shared LADSPA plugin crate,
CLIs and benchmark, weight quantizer
silero-vad/ Silero VAD and the voice gate of the denoiser plugins
firered-vad/ FireRedVAD: the AED behind dpdfnet-enhance --speech-only and the
streaming model the voice gate can use instead of Silero
limiter-ladspa/ peak limiter
dpdfnet/ DPDFNet engine, model bundle, export tools
gtcrn-aec/ GTCRN-AEC engine, PipeWire SPA plugin, model, evaluation harness
pkgbuild/ Arch/BigLinux split package
testdata/ synthetic speech and the allocation counter shared by the tests
docs/ design notes per engine and performance method
Code: MIT OR Apache-2.0 (LICENSE-MIT,
LICENSE-APACHE); the gtcrn-aec crates are Apache-2.0. Model
weights keep their upstream licenses. Sources, checksums and changes are listed
in NOTICE.