Home Assistant Voice PE - "The voice assistant is unable to connect to Home Assistant"

My Home Assistant Voice PE has just arrived, but I’m unfortunately falling at a relatively early hurdle.

It is found as a new device in HA and added. It’s on the WiFi, and I think it has done its update, then I get “hello” quickly followed by “The voice assistant is unable to connect to Home Assistant” dialog. The “Help Me” link takes me to Troubleshooting Assist - Home Assistant but everything on that page assumes it is already added as a voice assistant, but that’s not the case for me.

To sum up, it is setup as a device in the ESPHome integration, but not as a Voice Assistant. It will wake on “OK Nabu”, but doesn’t respond to any questions, not even with any sort of “I can’t contact Home Assistant” etc.

Things I’ve tried so far in various combinations:

  • Reloading the device from ESPHome and setting it up again
  • Deleting device from ESPHome and trying again from mobile
  • Deleting device from ESPHome and trying again from PC browser
  • ESPHome “configure”, “Allow the device to perform Home Assistant actions”
  • Factory reset by long hold on button then trying again
  • Updated to beta firmware (from 24.12.8 to 25.1.0)
  • Restart Home Assistant

When I delete the device, the hardware shows pulsing red LEDs, so it is actually aware of the connection/disconnection at some level.

I am running Home Assistant full OS install, as a VM, with its own IP.

  • Core 2024.12.5
  • Supervisor 2024.12.0
  • Operating System 14.1
  • Frontend 20241127.8

My network is Unifi.

Phone attempting onboarding (iPhone) is on same WiFi network to one adding device to. I don’t have access to an Android to try at the moment.

Screenshot 2025-01-03 105416

Any suggestions gratefully received!

I’ve got the exact same problem and tried the same things to no avail :frowning:
I was thinking it was related to running it in docker on my homelab, but seeing as you have the hassio install I guess that might not be the issue for me then.

The link “help me” link in the error message leads to a section indicating the issue might be the local url for home assistant. This was set incorrectly for me (auto doesn’t work for docker install) but setting it to a valid url where homeassistant can be reached on the local network didn’t fix it for me.

Other threads here indicate possible issues with TLS, but if the local url is used it’s http, not https so that shouldn’t be the case either.

I have also today received Voice Assistant
During the weekend I’am going to test it, will back here with the results
Also, have HAOS, but on RPi5

Local network config was actually it for me - thank you very much Dan - hope you get yours sussed.

I had left the previous IP address for Home Assistant bare metal before I virtualised it. Corrected that, removed it from ESPHome, restarted Home Assistant and factory reset the device (don’t know if all those steps were necessary) and it added OK now!

Do you have multiple VLANs in your network?
I have separate IoT VLAN with 2,4GHz WiFi, where my Voice Assistant PE is connected.
HA server listening for the users (mobile apps) in another VLAN.
So my local URL for mobile app is NOT the same that should be used by HAVAPE.

Does anyone know how to specify the HA local URL for Voice Assistant only?
I’ve “took control” by connecting it directly to ESP Home, but there was no URL in the (default) config file.

Kind Regards,
Kacper

I do have other VLANs but, these were not involved for this.

As mentioned, mine is fixed now but updating server IP address.

I do have multiple VLANs, but the voice assistant is (currently) on the same VLAN as the machine hosting HA.

And now I may have (temporarily?) bricked my device.
Updating the device firmware – Home Assistant Voice Preview Edition links to Ready-Made Projects — ESPHome for “recompiling” the device. So I tried flashing the ESP32-S3-BOX-3, but that seems to have been a mistake as that doesn’t boot. So… Don’t try that.

I fixed mine by going to settings->network->home assistant url and making sure local is set to automatic. My Voice PE is on a different VLAN

Managed to find the correct installer for the Voice PE here: Home Assistant Voice PE so I’ve unbricked the device and i’m back to where I started, but now with logs:

