Can't get voice assistant with Google AI TTS

I’m trying to set up a smart speaker and I got it to the point where it’s reacting to the wake word. However when I ask anything the status switches to “playing” and stays there forever without any audio output. It does work when I choose the google translate tts but that’s really not a tts you want to use.

So, since it’s working with translate I can rule out any hardware defect and I can say the speaker is integrated into HA. Now how do I get google AI to work?

This is the speaker I’m using and this is the file I used to flash the board. Let me know if you need any other infos.

Edit: When I check the voice assistant debug I can also see that the stt and the language processing worked fine, it shows the proper response. TTS also shows no error, everything looks like it should work. Edge TTS does work as well and the only difference when I check under raw in the voice assistant debug is stream_response false for google ai and true for edge. Is this the issue? Is google sending the whole FLAC file at once and it’s too big for the speaker or something?

Sound like this issue? Assist not playing sounds - #2 by NathanCu

I played around with the settings a bit. I got it working through the ios app, but not with the speaker. But right now it doesn’t work at all. Whenever I try I get an unexpected error during intent recognition. When I check the logs I get a different error every time I try:

Logger: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/connection.py:175
integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 2:40:07 PM (23 occurrences)
Last logged: 3:54:19 PM

[140519975307040] Received binary message for non-existing handler 1
[140519969406336] Received binary message for non-existing handler 1
[140519961626240] Received binary message for non-existing handler 1
[140519980443072] Received binary message for non-existing handler 4
[140519912695392] Received binary message for non-existing handler 1

Logger: homeassistant.components.assist_pipeline.pipeline
Source: components/assist_pipeline/pipeline.py:1298
integration: Assist pipeline (documentation, issues)
First occurred: 2:40:44 PM (11 occurrences)
Last logged: 3:54:19 PM

Unexpected error during intent recognition
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/assist_pipeline/pipeline.py", line 1298, in recognize_intent
    conversation_result = await conversation.async_converse(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<9 lines>...
    )
    ^
  File "/usr/src/homeassistant/homeassistant/components/conversation/agent_manager.py", line 126, in async_converse
    result = await method(conversation_input)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/conversation/entity.py", line 55, in internal_async_process
    return await self.async_process(user_input)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/conversation/entity.py", line 68, in async_process
    return await self._async_handle_message(user_input, chat_log)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/google_generative_ai_conversation/conversation.py", line 83, in _async_handle_message
    await self._async_handle_chat_log(chat_log)
  File "/usr/src/homeassistant/homeassistant/components/google_generative_ai_conversation/entity.py", line 608, in _async_handle_chat_log
    [
    ...<6 lines>...
    ]
  File "/usr/src/homeassistant/homeassistant/components/conversation/chat_log.py", line 507, in async_add_delta_content_stream
    async for delta in stream:
    ...<91 lines>...
            )
  File "/usr/src/homeassistant/homeassistant/components/google_generative_ai_conversation/entity.py", line 333, in _transform_stream
    async for response in result:
    ...<95 lines>...
            yield chunk
  File "/usr/local/lib/python3.13/site-packages/google/genai/chats.py", line 473, in async_generator
    async for chunk in await self._modules.generate_content_stream(  # type: ignore[attr-defined]
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    ):
    ^
  File "/usr/local/lib/python3.13/site-packages/google/genai/models.py", line 7154, in generate_content_stream
    response = await self._generate_content_stream(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        model=model, contents=contents, config=parsed_config
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/google/genai/models.py", line 5925, in _generate_content_stream
    response_stream = await self._api_client.async_request_streamed(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        'post', path, request_dict, http_options
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/google/genai/_api_client.py", line 1449, in async_request_streamed
    response = await self._async_request(http_request=http_request, stream=True)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/google/genai/_api_client.py", line 1365, in _async_request
    return await self._async_retry(  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self._async_request_once, http_request, stream
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/tenacity/asyncio/__init__.py", line 111, in __call__
    do = await self.iter(retry_state=retry_state)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/tenacity/asyncio/__init__.py", line 153, in iter
    result = await action(retry_state)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/tenacity/_utils.py", line 99, in inner
    return call(*args, **kwargs)
  File "/usr/local/lib/python3.13/site-packages/tenacity/__init__.py", line 418, in exc_check
    raise retry_exc.reraise()
          ~~~~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.13/site-packages/tenacity/__init__.py", line 185, in reraise
    raise self.last_attempt.result()
          ~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.13/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ~~~~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.13/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.13/site-packages/tenacity/asyncio/__init__.py", line 114, in __call__
    result = await fn(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/google/genai/_api_client.py", line 1242, in _async_request_once
    data = json.dumps(http_request.data) if http_request.data else None
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/json/__init__.py", line 235, in dumps
    return _default_encoder.encode(obj)
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "/usr/local/lib/python3.13/json/encoder.py", line 202, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/local/lib/python3.13/json/encoder.py", line 263, in iterencode
    return _iterencode(o, 0)
  File "/usr/local/lib/python3.13/json/encoder.py", line 182, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
                    f'is not JSON serializable')
TypeError: Object of type time is not JSON serializable
Logger: homeassistant.components.conversation.util
Source: components/conversation/util.py:35
integration: Conversation (documentation, issues)
First occurred: 3:41:50 PM (4 occurrences)
Last logged: 3:52:23 PM

Last content in chat log is not an AssistantContent: UserContent(role='user', content='Wie viel Uhr ist es?', attachments=None, created=datetime.datetime(2026, 2, 12, 14, 41, 49, 558474, tzinfo=datetime.timezone.utc)). This could be due to the model not returning a valid response
Last content in chat log is not an AssistantContent: UserContent(role='user', content='Wieviel Uhr ist es?', attachments=None, created=datetime.datetime(2026, 2, 12, 14, 42, 44, 932819, tzinfo=datetime.timezone.utc)). This could be due to the model not returning a valid response
Last content in chat log is not an AssistantContent: UserContent(role='user', content='Wie viel Uhr ist es?', attachments=None, created=datetime.datetime(2026, 2, 12, 14, 45, 23, 401648, tzinfo=datetime.timezone.utc)). This could be due to the model not returning a valid response
Last content in chat log is not an AssistantContent: UserContent(role='user', content='Wie viel Uhr ist es?', attachments=None, created=datetime.datetime(2026, 2, 12, 14, 52, 22, 943463, tzinfo=datetime.timezone.utc)). This could be due to the model not returning a valid response

These are three different logs from three different tries of asking the same thing (the current time) on my phone. I checked google ai studio and I’m far from my limits.

Edit: I’m going crazy here. After making this post I tried one more time. And it works. Nothing changed, it just works.