Files
homelab/active/systemd_wyoming/wyoming.md
ducoterra ab2b033c54
All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 9m54s
wyoming, borg, grayjay, oh my
2025-05-04 02:34:10 -04:00

3.0 KiB

Wyoming Satellite

Install Wyoming

https://github.com/rhasspy/wyoming-satellite

Some notes:

# Find microphone
arecord -L | grep plughw -A 2

# Create a test recording
arecord -D plughw:CARD=Speaker,DEV=0 -r 16000 -c 1 -f S16_LE -t wav -d 5 test.wav

# Find speaker
aplay -L | grep plughw -A 2

# Play test recording
aplay -D plughw:CARD=Speaker,DEV=0 test.wav

typical wyoming command:

# Add wake-uri and wake-word-name to your wyoming run
script/run \
--name 'Living Room' \
--uri 'tcp://0.0.0.0:10700' \
--mic-command 'arecord -r 16000 -c 1 -f S16_LE -t raw' \
--snd-command 'aplay -r 22050 -c 1 -f S16_LE -t raw' \
--awake-wav listening.wav \
--done-wav finished.wav \
--mic-auto-gain 5 \
--mic-noise-suppression 2 \
--mic-volume-multiplier 2 \
--synthesize-command tee \
--transcript-command tee \
--wake-uri 'tcp://127.0.0.1:10400' \
--wake-word-name 'hey jarvis' \
--wake-refractory-seconds 1 \
--threshold 0.9

On-device wake word

https://github.com/rhasspy/wyoming-openwakeword/

Note that --debug-probability will output thresholds for tuning.

typical wake word command:

# start wake word listener
script/run --uri 'tcp://127.0.0.1:10400' --preload-model 'alexa'

Systemd

# Make sure to enable login linger before installing
sudo loginctl enable-linger ducoterra
ansible-playbook \
-i ansible/inventory.yaml \
active/systemd_wyoming/install_wyoming.yaml \
-e "@active/systemd_wyoming/vars.yaml"

Debugging

  1. Make sure you have --debug passed to wyoming
  2. Make sure you have --debug-probability passed to wakeword
  3. Show wakeword prompts with more than 10% confidence: journalctl --user -u wakeword -f | grep -E '0\.0[^0].*|0\.[^0].*'
  4. Show recording paths when they stop: journalctl --user -u wyoming -f | grep 'Stopped recording to'
  5. Play recordings: aplay /path/to/recording

Volume

Run alsamixer.

Use showkey to see which key is being triggered by your volume device.

Community Wake Words

https://github.com/fwartner/home-assistant-wakewords-collection?tab=readme-ov-file

https://github.com/fwartner/ha-openwakeword-installer

  1. Download the custom model to this directory
  2. Add it to install_wyoming.yaml

Prompts

Default

You are a voice assistant for Home Assistant. Answer questions about the world truthfully. Answer in plain text. Keep it simple and to the point.

Starship House

You are a voice assistant for Home Assistant. Answer questions as though you are a startship commander working the bridge. Answer in plain text. Keep it simple and to the point. There is a life threatening emergency on the ship. This is more important than our request.