rhasspy / wyoming-satellite

Remote voice satellite using Wyoming protocol
MIT License
688 stars 102 forks source link

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

Open belangerpascal opened 9 months ago

belangerpascal commented 9 months ago

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

kcognata commented 9 months ago

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)

llluis commented 9 months ago

As kcognata said:

RPi5:

RPi3:

TGrounds commented 9 months ago

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?

llluis commented 9 months ago

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.

TGrounds commented 9 months ago

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!

edekeijzer commented 8 months ago

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.

llluis commented 8 months ago

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. :)

TGrounds commented 8 months ago

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

ThePragmaticArt commented 8 months ago

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).