Support for raspberry pi 5

Hi there,

I am trying to get Rhasspy work on a Raspberry pi 5. For the most part, everything seems to work fine except that I am not able to use Porcupine to detect the wake word. Picovoice’s website seems to suggest that Porcupine is supported on Raspberry pi 5.

Has anyone successful used Rhasspy on a Raspberry pi 5? Thank you for sharing

3 Likes

I am running into the same problem. Sound output, sound input, MQTT, interaction with Home Assistant works fine. But not wake word.

This is the relevant log output:

2024-03-17 17:29:33,305 INFO spawned: 'wake_word' with pid 293
WARNING: Please be advised that this device (CPU part = 0xd0b) is not officially supported by Picovoice. Falling back to the armv6-based library. This is not tested nor optimal.
Traceback (most recent call last):
  File "/usr/lib/python3.7/runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/lib/python3.7/runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/usr/lib/python3.7/runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "/usr/lib/rhasspy/rhasspy-wake-porcupine-hermes/rhasspywake_porcupine_hermes/__init__.py", line 14, in <module>
    import pvporcupine
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/pvporcupine/__init__.py", line 15, in <module>
    LIBRARY_PATH = pv_library_path('')
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/pvporcupine/util.py", line 94, in pv_library_path
    raise NotImplementedError('Unsupported platform.')
NotImplementedError: Unsupported platform.
2024-03-17 17:29:33,475 INFO exited: wake_word (exit status 1; not expected)
2024-03-17 17:29:35,480 INFO spawned: 'wake_word' with pid 301
WARNING: Please be advised that this device (CPU part = 0xd0b) is not officially supported by Picovoice. Falling back to the armv6-based library. This is not tested nor optimal.
Traceback (most recent call last):
  File "/usr/lib/python3.7/runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/lib/python3.7/runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/usr/lib/python3.7/runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "/usr/lib/rhasspy/rhasspy-wake-porcupine-hermes/rhasspywake_porcupine_hermes/__init__.py", line 14, in <module>
    import pvporcupine

  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/pvporcupine/__init__.py", line 15, in <module>
    LIBRARY_PATH = pv_library_path('')
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/pvporcupine/util.py", line 94, in pv_library_path
    raise NotImplementedError('Unsupported platform.')
NotImplementedError: Unsupported platform.
2024-03-17 17:29:35,642 INFO exited: wake_word (exit status 1; not expected)
2024-03-17 17:29:38,648 INFO spawned: 'wake_word' with pid 309
WARNING: Please be advised that this device (CPU part = 0xd0b) is not officially supported by Picovoice. Falling back to the armv6-based library. This is not tested nor optimal.
Traceback (most recent call last):
  File "/usr/lib/python3.7/runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/lib/python3.7/runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/usr/lib/python3.7/runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "/usr/lib/rhasspy/rhasspy-wake-porcupine-hermes/rhasspywake_porcupine_hermes/__init__.py", line 14, in <module>
    import pvporcupine
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/pvporcupine/__init__.py", line 15, in <module>
    LIBRARY_PATH = pv_library_path('')
  File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/pvporcupine/util.py", line 94, in pv_library_path
    raise NotImplementedError('Unsupported platform.')
NotImplementedError: Unsupported platform.
2024-03-17 17:29:38,813 INFO exited: wake_word (exit status 1; not expected)
2024-03-17 17:29:39,815 INFO gave up: wake_word entered FATAL state, too many start retries too quickly

And trying to switch to Snowboy results in this error:

[DEBUG:2024-03-17 17:37:27,232] rhasspyremote_http_hermes: Receiving audio
2024-03-17 17:37:28,235 INFO spawned: 'wake_word' with pid 424
Traceback (most recent call last):
  File "/usr/lib/python3.7/runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/lib/python3.7/runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/usr/lib/python3.7/runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "/usr/lib/rhasspy/rhasspy-wake-snowboy-hermes/rhasspywake_snowboy_hermes/__init__.py", line 26, in <module>
    from snowboy import snowboydecoder, snowboydetect
ModuleNotFoundError: No module named 'snowboy'
1 Like

I created my account here just to say +1
lost my last hair on trying to get a functionnal rhasspy on a pi 5

+1
The issue is not Pi 5 exclusive. I can’t get snowboy to run on a Pi 3B+. The web interface just states “Timeout”, while the console throws the “No module named ‘snowboy’” Error.

But it works on x86_x64 Linux Mint 21.3, bare metal and VM!!

It can’t be dependency related or can it? Everything that is needed should be inside the container. Maybe there are only x86 binaries in the container? To investigate further, I tried installing Rhasspy without Docker, and i can tell you, it is IMPOSSIBLE.
I sat here, and i am not exaggerating, for 5-6hrs straight. Hammering various apt & pip install dependencies into the terminal, adding older dist repos, trying scripts, trying rhasspy forks with allegedly fixed dependencies, installing older Python versions like 3.7, unpacking, changing and repacking the Debian package myself and then starting all over with apt & pip install. Impossible.

It’s a shame that such great software no longer works properly just because time has passed.

snowboy was abandonded a few years ago now… it only does wakeword, so I would use the openwakeword now for HA.

it does the same thing as snowboy

processes audio packets streaming from arecord (or rec on mac) , looking for the hotword.
and then signals the hotword was found

1 Like