Projet voice control

Bonjour,

j’ai comme projet suite au visionnage d’une vidéo sur le sujet de faire un assistant permettant de contrôler ma domotique.
J’avais pour but de suivre ce tuto cependant la carte n’est plus disponible à la vente, j’ai donc eu pour projet de faire cela moi même.
J’aimerais savoir si quelqu’un à déjà essayé cela de son côté, pour ma part les éléments choisis sont les suivants :
ESP32 / Amplificateur audio / Enceinte / Microphone
Est-ce qu’il me manque quelque chose ? Pensez-vous que cela est possible ? Quel problème je risque de rencontrer ?
Merci de vos retours :wink:

2 « J'aime »

Hello

Ne regrette pas la rupture du Echo M5 qui pose quelques soucis.
J’attaque mon 3 ème satellite sur base esp32 et ça roule… avec une petite amélioration fonctionnelle à chaque fois ( ring led ws2832 pour le deuxième et peut être écran tactile en plus pour le 3eme)
Par contre pour le micro prends un INMP441 , il est omnidirectionnel et avec une bonne sensibilité.
Fais attention pour la carte esp32 ne prends pas par erreur un esp 8266

PS: prévois une breadboard et câbles Dupont pour tester ton montage avant soudure définitive

Bon montage :wink:

@+

Salut,

Depuis les évolutions de cette année dans HA, il y a de plus en plus d’exemples et de tutos.
Avec des listes de matériel recommandés.
L’ajout de l’activation par mot clés est clairement le truc qui va faire décoller ça.

Je suppose que tu parlais de cette vidéo. Il y a un passage qui montre un français qui a fait plusieurs versions qui ont l’aire de très bien marcher (minute 56). Et avant ça ils parlent des différents archi possibles et leurs pros/cons.

Le frenchy avec le super accent anglais qui fait la demo c’est jean Loïc de chez Nabu Casa :wink:

Salut @Krull56 , tu as des exemples de montage et de circuit imprimé ?

Yes, je peux poster ça d’ici quelques jours pour le deuxième montage avec led ring ( en déplacement pro actuellement).
Pas besoin de CI , juste liaisons filaire entre les composants mais on peut faire plus propre avec un pcb de prototypage
N’ayant pas d’imprimante 3d il est tout nu pour l’instant. J’espère lui trouver une boiboite avant qu’il ne fasse trop froid :grin:

Pour le " complet" avec écran faudra être un peu plus patient, j’attends mon touch screen . N’ayant jamais utilisé ce composant je vais certainement un peu galerer pour le programmer .

@+

2 « J'aime »

Comment puis-je savoir quel type d’esp32 je possede ? Pour ma part j’ai deja acheté ceux sur mon post principal que j’utilise pour un afficheur de température et pour contrôler une petite création LED.
Justement j’avais vu que mon microphone etait meilleur mais si ce n’est pas le cas je vais le changer merci :slight_smile:
Si tout semble ok je vais passer commande alors.

Si tu as bien un ESP32 c’est bon, ce n’est pas un ESP8266 :slight_smile:
C’est écrit sur la puce normalement.
Le lien que tu as partagé sur ali contient les 2 types de cartes.

Ha ok moi jai pris le pack de 5 donc je pense avoir bon mdr, en tout cas tout ce que j’ai fais en domotique jusque là fonctionne.

Moi j’ai trouvé ce schéma de cablage sur internet je vais surement le suivre si c’est ça que tu cherche :wink:

Sans micro ça risque d’être compliqué pour un assistant vocal :grin:
Je vous prépare le schéma de mon montage dès que possible

@+

@Pozzi

J’ai fait le schéma à l’arrache et de mémoire et en plus je ne suis pas très doué pour ça… on ne se moque pas STP :grinning:

Et le YAml esphome qui va avec (je précise que je débute sur esphome, ça doit pouvoir s’ameliorer, mais en tout cas ça fonctionne plutôt bien).

esphome:
  name: satellite1
  friendly_name: Satellite1
  on_boot:
    - priority: -100
      then:
        - wait_until: api.connected
        - delay: 5s
        - voice_assistant.start_continuous:




esp32:
  board: esp32dev
  framework:
    type: arduino
   

# Enable logging
logger:

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

ota:
  password: "xxxxx"

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: "zzzzzz"

captive_portal:




