Projet voice control

Hello guys !

Je compte me lancer dans un petit projet inspiré des démo de JLo et de la vidéo de EverythingSmartHome, sauf que ce sera la première fois que je me lance dans du ESP32 et cie donc j’y connais rien et il y a 15 mille versions des hardwares.

Ce serait quoi les bonnes versions de carte ESP32 à commander, micro (INMP441 j’ai l’impression), speaker, ampli etc ?
L’esp32-korvo a l’air cool aussi mais bon il est tout fait c’est moins fun.

Merci d’avance !

Hello

Un ESP32 classique ( pas S2 ou S3) , INMP441, max98357 pour l’ampli et un petit HP 3 watts (4 ohms).

Je suis d’accord avec toi sur la perte de charme du DIY avec le Korvo, mais le traitement audio mérite un petit test. Je ferai retour quand je l’aurai reçu.

@+

1 « J'aime »

Idem, et pour me lancer sur un gadget à base d’ESP32.
Mon envie, réaliser un petit objet sous forme de boule avec micros pour commander Home Assistant, haut parleur si possible de bonne qualité pour pouvoir faire aussi enceinte, petit écran peut-être tactile pour quelques retours d’infos. En plus de toute la partie technique, je réfléchi à ce que je pourrais fabriquer en impression 3D pour un boitier sympa…

2 « J'aime »

Hâte de voir le résultat et que tu nous partage les infos.
C’est la partie amplification qui peche un peu au niveau audio.
Je n’ai pas d’imprimante 3D, mes ESP sont donc tout nu pour l’instant ( j’ai remis le chauffage heureusement).
J’ai aussi dans l’idée d’ajouter un petit écran tactile, @bob est sur le coup pour cette partie :wink:

@+

1 « J'aime »

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 »