Home Assistant
add-on that uses openWakeWord
(demo on huggingface) for wake word detection over the wyoming
protocol on NVIDIA Jetson devices. Thank you to @ms1design for contributing these Home Assistant & Wyoming containers!
- Works well with
home-assistant-core
container on Jetson devices as well as Home Assistant hosted on different hosts - Use custom wake word's, pass model name as
OPENWAKEWORD_PRELOAD_MODEL
to preload custom model. For example you can findjetson
(jets_un
) wake word model included in/share/openwakeword
models directory. - Supports
*.tflite
CPU
wake word models - Supports
*.onnx
CUDA
wake word models [WIP]
Requires Home Assistant
2023.9
or later.
If you want to use docker compose
to run Home Assistant Core Voice Assistant Pipeline on a Jetson device with cuda
enabled, you can find a full example docker-compose.yaml
here.
name: home-assistant-jetson
version: "3.9"
services:
homeassistant:
image: dustynv/homeassistant-core:latest-r36.2.0
restart: unless-stopped
init: false
privileged: true
network_mode: host
container_name: homeassistant
hostname: homeassistant
ports:
- "8123:8123"
volumes:
- ha-config:/config
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
openwakeword:
image: dustynv/wyoming-openwakeword:latest-r36.2.0
restart: unless-stopped
runtime: nvidia
network_mode: host
container_name: openwakeword
hostname: openwakeword
init: false
ports:
- "10400:10400/tcp"
volumes:
- ha-openwakeword-custom-models:/share/openwakeword
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
OPENWAKEWORD_CUSTOM_MODEL_DIR: /share/openwakeword
OPENWAKEWORD_PRELOAD_MODEL: ok_nabu
volumes:
ha-config:
ha-openwakeword-custom-models:
Variable | Type | Default | Description |
---|---|---|---|
OPENWAKEWORD_PORT |
str |
10400 |
Port number to use on host |
OPENWAKEWORD_THRESHOLD |
float |
0.5 |
Wake word model threshold (0.0 -1.0 ), where higher means fewer activations. |
OPENWAKEWORD_TRIGGER_LEVEL |
int |
1 |
Number of activations before a detection is registered. A higher trigger level means fewer detections. |
OPENWAKEWORD_PRELOAD_MODEL |
str |
ok_nabu |
Name or path of wake word model to pre-load. The name of the model should match with name used during custom wake word model training. When changing this, it's also recommended to set WAKEWORD_NAME variable with same value for wyoming-assist-microphone container |
OPENWAKEWORD_CUSTOM_MODEL_DIR |
str |
/share/openwakeword |
Path to directory containing custom wake word models. Skip the trailing slash (/ ) |
OPENWAKEWORD_DEBUG |
bool |
true |
Log DEBUG messages |
Read more how to configure wyoming-openwakeword
in the official documentation:
Note
You can find a custom trained, example jetson
(jets_un
) wake word model in the custom models directory (/share/openwakeword
). To use it, set WAKEWORD_NAME
to jets_un
in appropriate containers.
The Home Assistant Community has trained numerous wake word models, as detailed in this GitHub repository. However, these models are specifically designed for use with CPU
.
To train a new wake word model for CPU
(*.tflite
) or cuda
(*.onnx
), you can follow @dscripka documentation or just jump to the point and use wake word training environment.
- Build
openWakeWord
from source based ononnxruntime
gpu
enabled container (currentlyopenWakeWord
is still usingtflite
models insteadonnx
) - Custom Wake Word Models training container using automatic synthetic data creation
Got questions? You have several options to get them answered:
- The Home Assistant Discord Chat Server.
- The Home Assistant Community Forum.
- Join the Reddit subreddit in
/r/homeassistant
- In case you've found an bug in Home Assistant, please open an issue on our GitHub.
- The NVIDIA Jetson AI Lab tutorials section.
- The Jetson AI Lab - Home Assistant Integration thread on NVIDIA's Developers Forum.
- In case you've found an bug in
jetson-containers
, please open an issue on our GitHub.
Note
This project was created by Jetson AI Lab Research Group.