Server and satellite in one device with additional satellite

Greetings,

first I would like to thank you for this great project, the importance of having this as a FOS is outstanding to me, and maybe for countless others too, even if they don’t know yet.

I have built a master with a 4Gig Pi4 and a playstation eye, handling the commands directly via node-red. This one works fine so far. A ZeroW with Respeaker 2 Mic should work as a satellite to this . Both devices connect to a seperate Mosquitto on the Pi4. Both devices use Docker, but the satellite seams not to be heard by the master. Wakeword (Porcupine) reacts fine, the wav-data gets transferred via MQTT to the broker, but the master seems not to care about it. No Log-entries on the master, but mosquitto_sub -v -h localhost -p 1883 -t ‘#’ shows wav-data coming in. System is 2.5.5.

My question would be if the current architecture supports this setup with the master being a standalone solution with an additional satellite attached to it, and if maybe somebody knows what I might do wrong here. I tried to follow the tutorial for this, but this describes only recording via satellites, not with the master.

Master-Setup:
{
“dialogue”: {
“satellite_site_ids”: “bzerov”,
“system”: “rhasspy”
},
“intent”: {
“satellite_site_ids”: “bzerov”,
“system”: “fuzzywuzzy”
},
“microphone”: {
“arecord”: {
“device”: “default:CARD=CameraB409241”,
“siteId”: “bhome”,
“udp_audio_host”: “localhost”,
“udp_audio_port”: “1111”
},
“system”: “arecord”
},
“mqtt”: {
“enabled”: “true”,
“host”: “bhome”,
“site_id”: “bhome”
},
“sounds”: {
“aplay”: {
“device”: “default:CARD=Device”
},
“system”: “aplay”
},
“speech_to_text”: {
“satellite_site_ids”: “bzerov, bhome”,
“system”: “kaldi”
},
“text_to_speech”: {
“satellite_site_ids”: “bzerov”,
“system”: “picotts”
},
“wake”: {
“porcupine”: {
“keyword_path”: “bumblebee_raspberry-pi.ppn”,
“sensitivity”: “0.5”,
“udp_audio”: “localhost:1111”
},
“system”: “porcupine”
}
}

Satellite-Setup:

{
“dialogue”: {
“system”: “hermes”
},
“intent”: {
“system”: “hermes”
},
“microphone”: {
“arecord”: {
“device”: “default:CARD=seeed2micvoicec”,
“siteId”: “bzerov”,
“udp_audio_host”: “localhost”,
“udp_audio_port”: “11112”
},
“system”: “arecord”
},
“mqtt”: {
“enabled”: “true”,
“host”: “bhome”,
“site_id”: “bzerov”
},
“sounds”: {
“aplay”: {
“device”: “default:CARD=seeed2micvoicec”
},
“system”: “aplay”
},
“speech_to_text”: {
“system”: “hermes”
},
“text_to_speech”: {
“system”: “hermes”
},
“wake”: {
“porcupine”: {
“keyword_path”: “bumblebee_raspberry-pi.ppn”,
“udp_audio”: “localhost:11112”
},
“system”: “porcupine”
}
}

many thanks in advance

Just to clarify do you use a shared mqtt broker or not. Because you first that you are using seperate brokers which would not work for a satelite setup if you select ‘hermes’ for the services on you satelite. But from the config that you posted it seems like you are using the same mqtt broker for both which should work.
I am not at home at the moment otherwise i would take a look at my working configuration for my satelite setup which also consist of a pi0w with 2michat and a pi4 as master.
The example in the documentation says that the dialog managment should be set to disabled on the satelite. Could be worth trying out.

sorry for being unclear, separate broker meant for me not to use the builtin one. So one separate Mosquitto (docker) with both instances connecting to, also being used for nodered and other stuff. Tried of course the disabled dialog-management as this is part of the example, but still no cigar.
cheers

For the services on the master( like Speech to text and TTS, dialog management) you need to enter both the siteid of the master and the siteid of the satelite.

thanks, that’s good to know. Was not sure about the need for that. Still the master seems not to subscribe to the topic for the satellite or is not able to handle the messages. Will try to check directly in the mosquitto…

Hello,

I’m note sure but I may havet the same problem here with 2.5.5 (debian package).

The satellite detects the hotword, then I hear the “start” sound, but after that the “stop” sound is not on silence but at timeout (after 10 seconds). I also see the wav chunks flow through the MQTT server; and the master does not say nothing.

@breezah123, when you say wakeword react fine, do you mean it detects the end of your command ?

What is your configuration on the master?
What you described happened to me when i forgot to enter the satelite id in the speech to text section of the settings.

It is worth noticing that when I enter manually some text on the satellite and press “recognize”, I’ve got the correct answer from the master.

@moqart @breezah123

OK, I’ve got it. It is related with UDP streaming between audio recording and wake word detection.
When I remove it, everything works (but it floods the MQTT server :frowning: )

My error was on the satellite configuration. I did not add the satellite name on the “udp_audio” parameter from wake/porcupine : “127.0.0.1:54856:satellite

I dont see an obvious mistake. It took me over an hour to realise that i forgot to enter the satelit id for speech to text when i set my satelite up and that it was not a recording issue. Got the same results as you but your configuration seems fine.
Unfortunately i dont have access to my setup at the moment so i can not compare the settings to the settings of a working setup.

Exactly, it does not detect, so to be correct again, the wakeword does only work halfway.

I Indeed had the same misconfiguration like farfarde, presumably from an earlier entry. Alas correcting it does not change the behaviour. Still no recorded wav signal, nor log entries on the master. Removing the UDP-config leads to the constant stream, but also gives the same result. Thanks to both of you…

Maybe another point here: When I monitor with: mosquitto_sub -v -h localhost -p 1883 -t ‘hermes/#’, I even
see the ASR doing its work on the master, after the 10 second delay. It seems to get stuck after ASR.

hermes/asr/textCaptured {“text”: “schlafzimmer an”, “likelihood”: 1, “seconds”: 29.5284291220014, “siteId”: “bzerov”, “sessionId”: “bzerov-bumblebee_raspberry-pi-cb034407-d660-43e0-8af2-1cad2c22b5fe”, “wakewordId”: null, “asrTokens”: null, “lang”: null}

Another idea : double-check that you do not copy/paste values for satellites names from windows (notepad…) as the end of line invisible character is not the same one on Windows (CRLF) and linux (LF)

thanks, but I would never use a windows system unless I get paid for it :wink:

2 Likes

can’t quite put my finger on the problem here, but if the docker image on the master runs in foreground, I get:

[WARNING:2020-08-05 19:52:28,211] rhasspydialogue_hermes: Ignoring unknown session bzerov-bumblebee_raspberry-pi-a7585016-c403-464b-ad78-82b815a89940

but after that:

rhasspyasr_kaldi_hermes: Stopping listening (session_id=bzerov-bumblebee_raspberry-pi-a7585016-c403-464b-ad78-82b815a89940)

Any update on this issue? … similar behavior to mine reported below. I have abandoned satellite / master setup for the moment and playing around with a single device … but would like to get my satellites running at some point.

other thread

Several weeks later, I simply lowered the microphone level on the zero, and it turned out to work, alas I need to be quite near the device now. Not sure if this comes simply from that setting…