Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wakewordlab-0.1.1.tar.gz (165.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

wakewordlab-0.1.1-cp312-cp312-win_amd64.whl (238.9 kB view details)

Uploaded CPython 3.12Windows x86-64

wakewordlab-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (248.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

wakewordlab-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (233.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

wakewordlab-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl (238.8 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

wakewordlab-0.1.1-cp311-cp311-win_amd64.whl (238.7 kB view details)

Uploaded CPython 3.11Windows x86-64

wakewordlab-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (247.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

wakewordlab-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (233.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

wakewordlab-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl (237.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

wakewordlab-0.1.1-cp310-cp310-win_amd64.whl (238.5 kB view details)

Uploaded CPython 3.10Windows x86-64

wakewordlab-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (248.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

wakewordlab-0.1.1-cp310-cp310-macosx_11_0_arm64.whl (233.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

wakewordlab-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl (238.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

wakewordlab-0.1.1-cp39-cp39-win_amd64.whl (238.8 kB view details)

Uploaded CPython 3.9Windows x86-64

wakewordlab-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (248.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

wakewordlab-0.1.1-cp39-cp39-macosx_11_0_arm64.whl (233.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

wakewordlab-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl (238.4 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

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

Hashes for wakewordlab-0.1.1.tar.gz
Algorithm Hash digest
SHA256 faeb46ba3078c2ceb6d58b3005f88b2d67fdf1a448b39243451f02eff8859e7f
MD5 394c2f99a91a44c5ffb6870c4689b399
BLAKE2b-256 3001fe2bf6e9895ae1de06ad24398d9e8c241ac08d1b7e7a48edfdc3616f27cf

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3e51980eaa1172fe5556b796911b96398e49b83ad482cadf986b6ad99c98a18e
MD5 637f003ebd16d92a065a6fa362c4f963
BLAKE2b-256 1415c940ed35686d35468d2a96a2ec2187d62fbf2ebcb3957e668a6356383f49

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e5b475decdee6a3d9a3a178a6f44465ae89afedb497f32c8cf90cef9d66d1dd0
MD5 d3dacab0ae13ea4aa560bd4b3e20c5ab
BLAKE2b-256 cf78da360e5c1960ca2139d82f0e5a58af555fa443e4f375985f764e8f63d3df

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1715fcf23937918d185f51b1bf8d6ec0f59a3d77d5ea5aaf5b680c318f13bf12
MD5 b1cc196fdaf39003959fd22d5d7c3fb7
BLAKE2b-256 fed81241e62eb6e33e3fb0d851ead6c40a56ad7acd15da10edd13e5772e3c88b

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 49b4dabfd6b43cdeb042ddf622bc964bd8b3bca5b8e09a1a7f40f99a3fe576f1
MD5 b39e4091ebe5f27f88eaf5783d1a63dd
BLAKE2b-256 d61f5bb1cf7775d56bb587dbc06236f8b6ac85aec1482573ac98791a4933aca1

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4ce47fe7551b411ab7e3f0993ea57f63811341c1f5effbf56c933c523221b12e
MD5 92cf1cc2fc718b28c0973b1a0153fb08
BLAKE2b-256 24dfb28d4f360a84ec8cb3506a52ee28b75cdce3302ca8db0876ba76b1b03208

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bfcd1f94a9a54f6924c4f060fc0ae58f6db8b1ab8f444f99f554bddbdaa62d7d
MD5 dabc9a2203f8883fa87306d915af1ca1
BLAKE2b-256 48db6066fcab3e7da5db6e82a25b5040597c1379c2eaeb5361d09ea1939954a7

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3aa0d74cad08d983078767d73e41a948dba0c834cc1dd8ddb6972c96af363aa8
MD5 d84d2d69c5abcfd52dd6a739e3f6ac37
BLAKE2b-256 4cb5c51997f2e0d2a8c6e1b5c9bdb3e1584cf6867280386f60503141d0ac4421

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 89998966b9a23681e88c354aa48e422a60d8da5a3d252572e9b61d759a1e96db
MD5 386760fdb06e4a558f83d8d5f84051b8
BLAKE2b-256 419ecae2fa06d22f52f3088283ab14e9a9ffd3affa56c035ddc1b7c37bf70ec4

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b9aa71ae1a066fbbc2b5d30b27ce4697b45911b7378c3199c2835ca59df30c8f
MD5 07df0fa5e9916568706a1c835f25e619
BLAKE2b-256 7925fbeba490b542d343e6fdfb89ac385410b49e1afd1ee916fe24db11412e64

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf7c9fef0c216f82dcb3eff383271185abc7d200d039d9d38cd9476a635d38d4
MD5 3781987bcd40f515374e288acb4085b9
BLAKE2b-256 cdfa244e141b23d833c2caba40bbe345c9bef7d0679aebb3baa0a745a8cdaadb

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c0d3fe12233b2060af69d2e8ae2f4a4ec13817ad4aa3c2959abe1a82ec79e72f
MD5 7516f898844bfff701dd263ac3750aad
BLAKE2b-256 e13d8b81fe5ac1daa21f09d5612e30a119a6d4bf99dc1dbff0b51fa1a7770f6c

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bfcb2265c82aae032dda825241230c62ec0ce3f1cd05d2301f5fe987c12c2a65
MD5 c810aac9423fc4169dca6259d9f43d79
BLAKE2b-256 09d060c67ee9870797da95fdc799f64ce46cc1028c89b54c3b0a43bab688438d

See more details on using hashes here.

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

Hashes for wakewordlab-0.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2705913069d99bf0d4198e758f6b563e51d3bdf8cac368101a4794c1445e1aa0
MD5 3a3b610f53870fcb5d7a7a23f5d5994b
BLAKE2b-256 4fe62784aeaec744af1bdea36fd2a971c25ef0e0bb102878b62f8d57b886288e

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c450451c99a6cb58fb32da5311dbca0bb2d04a669bf7d220c7cec53ee0127188
MD5 371f79c96258d6387d77eac1a982f815
BLAKE2b-256 945b5614b4394edc129a8f7ac27732c0e1835f7c43de905f62b95168c5025f05

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 534d0b6e1292ea0b774acd8b06652c311d870e922b0d22bea106b257f2ac98d8
MD5 a1034cfee7582be6c26d9efd9dcee061
BLAKE2b-256 2a226252b1e97b04832fc336728550ef9fd2b98164c9b89df4c7af6f941c7aa7

See more details on using hashes here.

File details

Details for the file wakewordlab-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for wakewordlab-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 480d7d04d9910b5da7c439ed86bde378f400c487c95b859ab3194bee1676bfff
MD5 26a915eab55173e70c3049468dd2d83f
BLAKE2b-256 866f468cca4492c713b00d5a1b1196c60d00400c61807d7da314351af7bbf2d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page