I’m experimenting with local voice, I have an three M5 echo’s (two flavors) and a Voice Preview Edition.
I did some experimentation with an Ollama model but I can’t run it on my home assistant system, no GPU and it just doesn’t work well without. While I can run it on my desktop, I do not want to head down that split setup for anything permanent.
I really don’t want conversation – I want a specific command to be recognized. I’m happy with limited creativity.
So far I’ll fall the results underwhelming, though somewhat encouraging. Wake Word Detection is pretty good - not great, but pretty good.
Voice understanding is mediocre. I’m going to show a specific example but they are rather like this. I have no reason to think I mumble, by the way, and do not have a strong US accent (think Virginia suburban not rural).
I have lots of CPU power (12 cores assigned to HAOS on a fast machine), 32gb of memory. I have:
Conversation Agent = Home Assistant
Speech to Text = Faster Whisper
Everything I can find set to english
Whisper:
Model = base
library = faster-whisper
custom model = unspecified
custom model type = faster-whisper
beam size = 5 (i've also tried one)
task = transcribe
vad clip = on
local files only = off
During the sample below should nothing interesting at the info level (below are two consecutive runs, the first fails the second works:
INFO:faster_whisper:Processing audio with duration 00:02.144
INFO:wyoming_faster_whisper.dispatch_handler: Turn on the network close it like
INFO:faster_whisper:Processing audio with duration 00:02.560
INFO:wyoming_faster_whisper.dispatch_handler: Turn on the network closet light.
I’m not saying it works awfully, but that I get too many like the above, where “closet light” became the nonsense “close it like”.
Is there something I should be doing differently in this setup for more accurate recognition?
I’ve experimented with various recommendations on model and what I have seems to work fastest so far, but none of them seem to really improve recognition accuracy. In particular, I’m disappointed it would come up with something like “close it like” when it’s comparing against specific HA related things – am I doing something wrong to keep it from tying recognition to relevant phrases?
Here’s the YAML for the one that failed from debug info:
stage: done
run:
pipeline: 01kxpfzx18ka55wwrdtsk076dc
language: en
conversation_id: 01KY5ZF1X6Y0AP7TX38BFZKHT4
satellite_id: assist_satellite.vpe_1_assist_satellite
tts_output:
token: _KzsQoPM1XFkXlDYsIt2NQ.flac
url: /api/tts_proxy/_KzsQoPM1XFkXlDYsIt2NQ.flac
mime_type: audio/flac
stream_response: false
events:
- type: run-start
data:
pipeline: 01kxpfzx18ka55wwrdtsk076dc
language: en
conversation_id: 01KY5ZF1X6Y0AP7TX38BFZKHT4
satellite_id: assist_satellite.vpe_1_assist_satellite
tts_output:
token: _KzsQoPM1XFkXlDYsIt2NQ.flac
url: /api/tts_proxy/_KzsQoPM1XFkXlDYsIt2NQ.flac
mime_type: audio/flac
stream_response: false
timestamp: "2026-07-22T22:34:42.983129+00:00"
- type: stt-start
data:
engine: stt.faster_whisper
metadata:
language: en
format: wav
codec: pcm
bit_rate: 16
sample_rate: 16000
channel: 1
audio_processing:
requires_external_vad: true
prefers_auto_gain_enabled: true
prefers_noise_reduction_enabled: true
timestamp: "2026-07-22T22:34:42.983371+00:00"
- type: stt-vad-start
data:
timestamp: 1050
timestamp: "2026-07-22T22:34:44.044444+00:00"
- type: stt-vad-end
data:
timestamp: 2540
timestamp: "2026-07-22T22:34:45.517941+00:00"
- type: stt-end
data:
stt_output:
text: " Turn on the network close it like"
timestamp: "2026-07-22T22:34:45.961412+00:00"
- type: intent-start
data:
engine: conversation.home_assistant
language: en
intent_input: " Turn on the network close it like"
conversation_id: 01KY5ZF1X6Y0AP7TX38BFZKHT4
device_id: 29f30bd51156a47df2e04d4092dfb774
satellite_id: assist_satellite.vpe_1_assist_satellite
prefer_local_intents: true
timestamp: "2026-07-22T22:34:45.961559+00:00"
- type: intent-end
data:
processed_locally: true
intent_output:
response:
speech:
plain:
speech: Sorry, I am not aware of any device called network close it like
extra_data: null
card: {}
language: en
response_type: error
data:
code: no_valid_targets
conversation_id: 01KY5ZF1X6Y0AP7TX38BFZKHT4
continue_conversation: false
timestamp: "2026-07-22T22:34:45.982009+00:00"
- type: tts-start
data:
engine: tts.piper
language: en_US
voice: en_US-kristin-medium
tts_input: Sorry, I am not aware of any device called network close it like
acknowledge_override: false
timestamp: "2026-07-22T22:34:45.982076+00:00"
- type: tts-end
data:
tts_output:
media_id: media-source://tts/-stream-/_KzsQoPM1XFkXlDYsIt2NQ.flac
token: _KzsQoPM1XFkXlDYsIt2NQ.flac
url: /api/tts_proxy/_KzsQoPM1XFkXlDYsIt2NQ.flac
mime_type: audio/flac
timestamp: "2026-07-22T22:34:45.982362+00:00"
- type: run-end
data: null
timestamp: "2026-07-22T22:34:45.982429+00:00"
started: 2026-07-22T22:34:42.983Z
stt:
engine: stt.faster_whisper
metadata:
language: en
format: wav
codec: pcm
bit_rate: 16
sample_rate: 16000
channel: 1
audio_processing:
requires_external_vad: true
prefers_auto_gain_enabled: true
prefers_noise_reduction_enabled: true
done: true
stt_output:
text: " Turn on the network close it like"
intent:
engine: conversation.home_assistant
language: en
intent_input: " Turn on the network close it like"
conversation_id: 01KY5ZF1X6Y0AP7TX38BFZKHT4
device_id: 29f30bd51156a47df2e04d4092dfb774
satellite_id: assist_satellite.vpe_1_assist_satellite
prefer_local_intents: true
done: true
processed_locally: true
intent_output:
response:
speech:
plain:
speech: Sorry, I am not aware of any device called network close it like
extra_data: null
card: {}
language: en
response_type: error
data:
code: no_valid_targets
conversation_id: 01KY5ZF1X6Y0AP7TX38BFZKHT4
continue_conversation: false
tts:
engine: tts.piper
language: en_US
voice: en_US-kristin-medium
tts_input: Sorry, I am not aware of any device called network close it like
acknowledge_override: false
done: true
tts_output:
media_id: media-source://tts/-stream-/_KzsQoPM1XFkXlDYsIt2NQ.flac
token: _KzsQoPM1XFkXlDYsIt2NQ.flac
url: /api/tts_proxy/_KzsQoPM1XFkXlDYsIt2NQ.flac
mime_type: audio/flac
finished: 2026-07-22T22:34:45.982Z