Model reference · open weights
LocalVQE is an open-weight audio or speech model from LocalAI-io. LocalVQE (BF16) weighs 42 MB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the LocalAI-io/LocalVQE model card, 2026-10-01
What it is
| Released by | LocalAI-io |
|---|---|
| Released | 2026-04-17 |
| VRAM | 42 MB for the weights |
What it runs on
| Card | One stream | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
Local Voice Quality Enhancement — compact neural models for acoustic echo cancellation (AEC), noise suppression (NS), and dereverberation of 16 kHz speech, running on commodity CPUs in real time. Causal and streaming (256-sample hop, 16 ms latency).
This page hosts the published weights. Inference runs the GGML C++ engine on the GGUF files directly (build instructions on GitHub).
Authors: Richard Palethorpe (richiejp) and Claude (Anthropic). LocalVQE is a streaming, CPU-tuned derivative of DeepVQE (Indenbom et al., Interspeech 2023).
Speed is per 16 ms hop on a Ryzen 9 7900 (Zen4), 4 threads; RT = realtime factor (higher is faster than realtime).
| Version | Does | Params | Size (F32) | Speed | Pick it when |
|---|---|---|---|---|---|
| v1.3 (current) | AEC + NS + dereverb | 4.8 M | ~19 MB | 3.2 ms · 5.0× RT | best joint quality, CPU budget available |
| v1.2 | AEC + NS + dereverb | 1.3 M | ~5 MB | 1.7 ms · 8.9× RT | tight CPU / low-power devices |
| v1.4-AEC | echo only (keeps voice, noise, room) | 203 K | ~3 MB | 0.83 ms · 19× RT | NS is handled elsewhere, or you want the room kept |
| v1.4-AEC 2.7K | echo only, linear filter (no mask) | 2.7 K | ~17 KB | 0.36 ms · 44× RT | lightest echo canceller; echo isn't heavily reverberant |
| v1.1 / v1 | AEC + NS + dereverb | 1.3 M | ~5 MB | — | superseded by v1.2 |
bf16 GGUFs are ~12 % smaller with identical quality and speed; pick f32
unless download size matters.A separate, much smaller second line of models for lower-power CPUs: a ~49 K-parameter GTCRN-AEC network — a distinct architecture based on GTCRN (Rong et al., ICASSP 2024) — paired with the project's DSP echo-cancellation front-end. The GGUFs are self-contained, so they run with the same single command as every other model. Two variants share the architecture:
| Model | Does | Params |
|---|---|---|
| localvqe-pi-v1-49k | AEC + NS + dereverb (full enhance) | 49 K |
| localvqe-pi-aec-v1-49k | echo only — keeps noise + room | 49 K |
Whole-clip real-time factor on the real ggml graph, benchmarked on a Raspberry
Pi 5 (one example of a low-power target; test_gtcrn --bench, Cortex-A76,
Ubuntu 24.04), parity-verified to the PyTorch reference within ~1e-6 on-device.
RTF is identical for both variants:
| Threads | 8 s clip | RTF | RT factor |
|---|---|---|---|
| 1 | 388 ms | 0.048 | ~21× |
| 2 | 219 ms | 0.027 | ~37× |
| 4 | 163 ms | 0.020 | ~49× |
That is ~0.78 ms per 16 ms hop single-threaded. Runs on any CPU; for single-board
ARM, cross-compile for aarch64 with ggml/docker/Dockerfile.arm64 (docker buildx
f16/q8 quantizations are published only if/when released.| File | Size | Model |
|---|---|---|
localvqe-v1.4-aec-200K-f32.gguf | 3 MB | v1.4-AEC (echo only) |
localvqe-v1.4-aec-200K-bf16.gguf | 2.6 MB | v1.4-AEC, conv weights in BF16 |
localvqe-v1.4-aec-2.7K-f32.gguf | 17 KB | v1.4-AEC front-end only (adaptive filter, no mask) |
localvqe-pi-v1-49k-f32.gguf | 2.3 MB | Compact line — GTCRN-AEC full enhance (echo + NS + dereverb) |
localvqe-pi-aec-v1-49k-f32.gguf | 2.3 MB | Compact line — GTCRN-AEC echo-only (keeps noise + room) |
localvqe-v1.3-4.8M-f32.gguf | 19 MB | v1.3 joint — GGUF the engine loads |
localvqe-v1.3-4.8M.pt | 55 MB | v1.3 joint — PyTorch checkpoint (research) |
localvqe-v1.2-1.3M-f32.gguf | 5 MB | v1.2 joint — GGUF |
localvqe-v1.2-1.3M.pt | 11 MB | v1.2 joint — PyTorch checkpoint |
localvqe-v1.1-1.3M-f32.gguf, localvqe-v1-1.3M-f32.gguf | 5 MB | older releases |
v1.4-AEC is GGUF-only (no .pt). GGUF integrity is checked at load time against
a built-in SHA256 allowlist in the engine.
Full 800-clip eval on the
ICASSP 2022 AEC Challenge blind test set
(real recordings). AECMOS echo / deg are 1–5 (higher = more echo removed /
cleaner speech); blind ERLE is 10·log10(E[mic²]/E[enh²]), only meaningful on
far-end-only clips. Unprocessed-mic echo MOS is 2.67 / 2.56 / 1.90 / 2.13 / 5.00
across the five scenarios.
v1.4-AEC — keeps background noise and room by design, so its ERLE and far-end DNSMOS are intentionally lower than the joint models (it isn't deleting the ambience):
| Scenario | n | echo ↑ | deg ↑ | ERLE ↑ | OVRL |
|---|---|---|---|---|---|
| doubletalk | 115 | 4.20 | 2.45 | — | 2.59 |
| doubletalk-with-movement | 185 | 4.19 | 2.45 | — | 2.55 |
| farend-singletalk | 107 | 3.80 | 4.99 | 14.6 dB | 1.37 |
| farend-singletalk-with-movement | 193 | 3.86 | 4.95 | 11.1 dB | 1.31 |
| nearend-singletalk | 200 | 4.99 | 3.99 | — | 3.08 |
v1.4-AEC 2.7K (front-end only) — matches or beats the full model's perceptual far-end echo at 1/74 the parameters; the mask's extra work shows up as higher ERLE above, not higher echo MOS:
| Scenario | n | echo ↑ | deg ↑ | ERLE ↑ | OVRL |
|---|---|---|---|---|---|
| doubletalk | 115 | 4.00 | 2.79 | — | 2.46 |
| doubletalk-with-movement | 185 | 3.90 | 2.92 | — | 2.42 |
| farend-singletalk | 107 | 4.0 |
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.
How it works