LocalVQE v1.4-AEC
This first-party Soniqo page documents LocalVQE v1.4-AEC from the local speech-swift implementation. Hugging Face bundles are linked below after the integration notes.
Internal Page First
Landing cards and docs menus now point here first; source model and bundle links remain available from this page.
At a Glance
| Model | LocalVQE v1.4-AEC |
|---|---|
| Role | Explicit-reference acoustic echo cancellation |
| Backend | Native C++ adaptive filter plus stateful Core ML residual mask |
| Output | 16 kHz mono Float32 clean-microphone PCM |
| Languages | Language-independent acoustic processing |
| License | Apache-2.0 code and weights |
| Status | Streaming and complete-clip speech-swift runtime |
| Source | LocalVQE |
| Swift product | SpeechEnhancement |
| CLI / runtime | Programmatic LocalVQEEchoCanceller runtime |
Use
The snippet below mirrors the current speech-swift API or command exposed by the repo.
import SpeechEnhancement
let aec = try await LocalVQEEchoCanceller.fromPretrained()
let cleanMicrophone = try aec.processFrame(
microphone: microphoneFrame,
reference: playbackReferenceFrame
)
Model Links
Implementation Notes
- Microphone and playback reference are separate, synchronized inputs; a mixed system-audio transcript is not a valid reference.
- Streaming accepts exactly 256 mono samples per input at 16 kHz and adds one 16 ms spectral hop of algorithmic latency.
- Reset after dropped frames, device changes, capture restarts, or recording boundaries so stale filter and neural state cannot cross discontinuities.
- A silent reference preserves microphone-only speech; the runtime never falls back to subtracting a mix or muting the microphone.
- Do not blindly cascade this path with Apple Voice Processing I/O because two adaptive cancellers can distort near-end speech.