tl;dr - does anyone have a working docker-compose for the new rhasspy/wyoming-satellite container?
To start, it’s all Docker over here. All the way down.
I was previously running the synesthesiam/homeassistant-satellite container ( built from git ) on Raspberry pi’s ( There’s a 3 and a 2 ) feeding to a centrally hosted wyoming-openwakeword instance on a beefier server. This had a lot of false positives, but generally worked. These both have the reSpeaker 4 mic pihat on them.
I’ve been trying to get the new rhasspy/wyoming-satellite container up and running for about a month now off and on with that same hardware stack. No luck at all.
I’ve tried:
- Started with build from github / master branch for all containers
- Using the same centralized openwakeword container and feeding to it. This container works with the old synesthesiam version of homeassistant-satellite
- Using on-Satellite based openwakeword containers and feeding to those
- Bumping both centralized and satellite based openwakeword containers to use openwakeword 1.8.2 ( which works fine with the synesthesiam version )
- exec-ing into the wyoming-mic-external container when it’s running to validate it’s recording ( it is, I can save this out to a mounted folder and listen to myself )
- adding alsa-utils into the rhasspy/wyoming-satellite container, doing an arecord out to a mounted folder and validating I can hear myself ( not really sure what I was testing here, I think I was throwing spaghetti )
- throwing a TON of debug statements in rhasspy/wyoming-satellite to see where it’s failing
- throwing the events being passed to wyoming-openwakeword into the logs too, they look like events w/ audio data attached.
- setting wyoming-openwakeword to show debug-probability
- setting wyoming-openwakeword to pipe to an output-dir
Here’s the docker-compose.yaml I’m using. You can see some of the various testing stuff in there commented out.
version: '3.8'
services:
playback:
container_name: wyoming-snd-external
build: https://github.com/rhasspy/wyoming-snd-external.git
image: wyoming-snd-external
restart: unless-stopped
ports:
- "10601:10601"
devices:
- /dev/snd:/dev/snd
group_add:
- audio
command:
- "--device"
- "plughw:CARD=Headphones"
- "--debug"
microphone:
container_name: wyoming-mic-external
build: https://github.com/rhasspy/wyoming-mic-external.git
image: wyoming-mic-external
restart: unless-stopped
ports:
- "10600:10600"
devices:
- /dev/snd:/dev/snd
group_add:
- audio
depends_on:
- satellite
command:
# - "--program"
# - "arecord -D plughw:CARD=seeed4micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t wav -d 5 ./out/test.wav"
- "--device"
- "plughw:CARD=seeed4micvoicec"
- "--debug"
# volumes:
# - ./mic/out:/app/out
openwakeword:
container_name: openwakeword
build: https://github.com/Graimalkin/wyoming-addons.git#maint--bump-version-of-openwakeword-being-used:openwakeword
# build: https://github.com/rhasspy/wyoming-addons.git#master:openwakeword
image: wyoming-openwakeword
restart: unless-stopped
ports:
- "10400:10400"
command:
- "--uri"
- "tcp://0.0.0.0:10400"
- "--debug"
- "--debug-probability"
- "--preload-model"
- "hey_jarvis"
- "--output-dir"
- "/app/out"
volumes:
- ./openwakeword/out:/app/out
satellite:
container_name: wyoming-satellite
build: https://github.com/graimalkin/wyoming-satellite.git#test--debugging-not-streaming-to-openwakeword
# build: https://github.com/rhasspy/wyoming-satellite.git
image: wyoming-satellite
hostname: office
restart: unless-stopped
ports:
- "10700:10700"
command:
# - "-h"
- "--name"
- "office"
- "--uri"
- "tcp://0.0.0.0:10700"
- "--mic-uri"
- "tcp://microphone:10600"
- "--snd-uri"
- "tcp://playback:10601"
- "--debug"
- "--awake-wav"
- "sounds/awake.wav"
- "--done-wav"
- "sounds/done.wav"
- "--wake-uri"
- "tcp://openwakeword:10400"
- "--wake-word-name"
- "hey_jarvis"
I’m getting this with the “debug” version of wyoming-satellite:
From what I can see, it looks like it’s streaming to the openwakeword container. However, openwakeword isn’t responding at all - I see it loading the model in logs, but nothing about detection. Also, there are no files being created in the ./openwakeword/out folder.
I really don’t want to go digging into the openwakeword container / docker traffic, so I’m hoping that someone out there has a working docker-compose for this.