Skip to content

Speech enhancement candidates for the Wave

Research date: 2026-10-14. These are trained-model candidates with public weights, not Wave/NPU-qualified models. VAD integration remains deferred until the NPU compatibility work is complete (backlog C20). The current compatibility repair is SqueezeNet; this guide selects subsequent audio workloads without changing production processing.

Role Candidate Available trained artifact Why test it
Small recurrent compatibility baseline GTCRN, 16 kHz Author’s PyTorch checkpoints and streaming ONNX, MIT Author reports 48.2K parameters and 33 MMAC/s. Adds GRU, state, ConvTranspose and normalization beyond the CNN profiles.
Lightweight quality contender UL-UNAS, 16 kHz Author’s trained checkpoint and streaming ONNX, MIT Paper reports 171K parameters / 35 MMAC/s and stronger results than GTCRN on its evaluation set. More graph nodes/recurrent units can still increase runtime.
Stronger full-band denoising DPDFNet2_48khz_hr, 48 kHz Official checkpoint/ONNX/TFLite, Apache-2.0 model card Matches the Wave’s capture sample rate; substantial quality candidate with 2.58M parameters and explicit streaming state. Native compatibility and complete latency remain unmeasured.
Joint echo cancellation, noise reduction and dereverberation LocalVQE v1.2, 16 kHz Project-author PyTorch/GGUF weights, Apache-2.0 code/card Actual downloadable joint model, 1.3M parameters. No ONNX artifact in the inspected release; export and equivalence proof are new work.
Established neural AEC control DTLN-AEC128, 16 kHz Original-author two-part TFLite model, MIT repository Provides a reproducible microphone/reference AEC baseline; 1.8M parameters. Original tree contains TFLite, so ONNX conversion needs its own proof.

For the next device compatibility baseline, select GTCRN first. The quality contender is UL-UNAS: the authors’ matched DNS3 comparison reports PESQ2.30 versus GTCRN2.10 at35 versus34 MMAC/s. The often quoted UL-UNAS3.09 score belongs to a separate VCTK/PESQ-loss training variant, rather than the public DNS3 checkpoint used by the inspected ONNX. These paper results motivate a comparison; they do not establish quality of our downloaded artifacts.

Published quality/timing figures are upstream evidence, not measurements on the Wave. DPDFNet’s paper reports improved quality against DFN3 on its particular 16 kHz evaluation sets; those results do not measure the selected 48 kHz checkpoint. LocalVQE’s reported Ryzen timing does not establish performance on the Wave’s Cortex-A55. Its Pi5 timing refers to the separate 49K-parameter compact GTCRN-AEC variant, rather than the 1.3M-parameter v1.2 model.

Keep the existing DeepFilterNet3 as a quality and runtime reference. The Wave has already measured roughly 84% of one worker core during speech and about 8.5 ms per 10 ms hop with tract FP32, with uplink underruns in the serial DSP workload. That is evidence about the current runtime/pipeline, not proof that another runtime or NPU conversion will solve it. See compute measurements.

For microphone/uplink speech, evaluate noise suppression and dereverberation on Wave recordings. AEC additionally needs a synchronized reference of what the local speakers actually play, including reference delay and clock drift. The DTLN-AEC runner uses paired microphone/loopback signals. Test echo-only, near-end-only, double-talk, moving echo paths and speaker distortion; suppressing near-end speech during double-talk must not count as successful echo removal.

For received speech before playback, test a separate denoising instance and state. A single-stream playback denoiser does not cancel the acoustic echo in the microphones. Speech-enhancement results also do not establish preservation of music, alerts or mixed media. These are two evaluation paths, not a claim that one model should process every input/output signal.

The commonly linked public DeepVQE implementation omits the alignment block and supplies a noise-suppression checkpoint. It is not the joint Microsoft AEC/NS/dereverb model from the paper. No original Microsoft joint checkpoint was verified in this bounded search. LocalVQE and DTLN-AEC are more concrete downloadable AEC candidates for this investigation.

Three revision-pinned ONNX files were downloaded and checked statically in PoC20. Follow-up PoC21 ran GTCRN and UL-UNAS on the Mac CPU with ORT1.27, one thread, for128 consecutive spectra from retained real speech, including explicit streaming state. Both produced finite outputs. GTCRN reproduced the enhanced spectra for16 reset frames byte-for-byte in the retained probe; UL-UNAS did not. This was a graph/state smoke test using a shared square-root Hann window, not a waveform quality or source-parity test. Actual waveform comparison must use each model’s proper analysis/synthesis window: Hann for UL-UNAS, square-root Hann for GTCRN. No audio model ran on the Wave.

