wakewordlab
On-device wake word detection for Python.
Includes a Silero VAD pre-filter that gates inference on speech frames only, reducing CPU usage on silence and cutting false positives.
Installation
pip install wakewordlab # file scoring only
pip install wakewordlab[mic] # + microphone streaming
Quick start
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
Streaming with VAD
VAD (Silero v5) is enabled by default. It gates the wake word model so inference only runs on frames that contain speech, keeping CPU usage low during silence.
detector = wakewordlab.WakewordDetector(
"hey_jarvis",
vad=True, # default — Silero VAD pre-filter
vad_threshold=0.5, # lower = more sensitive (pass more frames)
threshold=0.5, # wake word detection threshold
cooldown_sec=1.5, # min seconds between consecutive detections
stride_sec=0.1, # how often a window is scored (seconds)
)
@detector.on_detection
def handle(event):
print(f"{event.wake_word} confidence={event.confidence:.2f}")
# event.audio — the 1s window that triggered (16 kHz float32 numpy array)
with detector:
detector.wait()
To disable VAD (score every window regardless of speech):
detector = wakewordlab.WakewordDetector("hey_jarvis", vad=False)
Score an audio file
result = detector.score_file("clip.wav")
# {
# "detected": True,
# "peak_score": 0.92,
# "peak_time_sec": 0.4,
# "hit_count": 3,
# "window_count": 21,
# "threshold": 0.5,
# }
Score a raw array
import numpy as np
audio = np.zeros(16000, dtype=np.float32) # 1 s at 16 kHz
prob = detector.score(audio) # float 0–1
List available models
wakewordlab.list_models() # → ["hey_jarvis", ...]
Options
| Parameter | Default | Description |
|---|---|---|
threshold |
0.5 |
Wake word detection threshold (0–1) |
vad |
True |
Enable Silero VAD pre-filter |
vad_threshold |
0.5 |
VAD sensitivity — lower passes more frames |
cooldown_sec |
1.5 |
Minimum seconds between consecutive detections |
window_sec |
1.0 |
Scoring window length in seconds |
stride_sec |
0.1 |
Hop between windows in seconds |
device |
None |
Mic device index (default system mic) |
List audio input devices
from wakewordlab.audio import AudioStream
print(AudioStream.list_devices())
Commercial models
Commercial models are distributed as .wkw files with a license key:
detector = wakewordlab.WakewordDetector(
"path/to/custom.wkw",
license_key="xxxx-xxxx-xxxx-xxxx",
)
License
Public models are licensed for non-commercial use only.
Release files for wakewordlab 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wakewordlab-0.1.1.tar.gz | 165.2 kB | Details |
Built distributions (wheels)
Total release size: 4.0 MB
Release files / wakewordlab-0.1.1.tar.gz
| Download URL | wakewordlab-0.1.1.tar.gz |
|---|---|
| Size | 165.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
faeb46ba3078c2ceb6d58b3005f88b2d67fdf1a448b39243451f02eff8859e7f
|
|
BLAKE2b-256 checksum How to use checksums |
3001fe2bf6e9895ae1de06ad24398d9e8c241ac08d1b7e7a48edfdc3616f27cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp312-cp312-win_amd64.whl
| Download URL | wakewordlab-0.1.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 238.9 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3e51980eaa1172fe5556b796911b96398e49b83ad482cadf986b6ad99c98a18e
|
|
BLAKE2b-256 checksum How to use checksums |
1415c940ed35686d35468d2a96a2ec2187d62fbf2ebcb3957e668a6356383f49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | wakewordlab-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 248.3 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
e5b475decdee6a3d9a3a178a6f44465ae89afedb497f32c8cf90cef9d66d1dd0
|
|
BLAKE2b-256 checksum How to use checksums |
cf78da360e5c1960ca2139d82f0e5a58af555fa443e4f375985f764e8f63d3df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | wakewordlab-0.1.1-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 233.6 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1715fcf23937918d185f51b1bf8d6ec0f59a3d77d5ea5aaf5b680c318f13bf12
|
|
BLAKE2b-256 checksum How to use checksums |
fed81241e62eb6e33e3fb0d851ead6c40a56ad7acd15da10edd13e5772e3c88b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | wakewordlab-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 238.8 kB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
49b4dabfd6b43cdeb042ddf622bc964bd8b3bca5b8e09a1a7f40f99a3fe576f1
|
|
BLAKE2b-256 checksum How to use checksums |
d61f5bb1cf7775d56bb587dbc06236f8b6ac85aec1482573ac98791a4933aca1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp311-cp311-win_amd64.whl
| Download URL | wakewordlab-0.1.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 238.7 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4ce47fe7551b411ab7e3f0993ea57f63811341c1f5effbf56c933c523221b12e
|
|
BLAKE2b-256 checksum How to use checksums |
24dfb28d4f360a84ec8cb3506a52ee28b75cdce3302ca8db0876ba76b1b03208
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | wakewordlab-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 247.2 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
bfcd1f94a9a54f6924c4f060fc0ae58f6db8b1ab8f444f99f554bddbdaa62d7d
|
|
BLAKE2b-256 checksum How to use checksums |
48db6066fcab3e7da5db6e82a25b5040597c1379c2eaeb5361d09ea1939954a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | wakewordlab-0.1.1-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 233.0 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3aa0d74cad08d983078767d73e41a948dba0c834cc1dd8ddb6972c96af363aa8
|
|
BLAKE2b-256 checksum How to use checksums |
4cb5c51997f2e0d2a8c6e1b5c9bdb3e1584cf6867280386f60503141d0ac4421
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | wakewordlab-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl |
|---|---|
| Size | 237.2 kB |
| Tags | CPython 3.11 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
89998966b9a23681e88c354aa48e422a60d8da5a3d252572e9b61d759a1e96db
|
|
BLAKE2b-256 checksum How to use checksums |
419ecae2fa06d22f52f3088283ab14e9a9ffd3affa56c035ddc1b7c37bf70ec4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp310-cp310-win_amd64.whl
| Download URL | wakewordlab-0.1.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 238.5 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b9aa71ae1a066fbbc2b5d30b27ce4697b45911b7378c3199c2835ca59df30c8f
|
|
BLAKE2b-256 checksum How to use checksums |
7925fbeba490b542d343e6fdfb89ac385410b49e1afd1ee916fe24db11412e64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | wakewordlab-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 248.0 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
bf7c9fef0c216f82dcb3eff383271185abc7d200d039d9d38cd9476a635d38d4
|
|
BLAKE2b-256 checksum How to use checksums |
cdfa244e141b23d833c2caba40bbe345c9bef7d0679aebb3baa0a745a8cdaadb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | wakewordlab-0.1.1-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 233.6 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c0d3fe12233b2060af69d2e8ae2f4a4ec13817ad4aa3c2959abe1a82ec79e72f
|
|
BLAKE2b-256 checksum How to use checksums |
e13d8b81fe5ac1daa21f09d5612e30a119a6d4bf99dc1dbff0b51fa1a7770f6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl
| Download URL | wakewordlab-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl |
|---|---|
| Size | 238.2 kB |
| Tags | CPython 3.10 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
bfcb2265c82aae032dda825241230c62ec0ce3f1cd05d2301f5fe987c12c2a65
|
|
BLAKE2b-256 checksum How to use checksums |
09d060c67ee9870797da95fdc799f64ce46cc1028c89b54c3b0a43bab688438d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp39-cp39-win_amd64.whl
| Download URL | wakewordlab-0.1.1-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 238.8 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2705913069d99bf0d4198e758f6b563e51d3bdf8cac368101a4794c1445e1aa0
|
|
BLAKE2b-256 checksum How to use checksums |
4fe62784aeaec744af1bdea36fd2a971c25ef0e0bb102878b62f8d57b886288e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | wakewordlab-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 248.3 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
c450451c99a6cb58fb32da5311dbca0bb2d04a669bf7d220c7cec53ee0127188
|
|
BLAKE2b-256 checksum How to use checksums |
945b5614b4394edc129a8f7ac27732c0e1835f7c43de905f62b95168c5025f05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | wakewordlab-0.1.1-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 233.9 kB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
534d0b6e1292ea0b774acd8b06652c311d870e922b0d22bea106b257f2ac98d8
|
|
BLAKE2b-256 checksum How to use checksums |
2a226252b1e97b04832fc336728550ef9fd2b98164c9b89df4c7af6f941c7aa7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / wakewordlab-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
| Download URL | wakewordlab-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl |
|---|---|
| Size | 238.4 kB |
| Tags | CPython 3.9 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
480d7d04d9910b5da7c439ed86bde378f400c487c95b859ab3194bee1676bfff
|
|
BLAKE2b-256 checksum How to use checksums |
866f468cca4492c713b00d5a1b1196c60d00400c61807d7da314351af7bbf2d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|