hermes-agent/tools/wakewords
Brooklyn Nicholson 8ff79323d8 feat(voice): on-device wake-word detector with a bundled "hey hermes" model
tools/wake_word.py is a shared, engine-pluggable detector (openWakeWord
default, free/local; Porcupine premium) over the existing 16 kHz sounddevice
capture. A background daemon thread with pause()/resume() yields the mic during
a voice turn, and reset() on every (re)start keeps a resume from re-firing on
stale audio. Ships a bundled "hey hermes" openWakeWord model (tools/wakewords/,
Apache-2.0) as the default; a built-in name or a custom .onnx/.tflite path still
works. download_models() runs for any model so a fresh install fetches the
shared feature models instead of crashing on a missing melspectrogram.onnx.

The wake deps lazy-install on first use, or via the [wake] extra. Packaging
ships the bundled model in both wheel and sdist, guarded by a metadata test.
2026-07-23 02:06:27 -05:00
..
hey_hermes.onnx feat(voice): on-device wake-word detector with a bundled "hey hermes" model 2026-07-23 02:06:27 -05:00
hey_hermes.tflite feat(voice): on-device wake-word detector with a bundled "hey hermes" model 2026-07-23 02:06:27 -05:00
README.md feat(voice): on-device wake-word detector with a bundled "hey hermes" model 2026-07-23 02:06:27 -05:00

Bundled wake-word models

hey_hermes.onnx / hey_hermes.tflite — the on-device "Hey Hermes" hotword model. This is the default detector for the wake word feature (see website/docs/user-guide/features/wake-word.md); no training or setup is required to say "hey hermes".

  • Engine: openWakeWord (Apache-2.0).
  • Provenance: trained with the openWakeWord training pipeline (synthetic TTS-generated speech), which produces both the .onnx and .tflite artifacts. Redistribution is permitted under the openWakeWord license.
  • Label: the model registers as hey_hermes (matches the filename).
  • Runtime: openWakeWord's shared feature-extraction models (melspectrogram + embedding) are NOT bundled here — they are fetched once on first use by tools/wake_word.py via openwakeword.utils.download_models().

To use a different phrase, train your own model and point wake_word.openwakeword.model at its path, or set a built-in openWakeWord name (hey_jarvis, alexa, hey_mycroft, …). See the wake-word docs for the training guide.