Bloc action TTS des automatisations qui s'exécute toutes les minutes

Bonsoir,
j’ai un souci avec les blocs d’action TTS sur un media_player ESP32.
Lorsque l’automatisation est exécutée, le message vocal est ensuite répété toutes les minutes.
Rien de particulier dans les log de l’ESP32, le mp3 généré par l’automatisation est bien supprimé de \192.168.1.32\config\tts, il le retrouve peut être en cache !
Donc toutes les minutes j’ai le droit au message sur mon media_player !!!

C’est une automatisation est lancée via un bouton:

L’automatisation, la seule qui n’a pas de trigger, c’est peut être le problème et je devrais sans doute passer par un script ?
Rien dans l’historique d’exécution lors de la diffusion de message, les autres actions ne sont pas exécutées.
C’est un problème très récent .

alias: Localisation iPhone Bob
description: ""
triggers: []
conditions: []
actions:
  - metadata: {}
    data:
      message: Mon iPhone est ici
      title: Phone
      data:
        push:
          sound:
            name: default
            critical: 1
            volume: 1
    action: notify.mobile_app_iphone_x2
  - action: tts.speak
    metadata: {}
    data:
      cache: true
      media_player_entity_id: media_player.esp32_voice_control_1_mediasat1
      message: >-
        Il est {{ now().strftime('%H:%M')}}, as-tu trouvé ton téléphone situé
        {{state_attr('sensor.iphone_x2_geocoded_location','Name') }} ? 
    target:
      entity_id: tts.piper
  - delay:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
  - action: tts.clear_cache
    metadata: {}
    data: {}
mode: single

Après redémarrage, fin des messages, à suivre.
EDIT: même souci avec une autre automatisation « TTS », qui elle a un déclencheur !
Pour résumer, une fois l’automatisation déclenchée, le message se répète sans arrêt toutes les minutes, je dois redémarrer HA pour stopper le problème.
Je pense que c’est depuis la dernière maj HA ou ESPHome builder.
Bob

Salut,
pourquoi tu le mets en cache ?

Avec cache: false et supprimer :

  - delay:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
  - action: tts.clear_cache
    metadata: {}
    data: {}

Ça donne quoi ?

Bonjour @WarC0zes
J’ai suivi ton idée, puis j’ai rechargé les automatisations, pas mieux, redémarrer HA pour voir mais pas mieux.
Ce n’ai pas l’automatisation qui diffuse les messages toutes les minutes car j’ai le même problème si je désactive l’automatisation.
Donc côté ESP32 j’ai fait un « clean build files » et flasher, mais toujours le problème (ESPHome builder : 2025.3.3).
Extrait code ESP32 media_player:

captive_portal:

# voice assistant
i2s_audio:
  - id: i2s_in
    i2s_lrclk_pin: GPIO26   #WS / LRC
    i2s_bclk_pin: GPIO25    #SCK /BCLK

microphone:
  - platform: i2s_audio
    adc_type: external
    pdm: false
    id: mic_i2s
    bits_per_sample: 32bit
    i2s_audio_id: i2s_in
    i2s_din_pin: GPIO33    #SD
    
media_player:
  - platform: i2s_audio
    id: mediasat1
    name: "mediasat1"
    i2s_dout_pin: GPIO27
    dac_type: external
    mode: mono


button:
  - platform: restart
    id: reboot
    name: "Reboot V1"

switch:

  - platform: gpio
    name: "LedBleu2"
    id: led
    pin: 2

# Example configuration entry
web_server:
  port: 80
    

Je viens aussi de tester une autre automatisation sur mon assistant vocal ESP32:

alias: Vocale faire sonner iPhone
description: ""
triggers:
  - command:
      - Où est mon téléphone
      - Fait sonner mon téléphone
      - J'ai perdu mon téléphone
    trigger: conversation
conditions: []
actions:
  - metadata: {}
    data:
      message: Mon iPhone est ici
      title: Phone
      data:
        push:
          sound:
            name: default
            critical: 1
            volume: 1
    action: notify.mobile_app_iphone_x2
  - delay:
      hours: 0
      minutes: 0
      seconds: 1
      milliseconds: 0
  - set_conversation_response: >-
      Il est {{ now().strftime('%H:%M')}}, Bruno, as-tu trouvé ton téléphone
      situé {{ state_attr('sensor.iphone_x2_geocoded_location','Name') }}, bonne
      journée Bruno.
mode: single

