WakeWordLab is for always-on wake word detection that stays on-device, keeps your audio private, and runs efficiently on constrained hardware without sending speech to the cloud.
Benchmarked against openWakeWord on the same hardware and dataset.
Measured on a single pinned CPU core, single-thread inference, 30 seconds of 16 kHz synthetic audio.
| Engine | MMAC / invoke | Cadence | MMAC / sec | ms / sec audio | Core load |
|---|---|---|---|---|---|
| WakeWordLab | 4.81 | 100 ms | 48.1 | 152.7 ms | 15.3% |
| openWakeWord (mel + embedding + head) | 42.4 | 80 ms | 530.3 | 405.7 ms | 40.6% |
Comparison used a trained openWakeWord model. YouTube audio without the wake word was used for false-positive evaluation; a synthetic dataset for recall. Both models scored 0 false positives on the DIPCO dataset.
Inference only runs on speech frames — silence passes straight through. Cuts CPU usage further and reduces false positives on background noise.
Under 25 KB model size. Designed from scratch for constrained inference — not a pruned version of a larger model.
One file to ship, cache, and update. No multi-model pipeline to coordinate — simpler deployments on embedded hardware.
Drop-in integration with Home Assistant. Run WakeWordLab as a Wyoming-compatible server and connect it to your voice assistant pipeline.
Pack the model into one .wkw file for simple shipping, caching, and updates on edge hardware.
Optional mic support via wakewordlab[mic]. Stream live audio directly into the detector with VAD gating out of the box.
pip install wakewordlab # file scoring only pip install wakewordlab[mic] # + microphone streaming
import wakewordlab
# Download a model (cached to ~/.cache/wakewordlab/models/)
wakewordlab.download("hey_jarvis")
# Start listening — VAD is on by default
detector = wakewordlab.WakewordDetector("hey_jarvis")
@detector.on_detection
def handle(event):
print(f"Detected: {event.wake_word} confidence={event.confidence:.2f}")
detector.start()
detector.wait() # blocks until Ctrl-C
Need a model trained on a specific wake phrase or language? Get in touch and we can discuss what's involved.
info@apinference.com