[13:40:22][D][micro_wake_word:379]: Starting wake word detection
[13:40:22][D][light:036]: 'voice_assistant_leds' Setting:
[13:40:22][D][light:047]:   State: OFF
[13:40:22][D][light:109]:   Effect: 'None'
[13:40:22][D][i2s_audio.microphone:377]: Starting I2S Audio Microphne
[13:40:22][D][i2s_audio.microphone:381]: Started I2S Audio Microphone
[13:40:22][D][micro_wake_word:417]: State changed from IDLE to DETECTING_WAKE_WORD
[13:40:25][D][light:036]: 'voice_assistant_leds' Setting:
[13:40:25][D][light:047]:   State: ON
[13:40:25][D][light:051]:   Brightness: 66%
[13:40:25][D][light:109]:   Effect: 'Replying'
[13:40:25][D][media_player:080]: 'Media Player' - Setting
[13:40:25][D][media_player:087]:   Media URL: http://192.168.1.67:8123/api/esphome/ffmpeg_proxy/a444e7685385ea130f4b9516893f4876/DkLnEZjm6-KPrg6XM2R-nQ.flac
[13:40:25][D][media_player:093]:  Announcement: yes
[13:40:25][D][voice_assistant:515]: State changed from IDLE to STREAMING_RESPONSE
[13:40:25][D][voice_assistant:522]: Desired state set to STREAMING_RESPONSE
[13:40:25][D][ring_buffer:034]: Created ring buffer with size 48000
[13:40:25][D][ring_buffer:034]: Created ring buffer with size 48000
[13:40:25][D][ring_buffer:034]: Created ring buffer with size 65536
[13:40:25][D][ring_buffer:034]: Created ring buffer with size 65536
[13:40:25][D][power_supply:033]: Enabling power supply.
[13:40:25][D][nabu_media_player.pipeline:173]: Reading FLAC file type
[13:40:30][E][nabu_media_player:305]: The announcement pipeline's file reader encountered an error.
[13:40:30][D][voice_assistant:515]: State changed from STREAMING_RESPONSE to IDLE
[13:40:30][D][voice_assistant:522]: Desired state set to IDLE
[13:40:30][D][light:036]: 'voice_assistant_leds' Setting:
[13:40:30][D][light:047]:   State: OFF
[13:40:30][D][light:109]:   Effect: 'None'
[13:40:40][D][power_supply:048]: Disabling power supply.

Nothing indicating an actual connection issue there… But trying to download the requested URL manually gives a 200 response code with a 0 byte response body. Feels like some timeout somewhere casue the 200 response code is returned immediately but then the it takes pretty much exactly 5 seconds before the connection is closed with 0 bytes body.