Même problème, il me répète le message toutes les minutes.
Une vraie cacophonie à la maison :wink:

Bob

1 « J'aime »

Je n’ai pas de esp avec media_player, je ne peux pas tester. Le TTS fonctionne bien sur mes Google Home, je n’ai pas ce problème.
Ça viendrait de esphome, je pense a voir les issues :

Ok, merci @WarC0zes, je n’ai pas eu le reflexe d’aller voir les issues.
Le reboot de l’ESP permet de mettre fin au message.
C’est moche mais j’ai ajouté ça dans l’automatisation après la partie TTS.
Je vais attendre la correction ESPHome Builder :wink:

  - delay:
      hours: 0
      minutes: 0
      seconds: 20
      milliseconds: 0
  - action: button.press
    metadata: {}
    data: {}
    target:
      entity_id: button.esp32_voice_control_1_reboot_v1

Bob

1 « J'aime »

Salut @Bob,
un nouveau ESPHome 2025.4.0 est sortie, je pense qu’il y a un fix pour ton problème :

image

Bonjour @WarC0zes
tu te lèves aux aurores :wink:
J’ai fais la mise à jour mais je pense que l’issue :

n’est pas corrigée, toujours le souci :wink:
Merci pour cette pensée très matinale.
J’ai commenté l’issue :wink:
Bob

Suite au message privé d’un ami :wink: j’ai fait ceci et ça fonctionne:

Remplacement de :

esp32:
  board: esp32dev
  framework:
    type: arduino

Par:

esp32:
  board: esp32dev
  framework:
    type: esp-idf

Et remplacement de :

media_player:
  - platform: i2s_audio
    id: mediasat1
    name: "mediasat1"
    i2s_dout_pin: GPIO27
    dac_type: external
    mode: mono

Par :

speaker:
  - platform: i2s_audio
    id: output_speaker
    i2s_dout_pin: GPIO27
    dac_type: external    
    bits_per_sample: 32bit
    channel: right
    buffer_duration: 60ms

media_player:
  - platform: speaker
    name: "mediasat1"
    id: mediasat1
    announcement_pipeline:
      speaker: output_speaker
      format: WAV
    codec_support_enabled: false
    buffer_size: 6000
    on_pause:
      - logger.log: "Playback paused!"
    on_idle:
      - logger.log: "Playback finished!"

Merci.
Bob

1 « J'aime »

je me doute de qui c’est, le pro du voice assistant :wink:
qu’on le voit plus ces derniers mois.

1 « J'aime »

Bon, ça fonctionne pour l’ESP32 qui fait juste player, pour l’assistant vocal, non et en plus je retombe sur un problème que j’avais déjà rencontré, ça fonctionne une fois (la requête vocale) et ensuite plus de détection.
C’est assez pénible ces changements fréquents sur ESPHome !

Bob

Oui, j’avoue… je ne peux plus compiler le firmware pour mon atom echo , ça demande trop au RPI4 maintenant et le fais crash.

Oui parfois je dois arrêter NodeRed, InfluxDB et tout ce que je peux pour avoir assez de mémoire sur les 4Go.
Bob

Sans compter qu’une fois recompilé, tu n’est pas certain que tout fonctionne et il te vire l’ancien binaire qui marchait…
faudrait pouvoir mettre un flag pour laisser la version telle qu’elle est et gérer un historique de plusieurs versions de firmware sur le rpi/pc…
pasque là c’est le foutware !!!

1 « J'aime »

AH , ça serait un problème de RAM, le plantage sur RPI4. J’ai que 2GO/4GO utilisé.

Retour à la version 2024.12.1 d’ESPHome, toujours le problème, il y a peut-être aussi un souci côté HA non ?
Bob

En compil ESP-IDF je tombais sous les 500 Mo et ça plantait d’où l’arrêt du maximum de modules avant de compiler.
Bob

Ok, donc ça consomme pas mal en RAM. Pour les restes des compilations, bluetooth proxy ou autre esp32 en esp-idf, ne pose pas de problème.

Salut @Bob,
Finalement, j’ai installé ESPHome sur mon minipc sous win11 et j’ai mis à jour mon atom echo avec le firmware wake-word-voice-assistants, qui inclut le media_player.
Ça fonctionne bien, en plus j’ai supprimé l’esp de HA et a la réinstallation, ça m’a proposé d’utiliser en local avec speech to phrase. L’installation, c’est faite automatiquement et ça fonctionne plutôt bien sur un RPI4.
Du coup j’ai supprimé VOSK.