light:
  - platform: esp32_rmt_led_strip
    chipset: WS2812
    rmt_channel: 0
    pin: GPIO16
    num_leds: 16
    rgb_order: GRB
    name: "Light"
    id: led
    effects:
      - pulse:
          name: Pulse
          transition_length: 0.5s
          update_interval: 0.5s
          min_brightness: 0%
          max_brightness: 100%
      - addressable_scan:
          name: Scan
          move_interval: 50ms
          scan_width: 4

      - addressable_color_wipe:
          name: Wipe
          colors:
            - red: 0%
              green: 0%
              blue: 10%
              num_leds: 1
            - red: 0%
              green: 0%
              blue: 50%
              num_leds: 1
          add_led_interval: 100ms
          reverse: false

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

speaker:
  - platform: i2s_audio
    id: echo_speaker
    i2s_dout_pin: GPIO26
    dac_type: external
    mode: mono

media_player:
  - platform: i2s_audio
    id: media_sat1
    name: "media_sat1"
    i2s_dout_pin: GPIO26
    dac_type: external
    mode: mono






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

  
  on_listening:
    then:
    - if:
        condition:         
          switch.is_off: MuteLight
        then :
           - light.turn_on:
              id: led
              blue: 100%
              red: 0%
              green: 0%
              brightness: 100%
              effect: Wipe

  on_tts_start:
    then:
    - if:
        condition:         
          switch.is_off: MuteLight
        then :
           - light.turn_on:
              id: led
              blue: 0%
              red: 100%
              green: 0%
              brightness: 100%
              effect: Pulse


  on_end:
    - delay: 2s
    - light.turn_off: led



switch:

  - platform: template
    name: "MuteAll"
    id: MuteAll
    optimistic: true
    on_turn_on:
      - switch.turn_on: MuteLight
      - switch.turn_on: MuteSpeaker
    on_turn_off:
      - switch.turn_off: MuteLight
      - switch.turn_off: MuteSpeaker
 

  - platform: template
    name: MuteLight
    id: MuteLight
    optimistic: true

  - platform: gpio
    name: "MuteSpeaker"
    id: MuteSpeaker
    pin:
      number: GPIO23
      inverted: true
      mode:
       output: true
       open_drain: True 


  - platform: template
    name: media_on
    id: media_on
    optimistic: True
    on_turn_on:
      - switch.turn_off: use_wake_word
      - delay: 1s
      - voice_assistant.stop
    on_turn_off: 
      - switch.turn_on: use_wake_word
      - delay: 1s
      - voice_assistant.start_continuous

  - platform: template
    name: Listen
    id: Listen
    optimistic: true
    on_turn_on:
     - switch.turn_off: use_wake_word
     - delay: 1s
     - voice_assistant.start_continuous
    on_turn_off:
     - switch.turn_on: use_wake_word

  - 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);




j’ai ajouté des options de mute speak/led pour ne pas avoir de retour visuel ou sonore , l’option media player , et un force listen.
Ces 2 derniers me permettent d’inverser les roles , c’est HA qui m’interpelle suite à un trigger et je lui répond tout simplement par oui ou non. C’est pas fiable à 100 % car dépend du délai de transmission et de lecture du message tts sur le media player mais c’est rigolo :wink:
Exemple: "le soleil est couché, voulez vous fermer les volets ? "
D’ailleurs je fais pareil avec mon smartphone lorsque je suis en voiture. Dès que je rentre dans une zone proche de mon domicile, j’ai un message tts « voulez-vous ouvrir le portail ? » , assist s’ouvre dans la foulée sur le smartphone pour écouter ma réponse.
Mais bon… là je dérive de la demande initiale :grin:

Voili-voilà… bon amusement :wink:

4 « J'aime »

Bonjour @T_R,
il y a des ATOM echo dispo sur ali 15.6€ |Kit de développement de haut parleurs intelligents ATOM Echo, M5Stack officiel | AliExpress ( vite il en reste que 86 )
j’en est commander un pour tester :rofl:

Je ne te remercie pas… je viens d’en commander un :rofl:

Bonjour à tous,

C’est quoi le soucis avec l’echo M5 dont parle @Krull56 ?

Sur le forum anglophone, pas mal de retour sur des freeze ou autres.
C’est peut-être corrigé depuis car on en est à la 3ème version d’ESPHome depuis l’annonce du Wake Word.

1 « J'aime »

Merci pour ces plans :+1:

Je ne comptais pas mis mettre, c’était surtout pour l’intérêt général :slight_smile:

Petite question ton schéma n’est pas pour un ESP32 si ?
Le branchement reste le même ?

C’est un esp32 mais format « mini » , les gpio restent les mêmes (ou tu peux les changer, mais modifier le code yaml en conséquence)

Donc ça ne change que ce soit au niveau du code ou bien de la puissance de la carte ?