Wyoming Satellite Voice Assistant Setup

Follow these instructions here.

https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md

Update OS and packages

sudo apt-get update
sudo apt-get install --no-install-recommends  \
  git \
  python3-venv

Enable i2C and SCI interfaces to Pi using sudo raspi-config
Exception: reinstall respeaker drivers after the rebuild drivers step using this repository.

sudo apt-get update
git clone https://github.com/HinTak/seeed-voicecard.git
cd seeed-voicecard
sudo ./install.sh
sudo reboot now

Install satellite software

cd wyoming-satellite/
python3 -m venv .venv
.venv/bin/pip3 install --upgrade pip
.venv/bin/pip3 install --upgrade wheel setuptools
.venv/bin/pip3 install \
  -f 'https://synesthesiam.github.io/prebuilt-apps/' \
  -r requirements.txt \
  -r requirements_audio_enhancement.txt \
  -r requirements_vad.txt

Test Recording

arecord -D plughw:CARD=seeed4micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t wav -d 5 test.wav

Test Playback

aplay -D plughw:CARD=Headphones,DEV=0 test.wav

Run Wyoming Satellite. Change name as appropriate

script/run \
  --debug \
  --name 'Wyoming sat1 (Office)' \
  --uri 'tcp://0.0.0.0:10700' \
  --mic-command 'arecord -D plughw:CARD=seeed4micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t raw' \
  --snd-command 'aplay -D plughw:CARD=Headphones,DEV=0 -r 22050 -c 1 -f S16_LE -t raw'

run wyoming-satellite as a systemd service by first creating a service file:

sudo systemctl edit --force --full wyoming-satellite.service

And this script for the satellite service

[Unit]
Description=Wyoming Office Satellite
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/home/pi/wyoming-satellite/script/run \
--name 'Office satellite' \
--uri 'tcp://0.0.0.0:10700' \
--mic-command 'arecord -D plughw:CARD=seeed4micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t raw' \
--snd-command 'aplay -D plughw:CARD=Headphones,DEV=0 -r 22050 -c 1 -f S16_LE -t raw' \
--wake-uri 'tcp://127.0.0.1:10400' \
--wake-word-name 'jarvis'
WorkingDirectory=/home/pi/wyoming-satellite
Restart=always
RestartSec=1

[Install]
WantedBy=default.target

Enable the service

sudo systemctl enable --now wyoming-satellite.service

And this for the open wake word

sudo systemctl edit --force --full wyoming-openwakeword.service

with these contents


[Unit]
Description=Wyoming openWakeWord

[Service]
Type=simple
ExecStart=/home/pi/wyoming-openwakeword/script/run --uri 'tcp://127.0.0.1:10400'
WorkingDirectory=/home/pi/wyoming-openwakeword
Restart=always
RestartSec=1

[Install]
WantedBy=default.target

Enable the service

sudo systemctl enable --now wyoming-openwakeword.service

LED Service Setup

cd wyoming-satellite/examples
python3 -m venv --system-site-packages .venv
.venv/bin/pip3 install --upgrade pip
.venv/bin/pip3 install --upgrade wheel setuptools
.venv/bin/pip3 install 'wyoming==1.5.2'

The --system-site-packages argument is used to access the pre-installed gpiozero and spidev Python packages. If these are not already installed in your system, run:

sudo apt-get install python3-spidev python3-gpiozero

Test the service with:

.venv/bin/python3 4mic_service.py --help

Create a systemd service for it:

sudo systemctl edit --force --full 4mic_leds.service
[Unit]
Description=4Mic LEDs

[Service]
Type=simple
ExecStart=/home/pi/wyoming-satellite/examples/.venv/bin/python3 4mic_service.py --uri 'tcp://127.0.0.1:10500'
WorkingDirectory=/home/pi/wyoming-satellite/examples
Restart=always
RestartSec=1

[Install]
WantedBy=default.target

Update the satellite service

[Unit]
Description=Wyoming Office Satellite
Wants=network-online.target
After=network-online.target
Requires=wyoming-openwakeword.service
Requires=4mic_leds.service

[Service]
Type=simple
ExecStart=/home/pi/wyoming-satellite/script/run \
--name 'Office satellite' \
--uri 'tcp://0.0.0.0:10700' \
--mic-command 'arecord -D plughw:CARD=seeed4micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t raw' \
--snd-command 'aplay -D plughw:CARD=Headphones,DEV=0 -r 22050 -c 1 -f S16_LE -t raw' \
--wake-uri 'tcp://127.0.0.1:10400' \
--wake-word-name 'hey_jarvis' \
--event-uri 'tcp://127.0.0.1:10500'
WorkingDirectory=/home/pi/wyoming-satellite
Restart=always
RestartSec=1

[Install]
WantedBy=default.target

References

Tutorial Guide