Rebranded the Matrix Voice to esp32-rhasspy-satellite

Thanks for your information, what type of satellite you would recommand? A pi with a respeaker? Are more than 1 sattelites supported?

That is the strange thing as really I can not as what are the essential early processing algs of KWS are missing from the entire project.
Use the atom-m5 as it aint great but being honest nothing really is that is on offer, satellite or not.

Now that Rhasspy is winding down to maintenance only I am trying to create a conversation on this before its likely many of the players scatter.
I have bit my lip and stayed relatively quiet on this subject for over a year but being honest use anything you wish as the KWS are relatively poor but as a project Rhasspy completely ignores the AudioDSP requirements that modern VoiceAI have used for a long while.

A cheap usb and uni directional electret is prob a good start or maybe the 2mic hat and speex aec but whatever make it cheap as the end solution will not be great so minimise what you spend.

Correct, there was a version with local hotword (using WakeNet). But esp lib kept being worked on and the wakenet would not complie with newer version.
I am currently working on other projects, so no real progress on the local KWS matter.

Yes, that can be achieved indeed :slight_smile:

(First post on the forum, obligatory huge thanks to synesthesiam for rhasspy! Could not believe it when I found out last week about its existence and open-sourceness.)

Thanks a lot-lot romkabouter for esp32-rhasspy-satellite! I ordered a couple of M5Stack Echo’s over the weekend. I got it “more or less” working, and it’s amazing!

What is “less” working is probably an issue of configuration. The repository does not provide instructions for how to configure rhasspy, and the rhasspy documentation does not have instructions for how to set up “dumb” satellites such as these. So, my solution was to just enter all the satellite siteIDs on all the services.

This solution works (surprisingly automagically), but there is one issue which I can’t seem to get rid of: kaldi is running all the time. The poor Raspberry’s CPU is at or above 60 degrees all the time (this is with 3 Echo satellites).

Is this a configuration error on my side? Rhasspy config below, but it would be already much appreciated if someone can confirm that they have a working setup where kaldi is not using CPU all the time.

{
    "command": {
        "webrtcvad": {
            "max_sec": "10"
        }
    },
    "dialogue": {
        "satellite_site_ids": "satellite1,satellite2,satellite3,satellite4,satellite5",
        "system": "rhasspy"
    },
    "handle": {
        "satellite_site_ids": "satellite1,satellite2,satellite3,satellite4,satellite5",
        "system": "hass"
    },
    "home_assistant": {
        "access_token": "quite_secret",
        "url": "http://raspy:8123"
    },
    "intent": {
        "satellite_site_ids": "satellite1,satellite2,satellite3,satellite4,satellite5",
        "system": "fsticuffs"
    },
    "microphone": {
        "pyaudio": {
            "device": "15"
        }
    },
    "sounds": {
        "system": "hermes"
    },
    "speech_to_text": {
        "kaldi": {
            "cancel_word": "nevermind",
            "max_frequent_words": "47",
            "max_unknown_words": "4",
            "min_confidence": "0.5"
        },
        "satellite_site_ids": "satellite1,satellite2,satellite3,satellite4,satellite5",
        "system": "kaldi"
    },
    "text_to_speech": {
        "larynx": {
            "default_voice": "scottish_english_male",
            "vocoder": "vctk_small"
        },
        "nanotts": {
            "language": "en-GB"
        },
        "satellite_site_ids": "satellite1,satellite2,satellite3,satellite4,satellite5",
        "system": "nanotts"
    },
    "wake": {
        "porcupine": {
            "keyword_path": "jarvis_raspberry-pi.ppn"
        },
        "satellite_site_ids": "satellite1,satellite2,satellite3,satellite4,satellite5",
        "system": "porcupine"
    }
}

That is actually the correct method :slight_smile:

Kaldi is a proces ran by Rhasspy, so it will run.
But the Pi must proces an audioStream from 5 sat’s That is a lot of data, so most likely this is the cause of the 60 degrees. Check what happens if you only use 1 sat.

That is actually the correct method :slight_smile:

Good to hear :grin:

Kaldi is a proces ran by Rhasspy, so it will run.
But the Pi must proces an audioStream from 5 sat’s That is a lot of data, so most likely this is the cause of the 60 degrees. Check what happens if you only use 1 sat

The CPU usage and temperature is indeed somewhat linearly related to the amount of satellites online. However, I would have expected Kaldi to only process audio after Porcupine detects a wake-word. I did see something in the documentation about needing to use UDP to “deprive” Kaldi of audio until a wake word is detected, but AFAIU that’s within a rhasspy setup, and doesn’t apply to streaming satellites.

I feel like it should be possible somehow to keep Kaldi dormant until Porcupine kicks in. The MQTT structure seems flexible enough at least. I might have to spend some weekend time on this… :slight_smile:

Processing is something different than running. I am not sure about the internal working of this however.

I know this is an older post, but can you tell me how to do this? I’m using a M5 Atom Echo and at the moment it publishes audio chunks to hermes/audioServer/satellite/audioFrame all the time.
Could I also run the wakeWord detection locally, on device? Or does it have too little computing power for that?

That option was removed because it did not work very well. And the M5 does not have enough power indeed.