gnux@VRRR:~$ time curl -vvv http://192.168.1.67:8123/api/esphome/ffmpeg_proxy/a444e7685385ea130f4b9516893f4876/DkLnEZjm6
-KPrg6XM2R-nQ.flac
*   Trying 192.168.1.67:8123...
* Connected to 192.168.1.67 (192.168.1.67) port 8123 (#0)
> GET /api/esphome/ffmpeg_proxy/a444e7685385ea130f4b9516893f4876/DkLnEZjm6-KPrg6XM2R-nQ.flac HTTP/1.1
> Host: 192.168.1.67:8123
> User-Agent: curl/7.81.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Transfer-Encoding: chunked
< Content-Type: application/octet-stream
< Date: Mon, 06 Jan 2025 12:56:32 GMT
< Server: Python/3.13 aiohttp/3.11.11
<
* Connection #0 to host 192.168.1.67 left intact

real    0m5.052s
user    0m0.003s
sys     0m0.000s

Debug log from esphome seem to support my theory of some sort of timeout (new attempt so URL has changed…)

2025-01-06 14:06:21.171 DEBUG (MainThread) [homeassistant.components.esphome.assist_satellite] Waiting for announcement to finished (message=, media_id=http://192.168.1.67:8123/api/assist_satellite/connection_test/d05390ab3fbefedcb84ae6be4d34ebdd?authSig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIyNTc0OGZjYjI2NTc0NWViOWJjNmM3YjAwZWYxZWZmMiIsInBhdGgiOiIvYXBpL2Fzc2lzdF9zYXRlbGxpdGUvY29ubmVjdGlvbl90ZXN0L2QwNTM5MGFiM2ZiZWZlZGNiODRhZTZiZTRkMzRlYmRkIiwicGFyYW1zIjpbXSwiaWF0IjoxNzM2MTY4NzgxLCJleHAiOjE3MzYyNTUxODF9.Lg9gwM2AcfMhhaXBTEAhq_O95w6nNRtR2XHclspr3Lk)
2025-01-06 14:06:21.171 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] Media URL allowed by proxy: http://192.168.1.67:8123/api/assist_satellite/connection_test/d05390ab3fbefedcb84ae6be4d34ebdd?authSig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIyNTc0OGZjYjI2NTc0NWViOWJjNmM3YjAwZWYxZWZmMiIsInBhdGgiOiIvYXBpL2Fzc2lzdF9zYXRlbGxpdGUvY29ubmVjdGlvbl90ZXN0L2QwNTM5MGFiM2ZiZWZlZGNiODRhZTZiZTRkMzRlYmRkIiwicGFyYW1zIjpbXSwiaWF0IjoxNzM2MTY4NzgxLCJleHAiOjE3MzYyNTUxODF9.Lg9gwM2AcfMhhaXBTEAhq_O95w6nNRtR2XHclspr3Lk
2025-01-06 14:06:21.171 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-096425 @ 192.168.1.153: Sending VoiceAssistantAnnounceRequest: media_id: "http://192.168.1.67:8123/api/esphome/ffmpeg_proxy/a444e7685385ea130f4b9516893f4876/iVOQM5LMGwepmscvP1p1wg.flac"

2025-01-06 14:06:21.171 DEBUG (MainThread) [aioesphomeapi._frame_helper.base] home-assistant-voice-096425 @ 192.168.1.153: Sending frame: [0070770a6e687474703a2f2f3139322e3136382e312e36373a383132332f6170692f657370686f6d652f66666d7065675f70726f78792f61343434653736383533383565613133306634623935313638393366343837362f69564f514d354c4d477765706d7363765031703177672e666c6163]
2025-01-06 14:06:21.252 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg -i http://192.168.1.67:8123/api/assist_satellite/connection_test/d05390ab3fbefedcb84ae6be4d34ebdd?authSig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIyNTc0OGZjYjI2NTc0NWViOWJjNmM3YjAwZWYxZWZmMiIsInBhdGgiOiIvYXBpL2Fzc2lzdF9zYXRlbGxpdGUvY29ubmVjdGlvbl90ZXN0L2QwNTM5MGFiM2ZiZWZlZGNiODRhZTZiZTRkMzRlYmRkIiwicGFyYW1zIjpbXSwiaWF0IjoxNzM2MTY4NzgxLCJleHAiOjE3MzYyNTUxODF9.Lg9gwM2AcfMhhaXBTEAhq_O95w6nNRtR2XHclspr3Lk -f flac -ar 48000 -ac 1 -sample_fmt s16 -map_metadata -1 -vn -nostats pipe:
2025-01-06 14:06:21.266 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-096425 @ 192.168.1.153: Got message of type MediaPlayerStateResponse: key: 2232357057
state: MEDIA_PLAYER_STATE_PLAYING
volume: 0.5

2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output: ffmpeg version 6.1.2 Copyright (c) 2000-2024 the FFmpeg developers
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   built with gcc 14.2.0 (Alpine 14.2.0)
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   configuration: --prefix=/usr --disable-librtmp --disable-lzma --disable-static --disable-stripping --enable-avfilter --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libmp3lame --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librist --enable-libsoxr --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-lto=auto --enable-lv2 --enable-openssl --enable-pic --enable-postproc --enable-pthreads --enable-shared --enable-vaapi --enable-vdpau --enable-version3 --enable-vulkan --optflags=-O3 --enable-libjxl --enable-libsvtav1 --enable-libvpl
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   libavutil      58. 29.100 / 58. 29.100
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   libavcodec     60. 31.102 / 60. 31.102
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   libavformat    60. 16.100 / 60. 16.100
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   libavdevice    60.  3.100 / 60.  3.100
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   libavfilter     9. 12.100 /  9. 12.100
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   libswscale      7.  5.100 /  7.  5.100
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   libswresample   4. 12.100 /  4. 12.100
2025-01-06 14:06:21.279 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg[170] output:   libpostproc    57.  3.100 / 57.  3.100
2025-01-06 14:06:26.271 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] ffmpeg transcoding cancelled
2025-01-06 14:06:26.284 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-096425 @ 192.168.1.153: Got message of type MediaPlayerStateResponse: key: 2232357057
state: MEDIA_PLAYER_STATE_IDLE
volume: 0.5
2025-01-06 14:06:26.326 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-096425 @ 192.168.1.153: Got message of type VoiceAssistantAnnounceFinished: success: true

