rlx-aec
Pure Rust acoustic echo cancellation at 16 kHz mono — FDAF overlap-save NLMS (rustfft via rlx-fft) plus optional per-bin RLX residual suppression.
Pre-ASR front-end: feed cleaned PCM to Whisper / Voxtral unchanged.
CLI
Flags: --step-size, --max-delay-ms, --no-residual.
Library
use ;
let mut aec = new?;
let clean = aec.process?;
Duplex: aec.push_reference(tts_pcm) on playback; aec.process_mic(mic_chunk) on capture.
Bench
Weights
Embedded weights/residual_aec.safetensors (identity mask v1). Regenerate:
Tests
| Test | What |
|---|---|
synthetic_echo |
Delay, FDAF MSE improvement, session offline |
fdaf_parity |
vs fdaf-aec crate (dev-dep) |
whisper_e2e |
RLX_WHISPER_DIR + JFK echo fixture |