eu copiei(aqui do forum) e editei á minha maneira para usar no meu dashboard com o full kiosk, e funcionou bem durante uns tempos até uma actualização estragar tudo 
na questão do fast-whisper + piper não funcionar bem, já alguem aqui apresentou uma solução, eu é que não tive tempo de a implementar ainda. Como vocês têm a configuração da Voz em PT-PT? - #3 por kappa
alias: TTS estado do tempo dashboard1 teste2
sequence:
- action: weather.get_forecasts
target:
entity_id: weather.mira
data:
type: daily
response_variable: previsao
- action: tts.speak
metadata: {}
data:
cache: true
media_player_entity_id: media_player.53d85ba5_cb55ab03
message: |
{%- set tempo = {
'clear-night': 'limpo',
'cloudy': ['nublado','com algumas nuvens']|random,
'fog': ['enevoado','com muito nevoeiro','de nevoeiro','com nevoeiro']|random,
'hail': ['com chuviscos','de chuva fraca','com chuva fraca']|random,
'lightning': ['com relâmpagos','de trovoada']|random,
'lightning-rainy': ['de tempestade','com relâmpagos e trovoadas']|random,
'mostlycloudy': ['muito nublado','com muitas nuvens']|random,
'partlycloudy': ['parcialmente nublado','com nuvens dispersas']|random,
'pouring': ['muito chuvoso','de chuva intensa','com chuva intensa']|random,
'rainy': ['chuvoso','de chuva']|random,
'snowy': ['com neve','de neve']|random,
'snowy-rainy': ['chuvoso e com neve','de chuva e neve','com chuva e neve']|random,
'sunny': ['de sol','ensolarado','de sol maravilhoso','lindo','limpo']|random,
'windy': ['ventoso','com muito vento','com ventos fortes','de muito vento']|random,
'windy-variant': ['muito ventoso','de forte vendaval','com grande vendaval'] } -%}
{%- if states('binary_sensor.53d85ba5_cb55ab03_browser_charging') == 'on' -%}
{%- set pessoa = "Luis! " -%}
{%- elif states('binary_sensor.presenca_marta') == 'on' -%}
{%- set pessoa = "Valentina! " -%}
{%- elif states('binary_sensor.modo_dormir_pedro') == 'off' -%}
{%- set pessoa = "Luis! " -%}
{%- elif states('binary_sensor.modo_dormir_marta') == 'off' -%}
{%- set pessoa = "Valentina! " -%}
{%- else -%}
{%- set pessoa = ", " -%}
{%- endif -%}
{%- if (states('sun.sun') == 'above_horizon') and (now().strftime("%H")|int < 12) -%}
{%- set cumpri = " Bom dia " -%}
{%- elif (states('sun.sun') == 'above_horizon') and (now().strftime("%H")|int > 12) -%}
{%- set cumpri = " Boa tarde " -%}
{%- elif states('sun.sun') == 'below_horizon' -%}
{%- set cumpri = " Boa noite " -%}
{%- else -%}
{%- set cumpri = ", " -%}
{%- endif -%}
{%- if (states('sensor.esp32_co2_senseair_co2')|int < 500) and (states('sensor.esp32_co2_senseair_co2')|int > 1) -%}
{%- set qualidade = " Excelente " -%}
{%- elif (states('sensor.esp32_co2_senseair_co2')|int < 800) and (states('sensor.esp32_co2_senseair_co2')|int > 501) -%}
{%- set qualidade = " Boa " -%}
{%- elif (states('sensor.esp32_co2_senseair_co2')|int < 1500) and (states('sensor.esp32_co2_senseair_co2')|int > 801) -%}
{%- set qualidade = " Fraca " -%}
{%- elif (states('sensor.esp32_co2_senseair_co2')|int < 2000) and (states('sensor.esp32_co2_senseair_co2')|int > 1501) -%}
{%- set qualidade = " Muito Fraca " -%}
{%- elif (states('sensor.esp32_co2_senseair_co2')|int > 1501) -%}
{%- set qualidade = " Extremamente fraca " -%}
{%- else -%}
{%- set qualidade = " Desconhecida " -%}
{%- endif -%}
{%- if (states('sensor.maquina_de_secar_roupa_remaining_time')[0:-6])|int == 0 -%}
{%- set tempomaqsecar = ((states('sensor.maquina_de_secar_roupa_remaining_time')[2:-3])|string) + " minutos " -%}
{%- elif (states('sensor.maquina_de_secar_roupa_remaining_time')[0:-6])|int == 1 -%}
{%- set tempomaqsecar = ((states('sensor.maquina_de_secar_roupa_remaining_time')[0:-6])|string) + " hora, e " + ((states('sensor.maquina_de_secar_roupa_remaining_time')[2:-3])|string) + " minutos " -%}
{%- elif (states('sensor.maquina_de_secar_roupa_remaining_time')[0:-6])|int > 1 -%}
{%- set tempomaqsecar = ((states('sensor.maquina_de_secar_roupa_remaining_time')[0:-6])|string) + " horas, e " + ((states('sensor.maquina_de_secar_roupa_remaining_time')[2:-3])|string) + " minutos " -%}
{%- else -%}
{%- set tempomaqsecar = " tempo Desconhecido " -%}
{%- endif -%}
{%- if (states('sensor.maquina_de_lavar_roupa_de_abertura_frontal_remaining_time')[0:-6])|int == 0 -%}
{%- set tempomaqlavar = ((states('sensor.maquina_de_lavar_roupa_de_abertura_frontal_remaining_time')[2:-3])|string) + " minutos " -%}
{%- elif (states('sensor.maquina_de_lavar_roupa_de_abertura_frontal_remaining_time')[0:-6])|int == 1 -%}
{%- set tempomaqlavar = ((states('sensor.maquina_de_lavar_roupa_de_abertura_frontal_remaining_time')[0:-6])|string) + " hora, e " + ((states('sensor.maquina_de_lavar_roupa_de_abertura_frontal_remaining_time')[2:-3])|string) + " minutos " -%}
{%- elif (states('sensor.maquina_de_lavar_roupa_de_abertura_frontal_remaining_time')[0:-6])|int > 1 -%}
{%- set tempomaqlavar = ((states('sensor.maquina_de_lavar_roupa_de_abertura_frontal_remaining_time')[0:-6])|string) + " horas, e " + ((states('sensor.maquina_de_lavar_roupa_de_abertura_frontal_remaining_time')[2:-3])|string) + " minutos " -%}
{%- else -%}
{%- set tempomaqlavar = " tempo Desconhecido " -%}
{%- endif -%}
{%- set estado = states('weather.forecast_inicio') -%}
{%- set condicoes = tempo[estado] -%}
{%- set texto = cumpri + ' ' -%}
{%- set texto = texto + pessoa + ' São agora ' + as_local(now()).strftime("%H horas %M minutos") + '. ' -%}
{%- set texto = texto + ["Lá fora","No exterior","Na rua"]|random + ', estão ' + state_attr('weather.forecast_inicio','temperature')|round(default=0)|string + ' graus, e vai estar um dia ' -%}
{%- set texto = texto + tempo[previsao['weather.mira'].forecast[0].condition] + ', com mínima de ' + previsao['weather.mira'].forecast[0].templow|round(default=0)|string + ' e máxima de ' + previsao['weather.mira'].forecast[0].temperature|round(default=0)|string + ' graus' + ' !' -%}
{%- set texto = texto + ' Hoje está previsto produzir ' + states('sensor.solcast_pv_forecast_forecast_today')|round(default=0)|string + ' Kilowatts de energia Solar' + '. ' -%}
{%- set texto = texto + ' A Casa está a uma temperatura de ' + states('sensor.shelly_cilindroagua_temperature')|round(default=0)|string + ' graus, ' + ' com ' + states('sensor.53d85ba5_cb55ab03_browser_battery')|round(default=0)|string + ' porcento de humidade relativa! ' + ' a qualidade do ar dentro de casa está ' + qualidade + ' !' -%}
{%- if states('switch.maquina_de_secar_roupa_power') == 'on' -%}
{%- set texto = texto + ' Falta ' + tempomaqsecar + ' para a máquina de secar terminar o ciclo! ' -%}
{%- endif -%}
{%- if states('switch.maquina_de_lavar_roupa_de_abertura_frontal_power') == 'on' -%}
{%- set texto = texto + ' Falta ' + tempomaqlavar + ' para a máquina de lavar roupa terminar o ciclo! ' -%}
{%- endif -%}
{%- if states('binary_sensor.53d85ba5_cb55ab03') == 'on' -%}
{%- set texto = texto + 'ATENÇÃO: Há um ' + state_attr('binary_sensor.alarme_meteorologico_evora','headline') + ' e prevê-se ' + state_attr('binary_sensor.alarme_meteorologico_evora','description') + '.' -%}
{%- endif -%}
{{-texto-}}
options:
voice: pt_PT-tugão-medium
target:
entity_id: tts.piper
description: descreve o estado do tempo no dashboard1
icon: mdi:microphone-message
este código diz mais do que a metereologia, diz as condições exteriores e interiores da casa… foi um teste que fiz á pouco tempo.