“ffmpeg transcoding cancelled” after 5 seconds. So some issue with ffmpeg.

I’m having same issue, are my debug log what could be I doing wrong ?

2025-01-07 14:13:17.786 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Sending UpdateCommandRequest: key: 168699454
command: UPDATE_COMMAND_CHECK

2025-01-07 14:13:17.786 DEBUG (MainThread) [aioesphomeapi._frame_helper.base] home-assistant-voice-090ee0 @ 192.168.3.23: Sending frame: [0007760d3e260e0a1002]
2025-01-07 14:13:19.662 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Got message of type UpdateStateResponse: key: 168699454
current_version: "25.1.0"
latest_version: "25.1.0"
title: "Nabu Casa.Home Assistant Voice PE"
release_summary: "## What\'s Changed\r\n* Bugfix: Avoid crashing when started without internet access"
release_url: "https://github.com/esphome/home-assistant-voice-pe/releases/tag/25.1.0"

2025-01-07 14:13:22.803 DEBUG (MainThread) [homeassistant.components.esphome.assist_satellite] Waiting for announcement to finished (message=, media_id=https://homeassistant.local:8123/api/assist_satellite/connection_test/67f8454279f9673d2f7d6bb48ad6875b?authSig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIwYzU3NzIzOWNjZGY0MDU2YWNkNzc0ZTcxMjllNzFlNSIsInBhdGgiOiIvYXBpL2Fzc2lzdF9zYXRlbGxpdGUvY29ubmVjdGlvbl90ZXN0LzY3Zjg0NTQyNzlmOTY3M2QyZjdkNmJiNDhhZDY4NzViIiwicGFyYW1zIjpbXSwiaWF0IjoxNzM2MjU5MjAyLCJleHAiOjE3MzYzNDU2MDJ9.tbMLyiHRFVtp7-jX72vSRJLU88TJWqvtLE4bJckgWuc)
2025-01-07 14:13:22.803 DEBUG (MainThread) [homeassistant.components.esphome.ffmpeg_proxy] Media URL allowed by proxy: https://homeassistant.local:8123/api/assist_satellite/connection_test/67f8454279f9673d2f7d6bb48ad6875b?authSig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIwYzU3NzIzOWNjZGY0MDU2YWNkNzc0ZTcxMjllNzFlNSIsInBhdGgiOiIvYXBpL2Fzc2lzdF9zYXRlbGxpdGUvY29ubmVjdGlvbl90ZXN0LzY3Zjg0NTQyNzlmOTY3M2QyZjdkNmJiNDhhZDY4NzViIiwicGFyYW1zIjpbXSwiaWF0IjoxNzM2MjU5MjAyLCJleHAiOjE3MzYzNDU2MDJ9.tbMLyiHRFVtp7-jX72vSRJLU88TJWqvtLE4bJckgWuc
2025-01-07 14:13:22.804 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Sending VoiceAssistantAnnounceRequest: media_id: "https://homeassistant.local:8123/api/esphome/ffmpeg_proxy/c89bf8cec43e1ff9efc41f31daf14e0d/tcSjoNShRvVLih3woqweKw.flac"

2025-01-07 14:13:22.804 DEBUG (MainThread) [aioesphomeapi._frame_helper.base] home-assistant-voice-090ee0 @ 192.168.3.23: Sending frame: [0078770a7668747470733a2f2f686f6d65617373697374616e742e6c6f63616c3a383132332f6170692f657370686f6d652f66666d7065675f70726f78792f63383962663863656334336531666639656663343166333164616631346530642f7463536a6f4e53685276564c696833776f7177654b772e666c6163]
2025-01-07 14:13:22.958 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Got message of type MediaPlayerStateResponse: key: 2232357057
state: MEDIA_PLAYER_STATE_PLAYING
volume: 0.499999881

2025-01-07 14:13:23.395 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Got message of type MediaPlayerStateResponse: key: 2232357057
state: MEDIA_PLAYER_STATE_IDLE
volume: 0.499999881

2025-01-07 14:13:23.441 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Got message of type VoiceAssistantAnnounceFinished: success: true

2025-01-07 14:13:23.448 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Got message of type LightStateResponse: key: 1459351809
state: true
brightness: 0.66
red: 0.099051632
green: 0.772392
blue: 1
white: 1
color_brightness: 1
color_mode: 35
cold_white: 1
warm_white: 1

2025-01-07 14:13:23.458 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Got message of type LightStateResponse: key: 1459351809
state: true
brightness: 0.66
red: 0.099051632
green: 0.772392
blue: 1
white: 1
color_brightness: 1
color_mode: 35
cold_white: 1
warm_white: 1

2025-01-07 14:13:59.880 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Sending PingRequest: 
2025-01-07 14:13:59.880 DEBUG (MainThread) [aioesphomeapi._frame_helper.base] home-assistant-voice-090ee0 @ 192.168.3.23: Sending frame: [000007]
2025-01-07 14:14:00.008 DEBUG (MainThread) [aioesphomeapi.connection] home-assistant-voice-090ee0 @ 192.168.3.23: Got message of type PingResponse: 

it seems VPE does not support HTTPS connections to HA, once I disable HTTPS in HA and reverted to HTTP, VPE setup with no issues.

same problem setting local network to either the local IP address or Automatic.

Anybody else with the same issue that managed to fix it ?

As this topic is flagged as solved I’ve started a new thread for the issues I’m seeing here: Home Assistant Voice PE "The announcement pipeline's file reader encountered an error"

I ran into this issue as well because I run Home Assistant as a container in a k3s cluster.

As suggested in this comment, the fix was indeed in Home Assistant’s local network settings, but the fix was different for my situation.

Since I run Home Assistant in Kubernetes, by default the “Automatic” setting for the local network was using the Pod IP, which for me is not an IP address that is routable from devices on my local network.

I actually had to create a static LAN IP for Home Assistant (I used a MetalLB service), disable the “Automatic” local network settings, and manually set that static LAN IP.

Might be a niche case, but hopefully someone else with this issue will stumble on this answer!

This (alex.thompson’s Kubernetes install) was the same situation for my HA install, except Home Assistant is running in a Docker container with bridge networking. The “automatic” local network link in Home Assistant Companion App was populated with the container’s non-routable IP. I entered the container’s LAN IP and it went easily from there!

Tried this didn’t work. So if you thought your device was bricked, you have to hold down button before you plug in the voice pe then connect using the link

I had the same issue. But the for the Home Assistant URL I ended up setting a dns resolver with pfsense to point to an internal url that redirects to the ip address of my home assistant server. The local I still have my ip listed. But above that is where I put the internal url.

I had this issue with HA in a container, and fixed it by changing the URL in HA UI->Settings->System->Network.
Instead of the automatic “Home Assistant URL”, which was defaulting to the Docker VLAN one with the default 8123 port, I changed it to the host IP address with the host bound port, which is 30103, the port TrueNAS Scale binds to the internal 8123 port in docker. Basically I changed it to the address I access the WebUI through.
Makes sense now that I think of it, since the HA container has no way of knowing which host IP and port its internal port is bound to, and the VPE has no way of getting into the docker VLAN except through the externally bound port. Easy to avoid if you bind 8123:8132 during deployment, instead of 30103:8123 as TrueNAS did for me.

What other wake words can we use? Or we are stuck with only “OK Nabu” ?