Projet voice control

Un peu pareil chez moi, une quinzaine d’ESP32 posés ici et là :slight_smile: Pour l’écran tactile 2.8 pouce c’est tout bon, un peu d’ergo à faire, pour le ili9488 (2 fois la taille du ili9341), je compte publier prochainement car j’ai pu tout faire fonctionner aussi.
Bob

Bonjour,
avec snowboy comme wakeword et le sensibilité sur 1, ca fonctionne bien pour l’ATOM echo.


a plusieurs mètres (3m) du micro ca détecte bien la commande. Alors qu’avec la sensibilité sur 0.5, fallait être coller au micro pour qu’il capte la commande.

Hello @WarC0zes,

Au top la vidéo, par contre, comment tu fais pour avoir un retour aussi rapide ? Moi ça met 10 plombes et ça ne comprend jamais rien…

Salut,
J’utilise Vosk a la place de Whisper, c’est plus rapide comme tu le vois sur RPI.
Et j’utilise Snowboy pour le wakeword.

Regarde ce post Year of the voice - Chapitre 5, c'est ce mercredi

1 « J'aime »

Snowboy fonctionne vraiment bien de loin avec tes paramètres merci :slight_smile:
Quelqu’un serait comment faire pour faire un wakeword personnalisé avec snowboy ?
Est-ce que ce site fonctionne ou bien c’est seulement compatible avec openwakeword ?

La réponse pour snowboy est dans ce fil :wink:

Year of the voice - Chapitre 5, c’est ce mercredi - Communauté HACF / BlaBlaBla & Suggestions - Home Assistant Communauté Francophone

Pour le site que tu mentionne, c’est pour openwakeword et n’utilise qu’un dictionnaire Anglais, donc pas de wakeword perso vraiment fonctionnel avec un accent français ( plusieurs tests effectués dès le début et m^me en phonétique)

perso, j’utilise principalement porcupine ( pas le porcupine1), référence dans le fil cité, et snowboy dans des pièces plus silencieuses car il y a un peu plus de faux positifs

Bon dimanche :wink:
Une idée de HP à monter sur un Max98357 pour un test et commande sur Ali :wink:
Bob

Bonjour a tous,
Je viens de lire ce fil dans son intégralité (trés interessant)
je me considère comme débutant averti sur HA
voici mes questions
en partant d’un esp32 wrom et seulement un micro INMP441
sur la base du post 11 de @Krull56 est t’il possible de faire un
système « minimaliste » ?
si oui quel firmware injecter dans l’ESP32 ?
par avance merci de vos réponses.

Hello,

Bien sûr, tu peux faire un système plus minimaliste sans HP ni LED.
Il suffit de retirer les lignes correspondantes à ces éléments dans le Yaml que j’ai indiqué précédemment, ce qui donne :

esphome:
  name: satellite-Base
  friendly_name: Satellite-Base
  on_boot:
     - priority: -100
       then:
         - wait_until: api.connected
         - delay: 1s
         - if:
             condition:
               switch.is_on: use_wake_word
             then:
               - voice_assistant.start_continuous:

esp32:
  board: esp32dev
  framework:
    type: arduino
   

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: xxxxxx

ota:
  password: yyyyyyyy

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

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

captive_portal:



i2s_audio:
  - id: i2s_in
    i2s_lrclk_pin: GPIO25
    i2s_bclk_pin: GPIO32

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



voice_assistant:
  id: va
  microphone: mic_i2s
  use_wake_word: true
  noise_suppression_level: 2
  auto_gain: 0dBFS
  volume_multiplier: 4.0



switch:

  - platform: template
    name: Use wake word
    id: use_wake_word
    optimistic: true
    restore_mode: RESTORE_DEFAULT_ON
    entity_category: config
    on_turn_on:
      - lambda: id(va).set_use_wake_word(true);
      - if:
          condition:
            not:
              - voice_assistant.is_running
          then:
            - voice_assistant.start_continuous
   

    on_turn_off:
      - voice_assistant.stop
      - lambda: id(va).set_use_wake_word(false);

@+

Merci @Krull56 je part donc pour un peut de soudure et une configuration.

1 « J'aime »

@Krull56 je me rend compte qu’avec un ATOM echo, ca plante au bout de quelque commande quand on active la fonction wakework. Obliger de reboot l’esp, mais si on utilise pas la fonction wakeword, juste avec l’appuie sur le bouton, ca plante plus.

C’est un soucis des modules, du atom echo ou du RPI4 ?

Bon j’ai avancer un peut le micro est souder et connecter a l’ESP32 WROOM
j’ai adapter la configuration donnée ci-dessus
mais pendant la compilation j’ai ce message d’erreur

[17:35:25][E][voice_assistant:468]: No API client connected

j’ai oublié quelque chose ?

Hello,

C’est pas faute d’en avoir parlé plus haut dans ce post.
pas mal de « mauvais » retours sur le forum anglophone concernant l’atom echo…
As-tu mis à jour esphome et récupéré le yaml ici : firmware/voice-assistant/m5stack-atom-echo.yaml at main · esphome/firmware (github.com)

Tu compile bien directement depuis ESPHOME ?
Peux-tu publier le yaml que tu as modifié stp ?

@Krull56 voilà

esphome:
  name: esphome-web-4c24c4
  friendly_name: ESPHome Web 4c24c4
  on_boot:
     - priority: -100
       then:
         - wait_until: api.connected
         - delay: 1s
         - if:
             condition:
               switch.is_on: use_wake_word
             then:
               - voice_assistant.start_continuous:

esp32:
  board: esp32dev
  framework:
    type: arduino
   

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "96an93ttWkK3W1sJ7pgP1foBBipVC44oiQ7+6xf4n98="

ota:


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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-4C24C4"
    password: "BSsG9zMMEiIf"

captive_portal:



i2s_audio:
  - id: i2s_in
    i2s_lrclk_pin: GPIO25
    i2s_bclk_pin: GPIO32

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



voice_assistant:
  id: va
  microphone: mic_i2s
  use_wake_word: true
  noise_suppression_level: 2
  auto_gain: 0dBFS
  volume_multiplier: 4.0



switch:

  - platform: template
    name: Use wake word
    id: use_wake_word
    optimistic: true
    restore_mode: RESTORE_DEFAULT_ON
    entity_category: config
    on_turn_on:
      - lambda: id(va).set_use_wake_word(true);
      - if:
          condition:
            not:
              - voice_assistant.is_running
          then:
            - voice_assistant.start_continuous
   

    on_turn_off:
      - voice_assistant.stop
      - lambda: id(va).set_use_wake_word(false); 

    

Vas dans paramètres , Appareils et services , ESPHOME, tu devrais voir afficher ton ESPHOME WEB… clique sur configuer à côté et coche « Autorisez l’appareil à passer des appels de service Home Assistant »

j’ai coché recompiler et même erreur !

je viens d’installer ton code yaml (a part key api , ota ) sur un esp32 tout juste sorti d’une boite, et aucun souci

Oui, j’étais au courant des retours sur l’atom écho mais honnêtement ça fonctionne bien à par ce plantage du wake work.
Toute façon, que ça soit snowboy ou porcupine ça déclenche si on parle dans la pièce. J’ai tester plusieurs sensibilité, mais rien de bien.
J’utilise du bouton directement, ça me convient pour le moment.

Oui, j’ai tout à jour, le firmware et le yaml du github.

Pour limiter les faux positifs des wakeword; il faut au minimum 3 syllabes ( c’est pour ça que google et consorts utilisent ok_google, Alexa, Dis Siri…)