Unable to get satellite audio working

I can hear the wake word recognition sounds (prompt, success, and failure), but I can’t get any other sound out of the satellite. I have Home Assistant with the add-on as the server and a Pi with the AIY audio kit as the satellite. Whenever I attempt to test on the satellite, I get an AudioServerException. Looking at the logs, I can see traffic going between the two. The satellite ID is cocina. I do know that the Wake Word and microphone are working correctly. Not only am I able to get the wake word sounds, I see the intent recognition working. It’s just any output that I seem to be having issues with. Any ideas on resolving this?

Satellite Log:
[ERROR:2023-01-06 12:24:37,927] rhasspyserver_hermes:
Traceback (most recent call last):
File “/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/quart/app.py”, line 1821, in full_dispatch_request
result = await self.dispatch_request(request_context)
File “/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/quart/app.py”, line 1869, in dispatch_request
return await handler(**request_.view_args)
File “/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/main.py”, line 1699, in api_text_to_speech
results = await asyncio.gather(*aws)
File “/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/main.py”, line 1685, in speak
say_chars_per_second=say_chars_per_second,
File “/usr/lib/rhasspy/rhasspy-server-hermes/rhasspyserver_hermes/init.py”, line 632, in speak_sentence
raise AudioServerException(play_response.error)
rhasspyserver_hermes.AudioServerException
[ERROR:2023-01-06 12:24:37,925] rhasspyserver_hermes: AudioPlayError(error=‘’, site_id=‘cocina’, context=‘2371b985-435e-4462-8c61-f26ce99fa44b’, session_id=‘2371b985-435e-4462-8c61-f26ce99fa44b’)
[DEBUG:2023-01-06 12:24:37,920] rhasspyserver_hermes: Handling TtsSayFinished (topic=hermes/tts/sayFinished, id=3b138f24-f26a-42c8-bd71-199770cae0b1)
[DEBUG:2023-01-06 12:24:37,917] rhasspyserver_hermes: Handling AudioPlayError (topic=hermes/error/audioServer/play, id=3b138f24-f26a-42c8-bd71-199770cae0b1)
[DEBUG:2023-01-06 12:24:37,865] rhasspyserver_hermes: Handling AudioPlayBytes (topic=hermes/audioServer/cocina/playBytes/2371b985-435e-4462-8c61-f26ce99fa44b, id=3b138f24-f26a-42c8-bd71-199770cae0b1)
[DEBUG:2023-01-06 12:24:36,600] rhasspyserver_hermes: Publishing 131 bytes(s) to hermes/tts/say
[DEBUG:2023-01-06 12:24:36,599] rhasspyserver_hermes: → TtsSay(text=‘testing’, site_id=‘cocina’, lang=None, id=‘2371b985-435e-4462-8c61-f26ce99fa44b’, session_id=‘’, volume=1.0)
[DEBUG:2023-01-06 12:24:36,597] rhasspyserver_hermes: Subscribed to hermes/error/audioServer/play
[DEBUG:2023-01-06 12:24:36,595] rhasspyserver_hermes: Subscribed to hermes/audioServer/cocina/playBytes/#
[DEBUG:2023-01-06 12:24:36,593] rhasspyserver_hermes: Subscribed to hermes/error/tts
[DEBUG:2023-01-06 12:24:36,591] rhasspyserver_hermes: Subscribed to hermes/tts/sayFinished
[DEBUG:2023-01-06 12:24:36,589] rhasspyserver_hermes: TTS timeout will be 30 second(s)

Satellite config:
{
“dialogue”: {
“system”: “rhasspy”
},
“handle”: {
“remote”: {
“url”: “HA URL:12101/endpoint”
},
“system”: “remote”
},
“intent”: {
“remote”: {
“url”: “HA URL:12101//api/text-to-intent”
},
“system”: “remote”
},
“microphone”: {
“arecord”: {
“device”: “default:CARD=sndrpigooglevoi”
},
“system”: “arecord”
},
“mqtt”: {
“site_id”: “cocina”
},
“sounds”: {
“aplay”: {
“device”: “default:CARD=sndrpigooglevoi”,
“volume”: “1”
},
“system”: “aplay”
},
“speech_to_text”: {
“remote”: {
“url”: “HA URL:12101//api/speech-to-text”
},
“system”: “remote”
},
“text_to_speech”: {
“remote”: {
“url”: “HA URL:12101//api/text-to-speech”
},
“system”: “remote”
},
“wake”: {
“porcupine”: {
“keyword_path”: “computer_raspberry-pi.ppn”
},
“system”: “porcupine”
}
}

