Newbie: Text to speech Config

Hi all,
I’m new to rhasspy and start with a lot of problems. At first I try to use text to speech.
The hardware is a ESPAudiokit. When I config the t2s with nanotts and languge de-DE I got no output. The MQTT-Explorere show me that the siteID is default insteat of the siteID I input in the config. In the profile.json file is written this:

“text_to_speech”: {
“satellite_site_ids”: “ESPAudiokitFlur”,
“system”: “nanotts”
},

When I changed the siteID of Rhasspy from default to ESPAudiokitFlur I can hear the text spoken. What is goig wrong?

Greetings Roman

Maybe I will explain it a little bit clearer. I reinstalled rhasspy with docker :
docker run -d -p 12101:12101 -p 12183:12183
–name rhasspy
–restart unless-stopped
-v “$HOME/.config/rhasspy/profiles:/profiles”
-v “/etc/localtime:/etc/localtime:ro”
–device /dev/snd:/dev/snd
rhasspy/rhasspy
–user-profiles /profiles
–profile de
The rhasspy siteID is default and the MQTT Satellite siteID is ESPAudiokitFlur.
How should I config rhasspy to work with my satellite. Here my profile.json:
{
“dialogue”: {
“satellite_site_ids”: “ESPAudiokitFlur”,
“system”: “rhasspy”
},
“intent”: {
“system”: “hermes”
},
“microphone”: {
“system”: “hermes”
},
“sounds”: {
“system”: “hermes”
},
“speech_to_text”: {
“system”: “hermes”
},
“text_to_speech”: {
“satellite_site_ids”: “ESPAudiokitFlur”,
“system”: “hermes”
},
“wake”: {
“system”: “hermes”
}
}
Any help is welcome.

If you do the speech from the webUI, your TTS will go to your server and not the sat.
I am assuming you use the esp32 audio streamer software in the ESPAudiokit.
That is why it works when you set the siteID to the default.

For the ESP satellites to work, you need to set Rhasspy to external MQTT broker with username and password (the MQTT addon of Home Assistant for instance) and then connect the satellite to that same broker.

Maybe this will help you a bit as well: Home · rhasspy/rhasspy Wiki · GitHub

Yes, you are right. I use the esp32 audio streamer software in the ESPAudiokit.

So I understand the using of siteId like this:

RHASSPY MQTT internal:
Rhasspy siteID = ESPAudiokit siteID

RHASSPY MQTT external (maybe FHEM MQTT Broker):
Rhasspy siteID != ESPAudiokit siteID could be different, also if I use more than one ESPAudiokits. Is this right.

Greetings Roman

Nope. You cán use internal, but then Rhasspy should act a a broker. Still the server siteId must be different then the satellite siteId.
But if you do anything in the webUI like the speeach button for example, this will be for the server siteId and you will not hear anything on a satellite.

Rhasspy server and all satellites should be connected to the same MQTT broker. That can be Rhasspy, but if you want to to more then I suggest using a different broker like MQTT addon for Home Assistant or indeed the FHEM MQTT broker.
Connect the server and satellite to it and the sat should work.
However, doing the speech button in the webUI will only publish the speech to the server.

Hello, I have the same problem.

my ATOM Echo doesn’t say anything, it emits the 2 tones for the start and end of a command, but with TTS it remains silent.

where is the mistake?

here is my config:

{
    "dialogue": {
        "satellite_site_ids": "Test, Test2",
        "system": "rhasspy"
    },
    "handle": {
        "satellite_site_ids": "Test, Test2",
        "system": "command"
    },
    "intent": {
        "satellite_site_ids": "Test,Test2",
        "system": "fsticuffs"
    },
    "microphone": {
        "system": "hermes"
    },
    "mqtt": {
        "enabled": "true",
        "host": "192.168.178.110",
        "password": "mqttuser",
        "site_id": "Station",
        "username": "mqttuser"
    },
    "sounds": {
        "aplay": {
            "device": "sysdefault:CARD=Headphones"
        },
        "system": "hermes"
    },
    "speech_to_text": {
        "pocketsphinx": {
            "open_transcription": true
        },
        "satellite_site_ids": "Test,Test2",
        "system": "kaldi"
    },
    "text_to_speech": {
        "espeak": {
            "voice": "de"
        },
        "remote": {
            "url": "http://192.168.178.136:12101/api/text-to-speech"
        },
        "satellite_site_ids": "Test,Test2",
        "system": "nanotts"
    },
    "wake": {
        "raven": {
            "average_templates": false,
            "keywords": {
                "hey Axel": {
                    "enabled": true
                }
            },
            "minimum_matches": "1",
            "vad_sensitivity": "3"
        },
        "satellite_site_ids": "Test,Test2",
        "system": "raven"
    }
}

How do you handle TTS?

I you press Speak from the UI, the output will be on the base, not on the satellites.

So far I’ve only managed to get the base (Raspberry Pi4) to output the sound through the headphones. The satellite only plays the beginning and ending tones for speaking.

But I had selected the audio setting “aplay”.

Check here on how to get things going:

You cannot get TTS on a esp32 satellite from the UI in Rhasspy.
So no mistake, just incomplete :slight_smile:

how can I let my ESP32 speak?
I don’t know what else to set in Rhasspy?

Read the WIKI :wink:

You cannot do that in Rhasspy, you must have an intent handler with a text response.
You can also publish a message with the siteId to hermes/tts/say

https://rhasspy.readthedocs.io/en/latest/reference/#text-to-speech

I tried it again, it works under Node-Red, but it doesn’t work with the test button on Rhasspy

written in Node Red Javascript

var payload = {
    topic: "hermes/tts/say",
    text: "Timer 1 has been set for 5 minutes",
    siteId: "Test2"
}


return { topic: "hermes/tts/say",payload:payload };

What test button are you referring to?

This

I will quote myself:

1 Like

I think boeserkorn that you are assuming (a) that the Rhasspy Base station is controlling the Satellites, and (b) that everything on the GUI must be relevant to your use.

Rhasspy was (i believe) initially developed using Raspberry Pis where the RasPi would be performing all the tasks on one machine.
At v2.5 Rhasspy was modified to allow multiple Satellite (with microphone and speaker) to be separated from the Base (with shared CPU resource) - but the same GUI is still used for both … which causes confusion for new users :frowning: But at least your ESP32 doesn’t show the GUI

The Rhaspy GUI however still shows all the options, including those for debugging the all-on-one setup. In particular, I have noticed that the [Wake up] [Play recording] [Speak] and [Set Volume] buttons only work on the machine the GUI is running on. They do nothing if there is no microphone or speaker connected to that machine.

In other words those test buttons don’t help when testing a Satellite + Base configuration, such as you have.