UL-UNAS also returned different spectra/caches for repeated identical first frames and freshly zeroed caches, with all four feed bytes verified unchanged. Disabling graph optimization, memory patterns, CPU arena and prepacking did not resolve it. Its original, non-simplified author ONNX showed the same issue in this host environment. The cause remains unknown; finite output alone does not qualify streaming correctness. This makes GTCRN the more ready first device baseline while UL-UNAS needs source/runtime investigation. The ONNX NumPy reference evaluator could not complete its bidirectional GRU case, so no successful independent full reference is claimed. These results do not prove that stock Wave ORT1.15.1 has the same behavior.

Private host probes and exact diagnostics are in artifacts/npu/poc21/audio-probe/. The earliest probe output paths were overwritten by a later diagnostic; that limitation is recorded. The retained probe0003 outputs now have distinct paths and validated hash bindings. These exploratory artifacts are not qualified production references.

Artifact Exact identity Observed graph constraints
GTCRN gtcrn_simple.onnx 535,190 B; SHA b4718df6228e7bdf1a8a435cf98f838636eb2fd331acabf86ba87c5192ebcb87 IR6/opset11, 415 nodes, 14 GRU / 11 ConvTranspose; spectrum plus three FP32 state inputs,18,048 state values
UL-UNAS ulunas_stream_simple.onnx 788,967 B; SHA f2e804d54d6a88f4f82f44d86c9f1cf646db2509bfca935cfbfc5fcd8cbfac3b IR6/opset11, 697 nodes, 28 GRU / 5 ConvTranspose; spectrum and three state inputs
DPDFNet2_48khz_hr 10,493,337 B; SHA 7f0575a5cec0ba4ffd8f8bd657e06d007e4ccdd955d76faab922b9d3291dc14b IR8/opset17, 493 nodes, 4 GRU / 8 LayerNormalization / 22 Gemm / 14 MatMul; FP32 state 56,436 values

Their multiple inputs/outputs, state, recurrent operations and original FP32 precision exceed the qualified MarbleNet profile and the SqueezeNet candidate contract. Bidirectional recurrence over frequency within a frame does not itself imply future temporal context. For DPDFNet, a 225,744 B state copied in/out every 10 ms would move about 45.1 MB/s before spectrum and other overhead; persistent state matters as much as MAC counts.

Do not equate hop duration with total algorithmic delay. DPDFNet’s wrapper describes 20 ms initial buffering / 10 ms hops, while its trained design and streaming mask include two delayed frames. Complete waveform latency/alignment remains unverified. GTCRN/UL-UNAS use 32 ms analysis windows / 16 ms hops; DTLN-AEC uses 32 ms windows / 8 ms hops. Measure input-to-output alignment rather than quoting hop size as latency.

  1. Establish source-matched GTCRN CPU/stateful sequence and waveform references, then measure complete processing with stock Wave ORT1.15.1. After that, qualify small native GRU, ConvTranspose and normalization controls before considering full offload.
  2. Resolve UL-UNAS’s identical-feed/state-reset discrepancy before promotion. Compare validated UL-UNAS and DPDFNet against the same clean/noisy recordings and DFN3 reference, measuring speech preservation, quality, hop deadlines and memory.
  3. Evaluate DTLN-AEC128 and LocalVQE separately with paired mic/reference audio and double-talk cases. Prove any export or precision conversion first.

The detailed search report and exact static inventories remain under artifacts/npu/poc20/audio-model-research.md and audio-model-sources/. The compact LocalVQE49K line is a DSP AEC front end followed by a neural enhancer; its inspected public assets are GGUF, with no compact PyTorch/ONNX release verified. Whole-clip Pi5 timing uses precomputed alignment and utterance normalization, so it does not establish live A55 behavior. Keep LocalVQE v1.2 as the downloadable joint quality candidate and DTLN-AEC128 as the original-author AEC control; both add export/runtime work.

Wave compatibility, sustained timing, quality on Wave recordings and complete latency are open questions. These recommendations authorize no integration or unbounded native experiment beyond the owner’s current bounded SqueezeNet repair.