Everything below is importable from the top-level echoquell package unless a
submodule is noted. Signals are mono float64 NumPy arrays.
Run the full align → DTD → adaptive → residual chain. config is an
AecConfig; the default cancels with NLMS, double-talk detection, and residual
suppression enabled.
| Field | Default | Meaning |
|---|---|---|
method |
"nlms" |
"nlms", "rls", or "fdaf" |
n_taps |
256 |
filter length (block size for FDAF) |
mu |
0.5 |
adaptive step size |
align_delay |
False |
GCC-PHAT bulk-delay compensation |
max_delay |
None |
cap on the searched delay |
detect_doubletalk |
True |
freeze adaptation during double talk |
residual_suppression |
True |
apply the spectral post-filter |
res |
ResConfig() |
residual-suppression tuning |
Fields: output, linear (before residual suppression), doubletalk (mask
used), delay (samples applied), weights (final taps).
All expose .run(far, mic, *, freeze=None) -> AdaptResult and .reset().
freeze is an optional per-sample boolean mask; where truthy, the filter
outputs but does not adapt. AdaptResult carries error (cancelled signal),
echo_estimate, and weights.
Both return a per-sample boolean mask suitable for the freeze argument above.
Spectral Wiener-style suppression of residual echo. config is a ResConfig
(leakage, gain_floor, overestimation, smoothing).
Scenario fields: far, mic, echo, near, rir, doubletalk.