Projet voice control

Pour repartir sur une base saine, j’ai fais le branchement comme sur le tuto vidéo et j’ai copié le code en l’adaptant à mon esp

esphome:
  name: esphome-web-697778
  friendly_name: Assist
  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: esp-idf
    version: recommended

# Enable logging
logger:

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


ota:

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

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

i2s_audio:
  i2s_lrclk_pin: GPIO27
  i2s_bclk_pin: GPIO26

microphone:
  - platform: i2s_audio
    id: mic
    adc_type: external
    i2s_din_pin: GPIO13
    pdm: false

speaker:
  - platform: i2s_audio
    id: big_speaker
    dac_type: external
    i2s_dout_pin: GPIO25
    mode: mono

voice_assistant:
  microphone: mic
  use_wake_word: false
  noise_suppression_level: 2
  auto_gain: 31dBFS
  volume_multiplier: 2.0
  speaker: big_speaker
  id: assist

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(assist).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(assist).set_use_wake_word(false);

C’est ce que j’avais conseillé pour débuter car j’ai ajouté plusieurs fioritures a mon système :wink:

Ça donne quoi ?

Toujours rien c’est bizarre je comprends pas.
Petite question ce microphone doit juste être branché sur l’esp32 c’est ça ? ça ne semble vachement petit pour être un micro
Dans ma console tout semble correct

[20:45:53][D][voice_assistant:529]: Event Type: 0
[20:45:53][D][voice_assistant:529]: Event Type: 2
[20:45:53][D][voice_assistant:619]: Assist Pipeline ended
[20:45:53][D][voice_assistant:422]: State changed from STREAMING_MICROPHONE to IDLE
[20:45:53][D][voice_assistant:428]: Desired state set to IDLE
[20:45:53][D][voice_assistant:422]: State changed from IDLE to START_PIPELINE
[20:45:53][D][voice_assistant:428]: Desired state set to START_MICROPHONE
[20:45:53][D][voice_assistant:206]: Requesting start...
[20:45:53][D][voice_assistant:422]: State changed from START_PIPELINE to STARTING_PIPELINE
[20:45:53][D][voice_assistant:443]: Client started, streaming microphone
[20:45:53][D][voice_assistant:422]: State changed from STARTING_PIPELINE to STREAMING_MICROPHONE
[20:45:53][D][voice_assistant:428]: Desired state set to STREAMING_MICROPHONE
[20:45:53][D][voice_assistant:529]: Event Type: 1
[20:45:53][D][voice_assistant:532]: Assist Pipeline running
[20:45:53][D][voice_assistant:529]: Event Type: 9

Il semblerait que le problème provienne vraiment du microphone, quand je vais dans outils de développement > états et que je mets mon assistant manuellement sur ON rien ne se passe.

@anon21985933 petite question j’ai à nouveau fait un test avec ton code quand on active « media_on » et que je mets la radio en cast sur mon esp du son doit sortir des enceintes ?

Hello,

Oui, ca fonctionne comme un media player classique quand c’est activé. Tu peux caster du contenu de ta bibliothèque media ou lancer un TTS dessus.
T’attends pas à du dolby Atmos, vu l’ampli et la taille du HP, c’est trop juste :crazy_face:

ok donc j’ai vraiment un problème quelque part parce que ça aussi ça ne marche pas :joy:

Mince…
Je te conseille dans un premier temps de déssouder toute la partie speaker de ton esp ( le max98357), de ne laisser que le micro en ayant bien verifié les soudures et les GPIO.
J’espère que tes défauts de soudures n’ont pas endommagé les composants.
Tu peux aussi avoir des soudures « Sèches » , qui en fait ne font pas contact .

Bon courage …

@+

Je ne suis pas un expert on soudures électroniques mais tu me bat là :wink:
Je te conseillerais aussi un petit assortiment de Cables dupont.
Et aussi quand il y a un trou dans le PCB c’est plus facile de faire passer dedans le câble que tu veux souder.

https://www.amazon.fr/QILUCKY-femelle-femelle-mâle-femelle-mâle-mâle-cavaliers/dp/B0B1PD6SRH

2 « J'aime »

et un petit breadboard pour valider son cablage avant soudure définitive :wink:

1 « J'aime »

Alors en désoudant le max98357 ça fonctionne enfin presque, je m’explique.
Je me met en mode listen, lors de la requête vocale pour allumer ma lampe cela fonctionne mais l’assistant passe en mode désactivé une fois la requête faite et ne repasse plus en mode activé une idée ?

Bon, c’est déjà une bonne chose que l’INMP441 soit toujours vivant :grin:

Je dîne et reviens vers toi après pour la suite

@+

Pas de soucis en privé pour pas embêter tout le monde ?

Surtout pas!!! Je suis entrain de mettre en place le même système, mais je n’ai pas encore tout mis en place :smile:

On va faire un trio « privé » alors :crazy_face:

N’hésite pas à nous faire retour de tes avancées et éventuels soucis.

@+

Je reprendrai demain car je l’avais de mis de côté cet aprèm , je pensai que le wakeword n’était pas encore pris en compte (appuyer sur un bouton pour communiquer avec ne m’intérresse pas).
J’ai connecté l’ESP32 selon le schéma sur Github (lien plus haut).

Le github de Lewis (ESH) ?
Ca fonctionne sans pb ( sauf gresillement à l’allumage tant qu’il n’y a pas eu une réponse d’assist , mais j’ai la solution :wink: , soit logicielle si déjà cablé, soit materielle, en cablant différemment )

Celui là même. Je suis preneur pour la solution matérielle.

Hello,

Il faut simplement séparer les gpio utilisées en entrée et sortie pour l’i2s_audio.

Ce qui donne par exemple pour le code Yaml correspondant (à adapter en fonction des GPIo utilisées) :

i2s_audio:
  - id: i2s_out
    i2s_lrclk_pin: GPIO26
    i2s_bclk_pin: GPIO27
  - id: i2s_in
    i2s_lrclk_pin: GPIO13
    i2s_bclk_pin: GPIO12

microphone:
  - platform: i2s_audio
    i2s_audio_id: i2s_in
    id: echo_microphone
    i2s_din_pin: GPIO21
    adc_type: external
    pdm: false

speaker:
  - platform: i2s_audio
    i2s_audio_id: i2s_out
    id: echo_speaker
    i2s_dout_pin: GPIO25
    dac_type: external
    mode: mono

Pour la solution uniquement « logicielle » , l’idée est de générer un son « vide » au démarrage de l’ESP :

  on_boot:
    - priority: -100
      then:
        - wait_until: api.connected
        - delay: 5s
        - speaker.play:
            data: [0x00]

@+

Merci. Je me lance , je teste et je reviens :grin: