Projet voice control

Juste pour info, si vous voulez rapidement switcher d’une version ESPhome à une autre plus ancienne , il y a ce dépot à ajouter aux modules complémentaires :

1 « J'aime »

Bonsoir,
Je suis toujours en ESPHome 2024.4.2, rien vu passer comme correctif audio dans les versions jusqu’à la 2024.5.4, pareil pour vous ?
Bob

1 « J'aime »

Oui, a croire que c’est pas important.

Salut,
ESPHOME 2024.5.5 corrige les problèmes avec esp- IDF 4.4.7 et voice assistant.

1 « J'aime »

Bonsoir,
OK @WarC0zes, je vais tester ça demain.
Bob

Salut,
Maj avec ESPHOME 2024.5.5 et esp-idf en 4.4.7 sur un Atom echo et tout fonctionne.
image

1 « J'aime »

Ah ! le mois du silence est terminé ??? :grin:

2 « J'aime »

Bonjour,
passage à ESPHome 2024.5.5 puis retour à la 2024.4.2, mon système répond une fois puis plus rien.
Pas le temps de refaire mes yaml à chaque fois. Je testerai plus tard la version 2024.5.5 sur le 16-r8 avec le code que j’ai gardé de @krull avec esp-idf.

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: esp-idf
    version: recommended
    sdkconfig_options:
      CONFIG_ESP32_S3_BOX_BOARD: "y"

Bob

Salut,
j’ai vu que des utilisateurs avec des S3 BOX avait quand même des soucis avec la 2024.5.5.
Sur mon atom echo, ca fonctionne mais j’ai des bugs de son qui avais plus depuis la 2024.4.0.
Vraiment bancale la 2024.5.x …
Faut que je repasse au esp-idf 4.4.6 :frowning:

les S3 marchent avec la derniere version en date.
j’ai une s3-box-3 et une S3-box-lite, elles ont du son depuis… pas longtemps !!!
edit : 2024.5.5 après verification.

il ne reste plus que mon M5stickc qui reste muet comme une carpe.

J’ai mis en standby le M5Stick, je trouve pas de solution pour bien utiliser le micro et speaker.
J’ai demander de l’aide sur le forum anglais, pas une réponse en 1 mois :thinking:

Les ESP32-S3-BOX marchent pas mal, mais le wake-word est assez capricieux.
c’est encore le mot Alexa qui marche le mieux.

j’avais fait les essais avec le M5 juste après avoir tout réinstallé mon HA.
impossible d’entendre quoi que ce soit… et après je me suis aperçu que l’atom echo ne marchait plus non plus.
j’ai reçu le S3 BOX 3, pareil, pas de son…
j’avais un S3-Lite au fond d’un tiroir, j’ai vu un fw

packages:
  esphome.voice-assistant: github://esphome/firmware/wake-word-voice-assistant/esp32-s3-box-lite.yaml@main

sur le github esphome. j’ai testé et rien…

j’ai viré et réinstallé tout ce qui était Wyoming sans succès.
mais mon feather_esp32_v2 continuait à marcher, lui… :scream_cat:
mais il était en framework arduino. :melting_face:
jusqu’à ce que je comprenne que c’était l’idf qui plantait tout… :disguised_face:

j’ai vu ton post sur HAcomnunity… regarde sur le discord, il suffit que quelqu’un de réfléchi passe par là à ce moment… :wink:

Salut à tous,

Bien content de voir qu’il existe un thread sur les assistant vocaux à base d’esp32. J’ai tenté d’avoir des infos sur les différents discords mais j’ai souvent du me débrouiller tout seul. Ce que j’ai voulu faire:
Remplacer mon Amazon Echo Dot avec un Atom Echo branché à ChatGPT via Home Assistant Assist et avoir la réponse sur le Amazon Echo Dot sous forme de requête /notify qui fait lire à Alexa la réponse plutôt que devoir enregistrer puis encore un fichier audio et l’envoyer (ce que j’ai aussi fait mais c’était un peu long). En plus de ça, j’en profite d’avoir le texte pour pouvoir l’envoyer sur ma pixel clock Ulanzi et il apparait en scrollant.

Donc, j’ai bien réussi mais en modifiant directement le code du component OpenAI Extended. Pour la partie ou j’envoyais l’audio, c’était en modifant le yaml via lambda et en envoyant vers le media_player Echo Dot. Par contre il m’a fallu aussi modifier le code du component Amazon Alexa car il ne comprenait pas l’url envoyée, donc nettoyage de l’url et encodage obligatoire.

J’ai un peu pété les plombs car comme vous le savez l’Atom Echo stoppait de répondre au bout d’un moment et j’ai tout essayé. J’ai bien compris qu’il y avait un truc avec l’idf surement. Je n’ai pas encore essayé les contournements mentionnés au dessus car je viens de recevoir mon ESP32-KORVO. Il marche bien mais j’ai aussi l’impression que quand je rentre chez moi le soir il n’est plus opérationnel et qu’il faut que je le reboot (à confirmer).

BREF! Ce que j’aimerai faire c’est ne pas passer par la modification du code des components car il s’écrase évidemment après chaque maj de ceux-ci. Donc, pensez vous qu’il serait possible via une Automation de récupérer le texte de la réponse d’un Assist lors d’une demande via nos Esp32 ? Si cela est faisable directement dans le yaml du device ce serait le top sinon via Home Assistant directement. Tant que j’ai le texte, ensuite je sais comment l’envoyer ailleurs. Tout ça c’est essentiellement pour m’amuser (je viens de recevoir un s3 n32r8 et un inmp41) mais in fine j’aimerai bien faire un appareil tout en un, hauts parleurs, esp32, micro qui fasse assistant I.A et lecteur de musique, soit totalement fait maison soit même en modifiant un enceinte Bluetooth pas chère qui ferait le taff (comme j’ai vu dans une vidéo avec une enceinte wallmart). Je vous pose ici les 3 petites vidéos que j’ai faite montrant mon petit setup.

Ce sont les dernières vidéo sur ma chaine YouTube @jacquesdupontd

Merci pour cette longue lecture et ce thread.

Hello les Assist-Addicts

Vous me connaissez, dès qu’il y a une petite nouveauté concernant la voix, je m’empresse de tester :crazy_face: :joy:

Esphome 2024.7 est arrivé, et avec lui comme annoncé dans le Voice Chapter 7, une nouvelle version du Micro Wake Word, plus performante.
Pour l’instant les paramètres de la VAD ne sont pas pris en compte mais à part ça ça fonctionne très bien.

Ci-dessous mon petit code à l’arrache sur un ESP32-S3 N16R8 qui intègre pas 1, ni 2 mais 3 micro wake word ( okay_nabu, hey_jarvis et Alexa) …

Amusez-vous bien

esphome:
  name: satellite
  friendly_name: Satellite
  platformio_options:
    board_build.flash_mode: dio

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf
    version: 4.4.6
    sdkconfig_options:
      CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
      CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
      CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y"
      CONFIG_AUDIO_BOARD_CUSTOM: "y"

   
psram:
  mode: octal
  speed: 80MHz

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

  on_client_connected:
        then:
          - delay: 50ms
          - light.turn_off: led_ww
          - micro_wake_word.start:
  on_client_disconnected:
        then:
          - voice_assistant.stop: 


ota:
  - platform: esphome
    password: "xxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Satellite Fallback Hotspot"
    password: "xxxxxxxxx"

captive_portal:
    

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

switch:
  - platform: template
    id: mute
    name: mute
    optimistic: true
    on_turn_on: 
      - micro_wake_word.stop:
      - voice_assistant.stop:
      - light.turn_on:
          id: led_ww           
          red: 100%
          green: 0%
          blue: 0%
          brightness: 60%
          effect: fast pulse 
      - delay: 2s
      - light.turn_off:
          id: led_ww
      - light.turn_on:
          id: led_ww           
          red: 100%
          green: 0%
          blue: 0%
          brightness: 30%
    on_turn_off:
      - micro_wake_word.start:
      - light.turn_on:
          id: led_ww           
          red: 0%
          green: 100%
          blue: 0%
          brightness: 60%
          effect: fast pulse 
      - delay: 2s
      - light.turn_off:
          id: led_ww 

light:
  - platform: esp32_rmt_led_strip
    id: led_ww
    rgb_order: GRB
    pin: GPIO8
    num_leds: 2
    rmt_channel: 0
    chipset: ws2812
    name: "on board light"
    effects:
      - pulse:
      - pulse:
          name: "Fast_Pulse"
          transition_length: 0.5s
          update_interval: 0.5s
          min_brightness: 0%
          max_brightness: 100%

i2s_audio:
  - id: i2s_in
    i2s_lrclk_pin: GPIO5  #ws
    i2s_bclk_pin: GPIO6   #sck
  - id: i2s_out
    i2s_lrclk_pin: GPIO46
    i2s_bclk_pin: GPIO9



microphone:
  - platform: i2s_audio
    id: va_mic
    adc_type: external
    i2s_din_pin: GPIO4 #SD
    channel: left
    pdm: false
    i2s_audio_id: i2s_in
    bits_per_sample: 32bit

speaker:
    platform: i2s_audio
    id: va_speaker
    i2s_audio_id: i2s_out
    dac_type: external
    i2s_dout_pin: GPIO10  
    mode: mono

micro_wake_word:
  vad:
  models:
    - model: okay_nabu
    - model: hey_jarvis
    - model: alexa
  on_wake_word_detected:
    then:
      - voice_assistant.start:
          wake_word: !lambda return wake_word;
      - light.turn_on:
          id: led_ww           
          red: 0%
          green: 0%
          blue: 100%
          brightness: 100%
          effect: Fast_Pulse

voice_assistant:
  id: va
  microphone: va_mic
  speaker: va_speaker
  noise_suppression_level: 2
  auto_gain: 31dBFS
  volume_multiplier: 4

  on_stt_end:
       then: 
         - light.turn_off: led_ww
  on_error:
          - micro_wake_word.start:  
  on_end:
        then:
          - light.turn_off: led_ww
          - wait_until:
              not:
                voice_assistant.is_running:
          - micro_wake_word.start:  

@+

Bonsoir @Krull56
Top, merci, je vais ressortir mon ESP32-S3 N16R8 que j’avais acheté spécialement pour ça.
Depuis j’etais resté sur un autre modèle qui fonctionne bien 4mo de PSRAM je crois et j’utilise un ESP32 classique comme média player pour différent messages d’automatisation, ça évite d’allumer l’ampli.
Je pourrais tester demain soir je pense.
Merci
Bob

J’étais sûr que tu serais le premier réagir :grin:

Bonne soirée voisin

PS: j’ai aussi testé sur un korvo v1 à base d’esp32 wroover ( code dispo dans un autre post) c’est nickel aussi.
Pas besoin de S3 tant qu’il y a de la psram :wink:

J’avais un peu laisser tomber, je n’ai plus mis à jour mes ESP32 vocaux depuis les soucis que j’avais eu, une requête OK puis plus rien, je vais tester sur ce modèle et laisser tranquille celui qui fonctionne :smirk:
Tu n’utilises plus Porcupine pour un wake word en français voisin?
Bonne soirée
Bob

J’utilise encore Porcupine sur un de mes satellites.

Sur le korvo j’ai mis un sélecteur micro wakeword ou wakeword du pipeline ( Porcupine ) . Un click et ça bascule :wink:

Après, les micro wakeword réagissent très bien et sans accent shakespearien :grin:

1 « J'aime »

Hello,

j’ai vu ce matin que mes esp32-s3-box-* me proposaient une MàJ, ainsi que esphome 2024.7.0

bon… les versions 0 c’est pas toujours très bon… :grin: mais comme j’ai 2 esp32-s3-box, je vais en tester une.
le clic sur la mise à jour se passe bien, mais à la fin le bouzin reboote et reste en attente, avec le vieux logo avec les 3 points, et qui passe en no-wifi.
un device a été détecté en bluetooth, je vais voir. il me demande mes credentials wifi. mais ce que je rentre ne lui plait pas.
pas grave, je recompile via esphome, mais il me jette avec un message abscons de modèle qui va pas.
je fais la maj de juillet pour esphome et la compilation via le cable usb se passe nickel chrome.

la detection est un poil meilleure et surtout si je reprononce le wake word après une premiere détection, elle fonctionne correctement alors qu’avant il était impossible en cas d’erreur de poser une seconde question…
le code est directement extrait des templates, juste rajouté la tête de la copine à jlo :melting_face:

substitutions:
  name: esp32-s3-box-3
  friendly_name: ESP32 S3 Box 3

  #micro_wake_word_model: okay_nabu
  #micro_wake_word_model: hey_jarvis
  micro_wake_word_model: alexa

  loading_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/ava_midjourney/illustrations/loading.png
  idle_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/ava_midjourney/illustrations/idle.png
  listening_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/ava_midjourney/illustrations/listening.png
  thinking_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/ava_midjourney/illustrations/thinking.png
  replying_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/ava_midjourney/illustrations/replying.png
  error_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/ava_midjourney/illustrations/error.png

packages:
  esphome.voice-assistant: github://esphome/firmware/wake-word-voice-assistant/esp32-s3-box-3.yaml@main

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  name_add_mac_suffix: false

esp32:
  board: esp32s3box
  flash_size: 16MB
  framework:
    type: esp-idf
#    version: 4.4.6 #pour bug voix

api:
  encryption:
    key: XGECylfikOfUpGwj9aofyY6dkK64af1NcF0s8RLUHDw=

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: True
  manual_ip:
   static_ip: 192.168.1.63
   gateway: 192.168.1.1
   subnet: 255.255.255.0
   dns1: 192.168.1.2
   dns2: 192.168.1.1

web_server:
  port: 80

faudrait que je modifie le tout pour avoir le choix entre plusieurs wake word et plusieurs images via la site web embarqué…

Hello @bentou

Regarde mon code plus haut , tu as juste à modifier la partie micro wakeword de ton code et ça roule ( 3 mww simultanés dans mon exemple)

micro_wake_word:
  vad:
  models:
    - model: okay_nabu
    - model: hey_jarvis
    - model: alexa
  on_wake_word_detected:
    then:
      - voice_assistant.start:
          wake_word: !lambda return wake_word;
      

@+