Master config (redacted):
{
“handle”: {
“satellite_site_ids”: “cocina”,
“system”: “hass”
},
“home_assistant”: {
“access_token”: “HA access_token”,
“url”: “HA URL”
},
“intent”: {
“satellite_site_ids”: “cocina”,
“system”: “fsticuffs”
},
“mqtt”: {
“site_id”: “master”
},
“sounds”: {
“remote”: {
“url”: “satelliteURL:12101/api/play-wav”
}
},
“speech_to_text”: {
“satellite_site_ids”: “cocina”,
“system”: “kaldi”
},
“text_to_speech”: {
“espeak”: {
“voice”: “en-us”
},
“satellite_site_ids”: “cocina,”,
“system”: “espeak”
}
}

TL;DR : I don’t have a solution for you, but found odd results from espeak in my own testing.

If you can hear the wakeword beeps, then the audio input and audio output are working, yes ? first major problem passed :slight_smile: Also the wake word was detected.

Next step is to recognise the words in the voice command, i.e. Speech Recognition.
Your satellite “speech-to-text” appears to be calling the remote URL correctly, so look at the server…
And your server has the same configuration for kaldi (with all default settings) in speech-to-text as my server.
So nothing obvious there :frowning:

Is this by typing text into the text box then clicking the [Recognise] button; or after you have spoken a command ?

The log you have supplied seems to be after typing the word “testing” then click the [Speak] button - invoking the Text-to-speech function - and on my satellite gives a log with

[DEBUG:2023-01-07 09:03:29,599] rhasspyserver_hermes: Handling TtsSayFinished (topic=hermes/tts/sayFinished, id=73293b5f-5ae2-41a5-b89b-8b39a49453c1)
[DEBUG:2023-01-07 09:03:28,643] rhasspyserver_hermes: Handling AudioPlayBytes (topic=hermes/audioServer/sat-3B/playBytes/aa11e34f-bf1d-4f02-b3b9-05595def4d5b, id=73293b5f-5ae2-41a5-b89b-8b39a49453c1)
[DEBUG:2023-01-07 09:03:24,443] rhasspyserver_hermes: Publishing 131 bytes(s) to hermes/tts/say
[DEBUG:2023-01-07 09:03:24,441] rhasspyserver_hermes: -> TtsSay(text='testing', site_id='sat-3B', lang=None, id='aa11e34f-bf1d-4f02-b3b9-05595def4d5b', session_id='', volume=1.0)
[DEBUG:2023-01-07 09:03:24,436] rhasspyserver_hermes: Subscribed to hermes/error/audioServer/play
[DEBUG:2023-01-07 09:03:24,434] rhasspyserver_hermes: Subscribed to hermes/audioServer/sat-3B/playBytes/#
[DEBUG:2023-01-07 09:03:24,433] rhasspyserver_hermes: Subscribed to hermes/error/tts
[DEBUG:2023-01-07 09:03:24,431] rhasspyserver_hermes: Subscribed to hermes/tts/sayFinished
[DEBUG:2023-01-07 09:03:24,429] rhasspyserver_hermes: TTS timeout will be 30 second(s)

For text_to_speech on your server I see you are using espeak with en-us voice and otherwise default settings. Curiously when I tried espeak on one of my satellites with only default setting I got no sound. I selected a couple of voices and got error messages about files not found. I manually set “en-us” as in your profile, and got both an error message

rhasspyserver_hermes: TtsError(error='No voice named en-us', site_id='sat-3B', context='afcf76c5-6304-4a0a-bb67-12469e1d1ee0', session_id='')

and yet a robotic voice ! go figure !

I find that “harvard” voice works for me, but changing back to default I now get harvard speaking my test message immediately followed by the robot saying the same thing ! My profile now shows:

    "text_to_speech": {
        "espeak": {
            "voice": ""
        },
        "system": "espeak"
    },

… and I guess that’s why I chose not to use espeak for my own system.

But that doesn’t explain the error message you are getting

Sorry, but I have reached the end of my expertise here :frowning:

I’m not married to espeak, so I’m open to trying something else. Yeah, it’s weird that the wakeword beeps work, but then I get AudioServerException errors for everything else. Intent recognition is working both if I speak commands as well as if I manually type commands. I’ve not had much time to troubleshoot this week or last, but I’m hoping to figure out the solution this weekend.