Assist not playing sounds

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

I’m seeing a similar thing.

They changed a few things to support TTS streaming in 2026.1.x and ever since I’m also having issues.

Mine is primarily with the Android Companion. But can also repro with Assist in a chromium browser.

That looks like it describes it perfectly. I can’t believe my searches didn’t find that (ok, I can believe it). Thanks! I’ll follow that open issue.