Recommended setup for of Raspberry Pi Zero W as satellite

Hey guys,

for the past few nights I have tried to setup Rhasspy as satellite on a Rasperry Pi Zero W. Following my error search I understand it might not be the best hardware for the job, but as better hardware is hard to get, it is what I am stuck with.

I struggle to get voice recording working within Rhasspy on my setup. I use a Respeaker 2-mic HAT, which works fine if I use arecord / aplay on the pi. But neither of the installation methods (docker, .deb, venv) succeed with a working frontend that does not timeout on device refresh or without throwing errors in the backend that I am unable to fix. However, I see in the comments on this forum that several people have this setup running.

Do you guys have some pointers of a working OS-, Rhasspy-, Respeaker driver version combination that should install without problems given the hardware setup & limitations of the Rasperry Pi Zero W? Alternatively, what adaptations do I need to do during the installation process to make it work? That would be highly appreciated.

Thanks!

I have the repeaker hat working on the pi zero w. What guide did you do for setting up the driver? I used the instructions from seeed studio for setting it up. I run rhasspy in a docker on mine.

I also have reSpeaker 2-mic HAT on RasPi Zero working as a Rhasspy satellite. It’s noticeably slower than my RasPi 3A+ or 3B satellites.

I think the key is to do minimum of processing on the RasPi Zero - i.e just audio recording and playing, and local wakeword detection. Because RasPi Zero has limited processing power, and the mention of Docker problems on RasPi Zero, I used the Debian armel install on Raspberry Pi OS Lite. I use External MQTT to pass off the number crunching to my Home Assistant base machine which is running the HA Rhasspy add-on; and I now use node-RED (which also listens to MQTT) for scripting and automations.

This is not the only way - just what works for me after several steep learning curves :wink:

{
    "intent": {
        "system": "hermes"
    },
    "microphone": {
        "pyaudio": {
            "device": "0",
            "siteId": "sat-0",
            "udp_audio_port": "12203"
        },
        "system": "pyaudio"
    },
    "mqtt": {
        "enabled": "true",
        "host": "192.168.1.98",
        "password": "my password",
        "port": "1883",
        "site_id": "sat-0",
        "username": "rhasspy"
    },
    "sounds": {
        "aplay": {
            "device": "plughw:CARD=seeed2micvoicec,DEV=0",
            "volume": "0.8"
        },
        "system": "aplay"
    },
    "speech_to_text": {
        "system": "hermes"
    },
    "text_to_speech": {
        "system": "hermes"
    },
    "wake": {
        "porcupine": {
            "keyword_path": "porcupine_raspberry-pi.ppn",
            "sensitivity": "0.3",
            "udp_audio": "12203"
        },
        "system": "porcupine"
    }
}

I can’t remember now why I’m using pyaudio on this machine when I use arecord on my other satellites.

Well, I did exactly that. I might need to try it from scratch once more. Since I can use arecord and record sound, I suppose that my soldering and wiring is fine and the rhasspy setup/installation is at fault.

Did you simply use the docker install script from the docs? Or should I use a specific docker version tag, such as arm/v6? Wouldn’t docker pull the correct one automatically?

The docs also mention the need of the experimental setup for docker (Installation - Rhasspy). Did you need to apply this for the Pi Zero W aswell?

https://rhasspy.readthedocs.io/en/latest/installation/

For pi zero w there is reference to pulling a specific version