wyoming, borg, grayjay, oh my
All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 9m54s
All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 9m54s
This commit is contained in:
119
active/systemd_wyoming/wyoming.md
Normal file
119
active/systemd_wyoming/wyoming.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# Wyoming Satellite
|
||||
|
||||
- [Wyoming Satellite](#wyoming-satellite)
|
||||
- [Install Wyoming](#install-wyoming)
|
||||
- [On-device wake word](#on-device-wake-word)
|
||||
- [Systemd](#systemd)
|
||||
- [Debugging](#debugging)
|
||||
- [Volume](#volume)
|
||||
- [Community Wake Words](#community-wake-words)
|
||||
- [Prompts](#prompts)
|
||||
- [Default](#default)
|
||||
- [Starship House](#starship-house)
|
||||
|
||||
## Install Wyoming
|
||||
|
||||
<https://github.com/rhasspy/wyoming-satellite>
|
||||
|
||||
Some notes:
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
# start wake word listener
|
||||
script/run --uri 'tcp://127.0.0.1:10400' --preload-model 'alexa'
|
||||
```
|
||||
|
||||
## Systemd
|
||||
|
||||
```bash
|
||||
# Make sure to enable login linger before installing
|
||||
sudo loginctl enable-linger ducoterra
|
||||
```
|
||||
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user