#Hey hopefully a docker-wizard can help
1 messages · Page 1 of 1 (latest)
hostis the DNS name or local IP where Piper etc can be foundportis the port that Piper or Whisper runs on- Have you looked in the pinned messages for the example compose file?
- Docker desktop is nerfed, but as long as you don't need
hostnetworking that'll work (and you don't need it for the Wyoming stuff) - Wyoming is the protocol that Piper and Whisper (and other things) speak
Here's my wyoming integration page
Ah that's brilliant, I'll have another crack in a bit and document if I run into any pain points in getting setup.
@golden forge
So quick update:
I've grabbed these two docket images,
docker pull rhasspy/wyoming-whisper
docker pull rhasspy/wyoming-piper
ran with these two commands, they appear running in my docker desktop UI
docker run -it -p 10300:10300 -v C:\Users<username>\Documents\DockerData:/data rhasspy/wyoming-whisper --model tiny-int8 --language en
docker run -it -p 10200:10200 -v C:\Users<username>\Documents\DockerData:/data rhasspy/wyoming-piper --voice en_US-lessac-medium
all good so far...
I open HA, navigate to Devices & Services -> Add Integration -> Piper -> enter my machine details running docker... and it just spins infinitely
host: local ip of the machine (192.168.0.10), port 10200 for piper and 10300 for whisper, both just spin in the UI after I hit 'add'
this is just a very simple network setup, both devices on a home router with direct visbility to one another
maybe there's a way I can test the two docket images are exposed correctly? debug a firewall or port issue?
Good news! I have a near-identical setup, just on Linux, so I can help you figure out your issue.
You want to open a command line on your docker host server (in this case sounds like it's Windows?)
Step 1, check that they're running properly, and that the ports are configured correctly.
docker ps should give you something like this: https://scr.wzd.li/scr/2024-03-21_14-49-28.png
Then, using the names that appear on the very right edge of the list, you want to run
docker logs <name>
I've named my containers, but in your case it might be something like my music assistant one, which is docker logs determined_hellman
You can also use the container ID instead of the name.
ah awesome! yes I did try that and it looked..correct.. to me.. I guess.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1f453bbea4c5 rhasspy/wyoming-piper "bash /run.sh --voic…" About an hour ago Up 6 seconds 0.0.0.0:10200->10200/tcp elated_almeida
b9545b7c35bb rhasspy/wyoming-whisper "bash /run.sh --mode…" About an hour ago Up 3 seconds 0.0.0.0:10300->10300/tcp stoic_driscoll
to my eye that's forwarding correctly to my host machine
and the logs seem happy:
INFO:wyoming_piper.download:Downloaded /data/en_US-lessac-medium.onnx (https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx)
INFO:wyoming_piper.download:Downloaded /data/en_US-lessac-medium.onnx.json (https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx.json)
INFO:main:Ready
INFO:main:Ready
Ideally you should see:
> docker logs whisper
INFO:__main__:Ready
> docker logs piper
INFO:__main__:Ready
Which does match.
INFO:wyoming_piper.download:Downloaded /data/en_US-lessac-medium.onnx (https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx)
INFO:wyoming_piper.download:Downloaded /data/en_US-lessac-medium.onnx.json (https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx.json)
INFO:main:Ready
INFO:main:Ready
PS C:\Users\matts> docker logs stoic_driscoll
config.json: 100%|█████████████████████████████████████████████████████████████████| 2.02k/2.02k [00:00<00:00, 1.11MB/s]
vocabulary.txt: 100%|████████████████████████████████████████████████████████████████| 460k/460k [00:00<00:00, 3.09MB/s]
model.bin: 100%|███████████████████████████████████████████████████████████████████| 42.1M/42.1M [00:00<00:00, 52.0MB/s]
tokenizer.json: 100%|██████████████████████████████████████████████████████████████| 2.48M/2.48M [00:00<00:00, 7.43MB/s]
INFO:main:Ready
docker run -it -p 10200:10200 -v C:\Users<>\Documents\DockerData:/data rhasspy/wyoming-piper --voice en_US-lessac-medium
INFO:main:Ready
INFO:main:Ready
now wait a little, and then run docker ps again to ensure they're not randomly shutting down. See how in your example the status is only "Up x seconds"
oh I gave them a restart to make sure there was no funny business
If they're stable, then in your luckiest situation they'll actually automatically show up in HA as discovered, and you can just add them with one click.
If they don't show up, I'd start by ensuring the firewall on the NUC have the ports opened, as Windows Firewall can be a bit strict.
I did try just disabling windows firewall as a precaution, making sure no VPN stuff was running. maybe I should give that another shake
Once you have the relevant Firewall ports open, check HA again, and if it's still not there automatically, then you can try adding them manually as you did before. If the services are detected, it'll be instant. If there's something blocking it, or they're not correctly exposed, it'll sit there a while and we'll have to try some more things.
I wish there was a test url + package I could send to the localhost:10200 to confirm the way is clear
Does a standard ping work between the two machines?
As a note, you specifically want to select "Wyoming Protocol" in the HA Integrations list, not Piper or Whisper.
AH HA! victory!
so I realised when you asked about ping, I had pinged extensively from host to HA, but not the reverse!
pinging the reverse wa failing, poppig open windows firewall and again just shutting everything down, the ping worked. then so did the add-device! so it was windows firewall getting in the way
I'll have to make sure I poke some holes in there for HA to use
That tracks. For a normal user environment, that's very good for a firewall. For a server, it can add some challenges.
Luckily in this case you only have to poke 1 hole per service, and those holes will go straight to Docker containers
I'm so used to hosting game servers that just punch through automatically, I forgot to check it. thanks for your help! you're a star!
No worries! 🙂
it'll just be TCP right? I assume Wyoming isn't doing UDP comms