Faster-enhancer.c runs streaming speech 3.3x faster on CPUs
No dependencies, no GPU—just C code and int8 math on a single core.
Gyeongmin Kim introduces faster-enhancer.c, a streaming speech enhancement runtime that strips away every dependency and GPU requirement. By porting the FastEnhancer-Medium model at 48 kHz to a pure C int8 implementation, the runtime achieves a 3.3x speedup over the fp32 ONNX Runtime graph on the same Apple M2 core (0.069 real-time factor vs. 0.230). On a Galaxy S23+ with Snapdragon 8 Gen 2, the real-time factor is 0.096. The speed gains come from specializing every layer to the fixed model: activation ranges are recomputed per frame (no calibration set needed), k=3 convolutions use Winograd F(2,3), cross-stage state uses fp16, and the GRU plus dequantization epilogues are fused. No memory is allocated after startup. Over 824 VoiceBank-DEMAND utterances, the engine stays within -0.006 PESQ and -0.08 dB SNR of the fp32 version.
Speed alone doesn’t settle deployment cost. Because the enhancer holds a fraction of a core as long as the microphone is open, the real-time factor represents a duty cycle. Benchmark code races through a file, but an audio callback does not. Pacing to the 6.67 ms deadline costs 4.2x more per frame but saves 49% of the energy—and the cheapest core placement misses 96% of its deadlines. All SIMD tiers within an architecture family produce byte-identical output. The runtime is released as a dependency-free library, making it practical for low-power, always-on speech enhancement on commodity CPUs.
- 3.3x faster than fp32 ONNX Runtime on Apple M2 (0.069 vs 0.230 real-time factor)
- Tracks fp32 accuracy within -0.006 PESQ and -0.08 dB SNR across 824 utterances
- Pacing to 6.67ms deadline saves 49% energy but raises per-frame cost 4.2x
Why It Matters
On-device speech enhancement without GPUs or dependencies, enabling real-time noise removal on phones and laptops.