Trouble with Assistant Microphone / voice assistant setup on Raspberry Pi 5 HAOS

Greetings all,

I have been having issues trying to get Voice Assistant and Open Wake Word working and I’m not sure where to look next.

This is a fresh install using Raspberry Pi Imager - V2.03 (Home Assistant OS 16.3 (RPI 5))

Hardware

Raspberry Pi 5 (Rpi5-64)

64GB Max Endurance SanDisk microSD

USB Audio Adaptor with 3.5mm microphone input and speaker output. I have plugged in a known working microphone to the device (ie tested and confirmed working with windows Voice Recorder).

`/$ ha audio info`

`audio:`

`application:`

`- addon: core_assist_microphone`

`index: 4`

`mute: false`

`name: ALSA plug-in [aplay]`

`stream_index: 3`

`stream_type: input`

`volume: 1`

`card:`

`- driver: module-alsa-card.c`

`index: 1`

`name: alsa_card.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00`

`profiles:`

`- active: false`

`description: Mono Input`

`name: input:mono-fallback`

`- active: false`

`description: Analog Stereo Output`

`name: output:analog-stereo`

`- active: true`

`description: Analog Stereo Output + Mono Input`

`name: output:analog-stereo+input:mono-fallback`

`- active: false`

`description: Digital Stereo (IEC958) Output`

`name: output:iec958-stereo`

`- active: false`

`description: Digital Stereo (IEC958) Output + Mono Input`

`name: output:iec958-stereo+input:mono-fallback`

`- active: false`

`description: "Off"`

`name: "off"`

`input:`

`- applications:`

`- addon: core_assist_microphone`

`index: 4`

`mute: false`

`name: ALSA plug-in [aplay]`

`stream_index: 3`

`stream_type: input`

`volume: 1`

`card: 1`

`default: true`

`description: USB PnP Sound Device Mono`

`index: 3`

`mute: false`

`name: alsa_input.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.mono-fallback`

`volume: 0.8000030517578125`

`output:`

`- applications: []`

`card: 1`

`default: true`

`description: USB PnP Sound Device Analog Stereo`

`index: 2`

`mute: false`

`name: alsa_output.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-stereo`

`volume: 1`

