TTS Silent in Automation Triggered by Voice (platform: conversation) - Manual TTS Works (HA 2025.10.4)

Hi everyone,

I’m struggling with an automation that should trigger on a voice command, fetch the daily weather forecast using weather.get_forecasts, and then speak the result using TTS. However, I’m encountering a persistent issue where the TTS part fails silently.

My Setup:

  • Home Assistant Core: 2025.10.4
  • Voice Assistant: ESPHome based (media_player.home_assistant_voice_0a2029_media_player)
  • TTS Service: Home Assistant Cloud (tts.cloud_say recommended, also tried tts.speak)
  • Weather Integration: Open-Meteo (Entity ID: weather.halalovka)

The Problem: When I trigger the automation using a voice command (e.g., “Aké bude počasie zajtra”), the automation runs (I hear the default “Done” response from the assistant), but the TTS message is never spoken.

What Works:

  • Manual TTS Test: Calling the tts.cloud_say service manually via Developer Tools → Services successfully plays audio on media_player.home_assistant_voice_0a2029_media_player.
  • Automation Trigger: The automation does trigger correctly on the voice command (verified by the “Done” response).
  • Open-Meteo Data: Diagnostics confirm the Open-Meteo integration is fetching data correctly.

What Fails:

  • The tts.cloud_say (or tts.speak) service call within the automation, when triggered by platform: conversation, produces no sound.
  • Even a simplified test automation (trigger + tts.cloud_say with a fixed message) fails silently, only resulting in “Done”.

Troubleshooting Steps Taken:

  1. Corrected Trigger Syntax: Ensured the trigger uses platform: conversation correctly.
  2. Verified Entity ID: Confirmed weather.halalovka is the correct Open-Meteo entity.
  3. Tried tts.speak and tts.cloud_say: Both fail silently in the automation context.
  4. Added delay:: Added a 1-second delay before the TTS call – no change.
  5. Checked response_variable: The automation reports “Error fetching data…” if weather.get_forecasts fails, but when it should work (based on diagnostics), the TTS is just silent.
  6. Simplified Automation: A simple trigger + fixed TTS message also fails silently (“Done”).

My Latest Automation Code (automations.yaml):

  alias: Pocasie - Predpoveď Zajtra (tts.cloud_say s Delay)
  description: Používa volanie služby weather.get_forecasts a tts.cloud_say s oneskorením
  mode: single
  trigger:
    - platform: conversation
      command: Aka je predpoved na zajtra
    - platform: conversation
      command: Aké bude počasie zajtra
  actions:
    - service: weather.get_forecasts
      target:
        entity_id: weather.halalovka 
      data:
        type: daily
      response_variable: denna_predpoved 
    - delay:
        seconds: 1 
    - service: tts.cloud_say
      data:
        entity_id: media_player.home_assistant_voice_0a2029_media_player
        cache: true
        message: >-
          {% set entity_key = 'weather_halalovka' %}
          {% if denna_predpoved is defined and denna_predpoved[entity_key] is defined and denna_predpoved[entity_key].forecast is defined %}
            {% set zajtra = denna_predpoved[entity_key].forecast[1] %}
            Predpoveď na zajtra je {{ zajtra.condition | replace('partlycloudy', 'polooblačno') | replace('cloudy', 'oblačno') | replace('sunny', 'slnečno') | replace('rainy', 'dážď') | replace('pouring', 'liak') | replace('lightning-rainy', 'búrka') | replace('clear-night', 'jasná noc') }}
            s maximálnou teplotou {{ zajtra.temperature | default(0) | round(0) }}
            a minimálnou {{ zajtra.templow | default(0) | round(0) }} stupňov.
            Pravdepodobnosť zrážok je {{ zajtra.precipitation_probability | default(0) | round(0) }} percent.
          {% else %}
            Ospravedlňujem sa, dáta o predpovedi nie sú dostupné. (Chyba získania dát z entity {{ entity_key }})
          {% endif %}```

It seems like there might be a timing issue, a conflict with the voice assistant releasing the audio channel, or potentially a bug in HA Core 2025.10.4 related to `platform: conversation` and immediate TTS execution on the same device.

Has anyone encountered similar behavior or have any suggestions on how to debug this further?

Thanks!

Have you tried a short delay after the message to give it time to play before the automation finishes?

Is the 255 character limit in place there?

Hi everyone,

Thank you for the suggestions!

jackjourneyman Jack - Adding a delay (I used 5-10 seconds) after the tts.cloud_say service call partially helped. Now I can hear the full error message (“Ospravedlňujem sa, dáta o predpovedi nie sú dostupné… / Sorry, forecast data is not available…”) before the assistant says “Done”. Previously, the TTS message was cut off.

Sir_Goodenough (SG) WhatAreWeFixing - To test the character limit idea, I replaced the complex Jinja template in the message: field with a simple word “Test”. This worked correctly – the assistant said “Test” and then “Done”.

This confirms that:

The platform: conversation trigger is working.

The tts.cloud_say service can produce sound in this automation context.

The issue seems to be specifically when trying to process the data from weather.get_forecasts within the message template, or the weather.get_forecasts service call itself is failing to populate the response_variable (denna_predpoved) when triggered by voice, even though my Open-Meteo diagnostics show the integration does have the forecast data.