On-device wake word detection
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wakewordlab-0.1.1.tar.gz.
File metadata
- Download URL: wakewordlab-0.1.1.tar.gz
- Upload date:
- Size: 165.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
faeb46ba3078c2ceb6d58b3005f88b2d67fdf1a448b39243451f02eff8859e7f
|
|
| MD5 |
394c2f99a91a44c5ffb6870c4689b399
|
|
| BLAKE2b-256 |
3001fe2bf6e9895ae1de06ad24398d9e8c241ac08d1b7e7a48edfdc3616f27cf
|
File details
Details for the file wakewordlab-0.1.1-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 238.9 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e51980eaa1172fe5556b796911b96398e49b83ad482cadf986b6ad99c98a18e
|
|
| MD5 |
637f003ebd16d92a065a6fa362c4f963
|
|
| BLAKE2b-256 |
1415c940ed35686d35468d2a96a2ec2187d62fbf2ebcb3957e668a6356383f49
|
File details
Details for the file wakewordlab-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 248.3 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5b475decdee6a3d9a3a178a6f44465ae89afedb497f32c8cf90cef9d66d1dd0
|
|
| MD5 |
d3dacab0ae13ea4aa560bd4b3e20c5ab
|
|
| BLAKE2b-256 |
cf78da360e5c1960ca2139d82f0e5a58af555fa443e4f375985f764e8f63d3df
|
File details
Details for the file wakewordlab-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 233.6 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1715fcf23937918d185f51b1bf8d6ec0f59a3d77d5ea5aaf5b680c318f13bf12
|
|
| MD5 |
b1cc196fdaf39003959fd22d5d7c3fb7
|
|
| BLAKE2b-256 |
fed81241e62eb6e33e3fb0d851ead6c40a56ad7acd15da10edd13e5772e3c88b
|
File details
Details for the file wakewordlab-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 238.8 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49b4dabfd6b43cdeb042ddf622bc964bd8b3bca5b8e09a1a7f40f99a3fe576f1
|
|
| MD5 |
b39e4091ebe5f27f88eaf5783d1a63dd
|
|
| BLAKE2b-256 |
d61f5bb1cf7775d56bb587dbc06236f8b6ac85aec1482573ac98791a4933aca1
|
File details
Details for the file wakewordlab-0.1.1-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 238.7 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ce47fe7551b411ab7e3f0993ea57f63811341c1f5effbf56c933c523221b12e
|
|
| MD5 |
92cf1cc2fc718b28c0973b1a0153fb08
|
|
| BLAKE2b-256 |
24dfb28d4f360a84ec8cb3506a52ee28b75cdce3302ca8db0876ba76b1b03208
|
File details
Details for the file wakewordlab-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 247.2 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfcd1f94a9a54f6924c4f060fc0ae58f6db8b1ab8f444f99f554bddbdaa62d7d
|
|
| MD5 |
dabc9a2203f8883fa87306d915af1ca1
|
|
| BLAKE2b-256 |
48db6066fcab3e7da5db6e82a25b5040597c1379c2eaeb5361d09ea1939954a7
|
File details
Details for the file wakewordlab-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 233.0 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3aa0d74cad08d983078767d73e41a948dba0c834cc1dd8ddb6972c96af363aa8
|
|
| MD5 |
d84d2d69c5abcfd52dd6a739e3f6ac37
|
|
| BLAKE2b-256 |
4cb5c51997f2e0d2a8c6e1b5c9bdb3e1584cf6867280386f60503141d0ac4421
|
File details
Details for the file wakewordlab-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 237.2 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89998966b9a23681e88c354aa48e422a60d8da5a3d252572e9b61d759a1e96db
|
|
| MD5 |
386760fdb06e4a558f83d8d5f84051b8
|
|
| BLAKE2b-256 |
419ecae2fa06d22f52f3088283ab14e9a9ffd3affa56c035ddc1b7c37bf70ec4
|
File details
Details for the file wakewordlab-0.1.1-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 238.5 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9aa71ae1a066fbbc2b5d30b27ce4697b45911b7378c3199c2835ca59df30c8f
|
|
| MD5 |
07df0fa5e9916568706a1c835f25e619
|
|
| BLAKE2b-256 |
7925fbeba490b542d343e6fdfb89ac385410b49e1afd1ee916fe24db11412e64
|
File details
Details for the file wakewordlab-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 248.0 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf7c9fef0c216f82dcb3eff383271185abc7d200d039d9d38cd9476a635d38d4
|
|
| MD5 |
3781987bcd40f515374e288acb4085b9
|
|
| BLAKE2b-256 |
cdfa244e141b23d833c2caba40bbe345c9bef7d0679aebb3baa0a745a8cdaadb
|
File details
Details for the file wakewordlab-0.1.1-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 233.6 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0d3fe12233b2060af69d2e8ae2f4a4ec13817ad4aa3c2959abe1a82ec79e72f
|
|
| MD5 |
7516f898844bfff701dd263ac3750aad
|
|
| BLAKE2b-256 |
e13d8b81fe5ac1daa21f09d5612e30a119a6d4bf99dc1dbff0b51fa1a7770f6c
|
File details
Details for the file wakewordlab-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 238.2 kB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfcb2265c82aae032dda825241230c62ec0ce3f1cd05d2301f5fe987c12c2a65
|
|
| MD5 |
c810aac9423fc4169dca6259d9f43d79
|
|
| BLAKE2b-256 |
09d060c67ee9870797da95fdc799f64ce46cc1028c89b54c3b0a43bab688438d
|
File details
Details for the file wakewordlab-0.1.1-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 238.8 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2705913069d99bf0d4198e758f6b563e51d3bdf8cac368101a4794c1445e1aa0
|
|
| MD5 |
3a3b610f53870fcb5d7a7a23f5d5994b
|
|
| BLAKE2b-256 |
4fe62784aeaec744af1bdea36fd2a971c25ef0e0bb102878b62f8d57b886288e
|
File details
Details for the file wakewordlab-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 248.3 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c450451c99a6cb58fb32da5311dbca0bb2d04a669bf7d220c7cec53ee0127188
|
|
| MD5 |
371f79c96258d6387d77eac1a982f815
|
|
| BLAKE2b-256 |
945b5614b4394edc129a8f7ac27732c0e1835f7c43de905f62b95168c5025f05
|
File details
Details for the file wakewordlab-0.1.1-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 233.9 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
534d0b6e1292ea0b774acd8b06652c311d870e922b0d22bea106b257f2ac98d8
|
|
| MD5 |
a1034cfee7582be6c26d9efd9dcee061
|
|
| BLAKE2b-256 |
2a226252b1e97b04832fc336728550ef9fd2b98164c9b89df4c7af6f941c7aa7
|
File details
Details for the file wakewordlab-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl.
File metadata
- Download URL: wakewordlab-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
- Upload date:
- Size: 238.4 kB
- Tags: CPython 3.9, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
480d7d04d9910b5da7c439ed86bde378f400c487c95b859ab3194bee1676bfff
|
|
| MD5 |
26a915eab55173e70c3049468dd2d83f
|
|
| BLAKE2b-256 |
866f468cca4492c713b00d5a1b1196c60d00400c61807d7da314351af7bbf2d0
|