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.

So, the wife took a temporary work transfer that prohibited me from continuing the project. That temporary duty is now over and I’m getting back to this. I’ve switched to Larynx with Harvard and I’m able to get it to manually speak by typing into the speak box. Home Assistant is recognizing the intent as well (I have it sending a notification to my phone and attempting to respond via audio). The notification is working, but the audio isn’t playing. I’ve been troubleshooting today.

1 Like