Sorry, I’ve searched for a while for a solution to this.
I’ve had whisper and tts working for a period of time. Recently, I’m getting spotty TTS responses in the assist chat. The TTS services work fine. I can notify and play over media perfectly fine using the same voice service. I try use the “Try voice” and it works every time. However, in the middle of an assist stream on my phone it only works a handful of times. These are not timeout problems that I know of. It seems Piper and Kokoro are blazingly fast on GPU.
For instance, this is one where it worked
- type: intent-end
data:
processed_locally: false
intent_output:
response:
speech:
plain:
speech: >-
The left garage door is closed, and the right garage door is
closed.
extra_data: null
card: {}
language: en
response_type: action_done
data:
targets: []
success: []
failed: []
conversation_id: 01KH4KHN4TXGVA7SK3WZCEXWHE
continue_conversation: false
timestamp: "2026-02-10T20:23:14.919832+00:00"
- type: tts-start
data:
engine: tts.kokoro
language: en
voice: af_heart
tts_input: The left garage door is closed, and the right garage door is closed.
acknowledge_override: false
timestamp: "2026-02-10T20:23:14.920010+00:00"
- type: tts-end
data:
tts_output:
media_id: media-source://tts/-stream-/SLSnPNicf1tMvj9eqweE_Q.mp3
token: SLSnPNicf1tMvj9eqweE_Q.mp3
url: /api/tts_proxy/SLSnPNicf1tMvj9eqweE_Q.mp3
mime_type: audio/mpeg
timestamp: "2026-02-10T20:23:14.921791+00:00"
- type: run-end
data: null
timestamp: "2026-02-10T20:23:14.921919+00:00"
Here is the one directly after that didn’t work
- type: intent-end
data:
processed_locally: false
intent_output:
response:
speech:
plain:
speech: The current outside temperature is 50 °F.
extra_data: null
card: {}
language: en
response_type: action_done
data:
targets: []
success: []
failed: []
conversation_id: 01KH4KHN4TXGVA7SK3WZCEXWHE
continue_conversation: false
timestamp: "2026-02-10T20:23:43.992407+00:00"
- type: tts-start
data:
engine: tts.kokoro
language: en
voice: af_heart
tts_input: The current outside temperature is 50 °F.
acknowledge_override: false
timestamp: "2026-02-10T20:23:43.992539+00:00"
- type: run-end
data: null
timestamp: "2026-02-10T20:23:43.994376+00:00"
Every time it fails, I get the following log
Logger: homeassistant.components.websocket_api.http.connection
Source: components/tts/__init__.py:530
integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 3:22:38 PM (2 occurrences)
Last logged: 3:23:43 PM
[139741864980736] Error handling message: Unknown error (unknown_error) Josh from 192.168.1.125 (Home Assistant/2026.2.1-20142 (Android 16; Pixel 9a))
[139742598066912] Error handling message: Unknown error (unknown_error) Josh from 192.168.1.125 (Home Assistant/2026.2.1-20142 (Android 16; Pixel 9a))
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 28, in _handle_async_response
await func(hass, connection, msg)
File "/usr/src/homeassistant/homeassistant/components/assist_pipeline/websocket_api.py", line 263, in websocket_run
await run_task
File "/usr/src/homeassistant/homeassistant/components/assist_pipeline/pipeline.py", line 1797, in execute
await self.run.text_to_speech(tts_input)
File "/usr/src/homeassistant/homeassistant/components/assist_pipeline/pipeline.py", line 1471, in text_to_speech
self.tts_stream.async_set_message(tts_input)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/tts/__init__.py", line 530, in async_set_message
self._result_cache.set_result(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
self._manager.async_cache_message_in_memory(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<5 lines>...
)
^
)
^
asyncio.exceptions.InvalidStateError: invalid state
Setup
- Android phone running latest version
- Home assistant versions: Latest as of now
- Ollama integration running GPT-OSS-20B
- STT: Faster whisper over wyoming. On a different machine with a GPU. (this docker GitHub - slackr31337/wyoming-whisper-gpu: wyoming-whisper docker container with Nvidia GPU support )
- TTS: I’ve tried both Kokoro and Piper over wyoming. On the same machine as above. Both exhibit this problem ( this docker at the moment GitHub - relvacode/kokoro-wyoming )