`host:` [`172.30.32.4`](http://172.30.32.4)

`update_available: false`

`version: 2025.08.0`

`version_latest: 2025.08.0`

I followed the instructions per Wake words for Assist - Home Assistant

Working through the Troubleshooting Assist - Home Assistant

I can successfully run a text command and have it control my devices.

I did notice that clicking Start Conversation from the three dots beside my Assistant, the microphone icon has a red !, clicking it just shows [object, object] which seems odd…

OpenWakeWord log

[18:26:07] INFO: Successfully sent discovery information to Home Assistant.
s6-rc: info: service discovery successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
DEBUG:wyoming_openwakeword.handler:Client connected: 27964805547448
DEBUG:wyoming_openwakeword.handler:Sent info to client: 27964805547448
DEBUG:wyoming_openwakeword.handler:Client disconnected: 27960836310594
DEBUG:wyoming_openwakeword.handler:Client disconnected: 27964805547448
DEBUG:wyoming_openwakeword.handler:Client connected: 27968846058058
DEBUG:wyoming_openwakeword.handler:Loaded models: ['okay_nabu']
DEBUG:wyoming_openwakeword.handler:Receiving audio from client: 27968846058058
DEBUG:wyoming_openwakeword.handler:Client connected: 27996851260123
DEBUG:wyoming_openwakeword.handler:Sent info to client: 27996851260123
DEBUG:wyoming_openwakeword.handler:Client disconnected: 27996851260123

Assist Microphone Log

[18:27:34] INFO: Service exited with code 256 (by signal 15)
s6-rc: info: service assist_microphone successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service assist_microphone: starting
s6-rc: info: service assist_microphone successfully started
s6-rc: info: service discovery: starting
DEBUG:root:Namespace(mic_uri=None, mic_command='arecord -r 16000 -c 1 -f S16_LE -t raw', mic_command_rate=16000, mic_command_width=2, mic_command_channels=1, mic_command_samples_per_chunk=1024, mic_volume_multiplier=2.0, mic_noise_suppression=0, mic_auto_gain=15, mic_seconds_to_mute_after_awake_wav=0.5, mic_no_mute_during_awake_wav=False, mic_channel_index=None, snd_uri=None, snd_command='aplay -r 16000 -c 1 -f S16_LE -t raw', snd_command_rate=16000, snd_command_width=2, snd_command_channels=1, snd_volume_multiplier=1.0, wake_uri=None, wake_word_name=[], wake_command=None, wake_command_rate=16000, wake_command_width=2, wake_command_channels=1, wake_refractory_seconds=5.0, vad=False, vad_threshold=0.5, vad_trigger_level=1, vad_buffer_seconds=2, vad_wake_word_timeout=5.0, event_uri=None, startup_command=None, detect_command=None, detection_command=None, transcript_command=None, stt_start_command=None, stt_stop_command=None, synthesize_command=None, tts_start_command=None, tts_stop_command=None, tts_played_command=None, streaming_start_command=None, streaming_stop_command=None, error_command=None, connected_command=None, disconnected_command=None, timer_started_command=None, timer_updated_command=None, timer_cancelled_command=None, timer_finished_command=None, awake_wav='/usr/src/sounds/awake.wav', done_wav='/usr/src/sounds/done.wav', timer_finished_wav='/usr/src/sounds/timer_finished.wav', timer_finished_wav_repeat=[3.0, 0.75], uri='tcp://0.0.0.0:10700', name='assist microphone', area=None, no_zeroconf=True, zeroconf_name=None, zeroconf_host=None, debug_recording_dir=None, debug=True, log_format='%(levelname)s:%(name)s:%(message)s')
INFO:root:Ready
DEBUG:root:Connecting to mic service: ['arecord', '-r', '16000', '-c', '1', '-f', 'S16_LE', '-t', 'raw']
DEBUG:root:Connecting to snd service: ['aplay', '-r', '16000', '-c', '1', '-f', 'S16_LE', '-t', 'raw']
INFO:root:Connected to services
DEBUG:root:Using webrtc audio enhancements
DEBUG:root:Connected to mic service
Recording raw data 'stdin' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
[18:27:41] INFO: Successfully sent discovery information to Home Assistant.
s6-rc: info: service discovery successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
DEBUG:root:Server set: 28061208180860
INFO:root:Connected to server
INFO:root:Streaming audio
DEBUG:root:Event(type='run-pipeline', data={'start_stage': 'wake', 'end_stage': 'tts', 'restart_on_end': True, 'snd_format': {'rate': 16000, 'width': 2, 'channels': 1}}, payload=None)
DEBUG:root:Ping enabled

I also note, I can play audio files via the connected USB speaker using MPD without issue.

Not sure what to check next, hope someone can give me some direction.

Other settings:

Thank you
V

Got the same problem. Not being a developer, I used copilot to try to help me out. It seems we need to install Wyoming Satellite. But there is no way to do this via the interface and it seems to be deprecated. The new way to do it seems to be GitHub - OHF-Voice/linux-voice-assistant: Voice satellite for Home Assistant using the ESPHome protocol. But that’s not ready yet. So I’m quite frustrated, just bought the mic and the speaker expecting it to work easily. But sadly all is in flux now…

In the end I ended up getting it to work, but had a hell of a time :slight_smile:
TBH I think I uninstalled all the Voice Assistant configs, Wyoming, OpenWake Word, Piper etc. Rebooted the Raspberry Pi, then added them all back as if doing it for the first time.

I started a write up that may help, but based on the back and forth and voodoo performed I may have missed some stuff.

I haven’t made a final version / checked the logic as it was more of a data dump as I was going. But use what you will.

Reminder… This was for my setup (running a custom Voice) of a Raspberry Pi 5 running HAOS, with a USB microphone and USB Audio Output device attached.

o add your personal wake word to Home Assistant 


Make sure you have the Samba add-on installed. https://www.home-assistant.io/common-tasks/os/#configuring-access-to-files
On your computer, access your Home Assistant server via Samba.
Open the share folder and create a new folder openwakeword so that you have /share/openwakeword.
copy your model file (.tflite) into that folder.


Make sure you have the Advanced SSH & Web Terminal add-on  installed. https://github.com/hassio-addons/addon-ssh

*** WARNING - You need to disable Protection Mode for the Advanced SSH & Web Terminal ****

From the add-on Info tab, uncheck the box beside Protected mode and restart the add-on

Open the Terminal (you can add a link to the Sidebar under the Info tab of the Add on (or click Open web UI from the same page)

Enter the command:

Login

then enter the username and password you set in the Config for Advanced SSH & Web Terminal

Type whoami to confirm you have root access

Lists all Docker containers

docker ps -a   

Shell into the OpenWakeWord Docker Container (so you can navigate with normal commands like ls)
docker exec -it addon_core_openwakeword /bin/sh 
yours may vary, but this is the correct docker for HAOS on a Raspberry Pi

Type Exit once you can confirmed the files location and name

Copy file from HAOS to Docker container 
docker cp /root/share/openwakeword/yo_glados.tflite addon_core_openwakeword:/usr/local/lib/python3.11/dist-packages/pyopen_wakeword/models/

Check the file copied
docker exec addon_core_openwakeword ls -la /usr/local/lib/python3.11/dist-packages/pyopen_wakeword/models/

Restart HomeAssistant - ie full restart

Open your Voice Assistant and your Open Wake word should be there....





Changing the default sounds

1. Copy the folder 'sounds' to your share folder... (for the HAOS install on my Raspberry Pi it is /share/sounds/hey.wav)

2. Open the Assistant Microphone add-on configuration page

3. Update the Awake.wav from /usr/src/sounds/awake.wav to the file of your choice (We will work on making this random later)

eg /share/sounds/hey.wav

If you check the Logs for your Assistant Microphone and are getting an error like:

[13:18:03] INFO: Service exited with code 1 (by signal 0)
\root\src\share\sounds\hey.wav does not exist (I used this as an example incorrect path)

This means the path to the file is incorrect, You need to stop the add-on and update to the correct file path. This can be done in Terminal with the below command
(You can usually start and stop from the add-on Info page, but this error seems to create an infinite loop, so the below terminal command is the only way)

ha addons stop core_assist_microphone

Don't forget to start the Assist Microphone add-on again once you fix the path. 

ha addons start core_assist_microphone




AUTOMATING Reboot Assistant Microphone Crash

- Use this script


Troubleshooting:

The default voice is still being user

Open the Piper add-on Settings
Under Configuration ensure the Voice is set to en-US-lessac-medium
ensure the Update voices switch is OFF.
Restart all wyoming add-ons (or reboot, probably quicker)
1 Like