rhasspy/wyoming-satellite

Having a wyoming satelite for openwake word and MIC (arecord) and a seperate for playback (aplay).

belangerpascal opened this issue · 9 comments

I'm currently trying to figure out a way to use a wyoming satelite for MIC and openwake word process and a second wyoming satelite for playback.

I have a RPI5 acting as a display for home assistant and Mopidy which has a USB Mic on it but no sound output. The RPI5 is powerfull enough for openwake word process. I have a RPI3B connected to my sound system and it's running Mopidy for music streaming and I would like to use it for the playback portion for wyoming satelite. Those it make sense?

Thanks

Not sure if this would work but I'd try the following...

You could you use:
mic-external (Your pi5)
snd-external (Your pi3)

You would need wyoming-satellite on your pi5 (to handle a wakeword/stream the audio), but would you need it on the pi3? I think in the configuration of the pi5 you could specific the external snd URI to be pointed at your pi3 and you may be good to go.

If that fails you could run wyoming-satellite on both and omit the mic portion for the pi3, while omitting the snd portion for the pi5. (Not sure if that'll cause issues though)

As kcognata said:

RPi5:

  • openwakeword
  • wyoming-satellite. Replace --snd-command parameter by --snd-uri 'tcp://x.x.x.x:10601'
    (replace x by IP of the RPi3 and make sure the port is the same as when you launch RPi3)
    It will connect to HomeAssistant for processing intents and connect to the RPi3 to play the sound.

RPi3:

  • snd-external
    Launch with the standard parameters.

I'm trying to do something similar looking up the Sonos speakers associated with the area that the satellite is in. Using the satellite for MIC and openwakeword and Sonos for response. Would a similar approach work in that case? I'm guessing that the speaker lookup and snd-external would sit in Home Assistant pipeline?

I'm trying to do something similar looking up the Sonos speakers associated with the area that the satellite is in. Using the satellite for MIC and openwakeword and Sonos for response. Would a similar approach work in that case? I'm guessing that the speaker lookup and snd-external would sit in Home Assistant pipeline?

This solution won't work in such scenario.
The speaker connection is made by the satellite and it supports the wyoming protocol only, which Sonos doesn't support.

With the current official master branch, it can be done with some effort using the command line, some scripting and http calls. But there are downsides as timeout.

With my dev branch, this can be achieved more easily capturing the reply events in Home Assistant and redirecting them to the Sonos speaker.

I'm trying to do something similar looking up the Sonos speakers associated with the area that the satellite is in. Using the satellite for MIC and openwakeword and Sonos for response. Would a similar approach work in that case? I'm guessing that the speaker lookup and snd-external would sit in Home Assistant pipeline?

This solution won't work in such scenario. The speaker connection is made by the satellite and it supports the wyoming protocol only, which Sonos doesn't support.

With the current official master branch, it can be done with some effort using the command line, some scripting and http calls. But there are downsides as timeout.

With my dev branch, this can be achieved more easily capturing the reply events in Home Assistant and redirecting them to the Sonos speaker.

Thanks so much for the information. I have built a few satellites and doing my research exploring different solutions. I have speakers in every room of the house and thought it would be nice to use them. It's a pipe dream at this point and not a requirement. Thanks for the info!

I'm trying to do something similar looking up the Sonos speakers associated with the area that the satellite is in. Using the satellite for MIC and openwakeword and Sonos for response. Would a similar approach work in that case? I'm guessing that the speaker lookup and snd-external would sit in Home Assistant pipeline?

This solution won't work in such scenario. The speaker connection is made by the satellite and it supports the wyoming protocol only, which Sonos doesn't support.

With the current official master branch, it can be done with some effort using the command line, some scripting and http calls. But there are downsides as timeout.

With my dev branch, this can be achieved more easily capturing the reply events in Home Assistant and redirecting them to the Sonos speaker.

Ideally, someone should write an adapter that you could use with --snd-uri which would stream the audio to the Sonos device(s) specified and handle the downsides you mention.

Ideally, someone should write an adapter that you could use with --snd-uri which would stream the audio to the Sonos device(s) specified and handle the downsides you mention.

It's doable, but I believe it would be very inneficient... sending the same text / message back and forth...

Besides the solution I mentionned to capture the event in HA and trigger a TTS, there could be a parameter in satellite to indicate the output... some speaker directly or the satellite itself... yeah, I liked this idea. Will try to implement it. :)

Ideally, someone should write an adapter that you could use with --snd-uri which would stream the audio to the Sonos device(s) specified and handle the downsides you mention.

It's doable, but I believe it would be very inefficient... sending the same text / message back and forth...

Besides the solution I mentioned to capture the event in HA and trigger a TTS, there could be a parameter in satellite to indicate the output... some speaker directly or the satellite itself... yeah, I liked this idea. Will try to implement it. :)

That would be an elegant solution. I built a few Rpi Satellites and I really like how small they are and didn't want to attach a speaker to them. This helps me have a very small footprint device in the room and utilize the in-ceiling Sonos speakers that we had installed when we built the house. I have a challenge that my hubby says that 'we can benefit from technology, but I don't want to see it' in the house. We live in a very modern house and my challenge is always to incorporate the technology into the environment without it really being seen.

Here is the technical overview: https://tagmdl.com/f/technical-overview
The entire house building blog: www.tagmdl.com

I'm trying to do something similar looking up the Sonos speakers associated with the area that the satellite is in. Using the satellite for MIC and openwakeword and Sonos for response. Would a similar approach work in that case? I'm guessing that the speaker lookup and snd-external would sit in Home Assistant pipeline?

I'm looking for this exact same solution. I believe ESP32 s3 configurations have an output speaker config you can set. Would love it if these guys had the same thing.

For me, the setup I'm seeking is a replacement for Josh.ai hardware which has the microphones mounted to the ceiling and broadcasts sound to a respective speaker (like Sonos).