Rhasspy 2.5 server client

I’m running server client installation with internal mqtt on both.
should the intent handling (with home assistant) made by the server or by the client?
and the dialogue management? I’m not sure exactly what’s the role of it…

First of all, you should only use one mqtt server if you want them to communicate. I would suggest running that on the server. Intent handling should also happen on the server.

Server client setups are normally done so there is no need to do everything on every client so the server handles everything and the client only sends audio to the server. There might be some cases where the client does some things, like transcribing the audio but the general setup would be the client sending audio to the server, the server doing everything and then sending a response to the client that is then read by the client.

I haven’t read much about dialogue management but my guess would be on the server.

Since you seem a bit confused by what goes where, do you actually need a server client setup for something (like having multiple clients in different rooms) or would a client/server combination where the client is the server do? Those are a bit easier to get started with imo because there is no sending stuff between different devices involved.

I need server client because I’m going to have multiple clients and I want to manage sentences and slots only on the server.

the thing you said about the mqtt - i use internal for both server and client - isn’t that right?

If you use the internal mqtt on the server then that starts a mqtt server on the server -> sounds good
If you use the internal mqtt on the client it starts a mqtt server on the client -> that does not sound good

The client should connect to the mqtt server of the server, otherwise the client will send all messages to its own mqtt server and they will never reach the server at all. You should configure an external mqtt server on the client and point it to your server.

I understand.
So what is the user and password for the internal mqtt on the server?

I followed this tutorial which says i need to set internal for both server and client.
I’m a bit confused right now…

Satellite Settings
On your satellite, set MQTT to “External” and configure the details of your broker. Set the speech to
text, intent recognition, and (optionally) the text to speech services to “Hermes MQTT”. Make sure to > disable “Dialogue Management”, and enable audio recording, wake word, and audio playing.

There are two tutorials on that site, one for a shared mqtt server which connects them together via mqtt and one using http to communicate. I did not know of the existence of the 2nd option, so I went with what I knew about which is a shared mqtt server.

+1 for the external MQTT method for a master/satellite setup. It’s working great for me.

My intent handling happens on the satellites (I plugged my Home Assistant details into each one). If it’s supposed to happen on the server, then maybe I don’t have something configured right. But it seems to work well when handled by the satellites!

You can handle intents on the satellites, it just is more work doing so and the server is normally more powerful. It also means that you have to configure intents on all satellites instead of doing so once on the server.

Indeed. I’d certainly like to handle the intents on the server, but if I disable intent handling on the satellites and enable it on the server, nothing seems to be sent to Home Assistant.

If you’re talking about intent recognition, then yes, the server does that pretty well in my case. It’s just the handling that still has to be done on my satellites - the actual sending of events or intents to Home Assistant.

Can you share your configuration on both server and satellite?
For some reason when i ask for the time i get the response 4 time!
I also can’t seem to see the siteId sent in the intent json

Can you share your configuration on both server and satellite?

  • For some reason when i say the wake wordf I hear the beep twice and the tts twice as well!
  • how hass.io knows to which satellite it should send the tts respond?
  • I can’t seem to see the siteId of the satellite sent in the intent json

I followed the exact instructions at the Getting Started Guide for an external MQTT broker. On my satellites I use arecord for recording, Snowboy for wake word, and aplay for playback. Speech to text, intent recognition, and text to speech are all set as Hermes MQTT. On the server, I have speech to text set to Kaldi, intent recognition as Fuzzywuzzy, and text to speech as PicoTTS. Make sure you name each satellite differently and then include those siteId’s as comma separated in the text fields for each of those server entries.

I actually don’t use Rhasspy for text to speech as I already have something else in place for that through Home Assistant. So I can’t answer your last two questions.

Hope that helps!

How do you do the tts part on ha and pass it to the satellite?

Each of the Pi Zero satellites I have around my house are running Snapcast, so my automations in HA just play TTS feedback on all of them. I have motion sensors around the house and mute/unmute each one based on my current location in the house. So Rhasspy is not doing any of the TTS at this point.

Interesting, I assume you use docker? Because Hermes MQTT does not seem to work from satellite to server at all (it works the other way around for playing sounds) if you use the python virtual env, see this post: Rhasspy 2.5: sattelite can not remotely detect wakeword

Yes, I use docker. And I don’t use Hermes MQTT for audio.

any idea why i keep hearing everything twice?
when i test it with text in the ui in happens only once.
when doing it with voice it happens twice.

and how to pass satellite siteID to hass?

and what are the pros and cons for events vs intents

If you are using snips: in your HA configuration.yaml file, I’ve found you don’t need to set up intent handling with Rhasspy. The Snips component in HA listens to all of the Hermes MQTT topics and responds to intents (not events) appropriately.

I don’t know why you are beeping or getting the TTS twice.

Try disabling/turning off Home Assistant to see if you still get that behavior when you wake Rhasspy.

Beyond that, I’m not sure what your problem is.