Projet voice control

comme ta l’air dit connaitre.

arduino:

pinMode(4, OUTPUT);
digitalWrite(4, HIGH);

esphome:

  on_boot: 
    - priority: 600
      then: 
        - output.turn_on: output_high

  - platform: gpio
    id: output_high
    pin:
      number: GPIO4
      mode:
        output: true

pour le digitalwrite en high , c’est 1 activer ?

Pour cet exemple je suis moins catégorique. Je fais avec mes souvenirs d’il y a 20 ans…

Je suis sûr à 90 % que c’est la bonne config. J’ai eu un doute à cause du digitalWrite.
Mais après quelques recherches, j’ai trouvé qu’il faut forcer l’ESP pour convertir l’analogique vers le numérique donc pas besoin de repréciser que c’est digital

2 « J'aime »

Bonjour a tous,
Pour les utilisateurs du Atom echo, une maj du core 2024.5.0, améliore l’audio. Ca devrais plus couper le son s’il la phrase est courte.

avant / après:

1 « J'aime »

Bonjour,
Et aussi du neuf dans la dernière version ESPhome et plus à venir dans la 2024.5.0 d’EspHome👍
Bob

Effectivement, avec la maj 2024.5.1 ( pas essayer la 2024.5.0 ) et ESPHome 2024.4.2, il y a plus de bug audio avec l’Atom Echo. Top :smiley:

Hello,
je reviens suite à une pause sur ce projet pour cause de déménagement.
Ça me fait plaisir de voir les personnes échanger sur ce projet.
J’ai pour ma part encore un petit problème avec mon jarvis.
Je parviens bien à caster du son sur l’esp via home assistant mais je n’ai pas de réponse de mon jarvis une fois qu’un prompt à été fait.
J’aimerais bien que lorsque j’appelle « jarvis » j’ai un retour sonore du style « OUI ? » ou « Comment puis-je vous aider » de même lorsque la tache est effectué comme « C’est fait ».
Quelqu’un aurait-il une idée ?

Hello

Ton code yaml de l’esp serait utile pour t’aiguiller :wink:

Effectivement je le laisse ci-dessous :wink:

esphome:
  name: esphome-web-697778
  friendly_name: esphome-web-697778
  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: "2qp1i4dlxkYbMedLlHtHSq6WUdj2Fq/UryFTKJgAZnU="

ota:

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

captive_portal:

light:
  - platform: binary
    name: "Light"
    output: light_output

output:
  - id: light_output
    platform: gpio
    pin: GPIO22

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: 16bit
    i2s_audio_id: i2s_in
    i2s_din_pin: GPIO33

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
  use_wake_word: true
  noise_suppression_level: 2
  auto_gain: 3dBFS
  volume_multiplier: 4.0 

  on_wake_word_detected:
    then:
      - output.turn_on: light_output
  
  on_end:
    - delay: 2s
    - output.turn_off: light_output

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

Déjà il manque une partie media_player dans la section voice_assistant :wink:
Tu as bien indiqué le micro mais pas la sortie son

1 « J'aime »

donc je devrais juste rajouter cela pour que ça fonctionne ?

voice_assistant:
  id: va
  microphone: mic_i2s
  use_wake_word: true
  noise_suppression_level: 2
  auto_gain: 3dBFS
  volume_multiplier: 4.0 
  media_player : media_sat1

Oui, tu auras déjà un retour vocal en fonction de la demande, du type « done »… « allumé »… « éteins »…etc
Pour le « oui maître , je vous écoute » c’est au niveau du on wakeword détected qu’il faut ajouter une action tts sur le media player

Pour le « oui maître , je vous écoute » c’est au niveau du on wakeword détected qu’il faut ajouter une action tts sur le media player

Comment je peux faire cela ?

Malheureusement en wouahcances sans pc, ça va être un peu difficile pour te donner la soluce codée mais @Bob ou @WarC0zes pourront peut être te guider

1 « J'aime »

tu parle de on_wake_word_detected pour voice assistant ?

Ok pas de soucis je chercherai aussi de mon côté :wink:
J’ai encore un petit problème mon media_sat1 reste en inactif et je ne comprend pas la raison j’ai pourtant réussi à le faire fonctionner il y a de cela quelques minutes en castant une radio depuis radio browser

je cherche un moyen d’avoir une réponse audio lorsque le wake word est actif effectivement mais aussi lorsque la requête est faite :slight_smile:

un truc du genre ?

voice_assistant:
  on_wake_word_detected:
    - homeassistant.service:
      media_player.play_media:
      data:
        entity_id: media_player.any_media_player_in_ha
        media_url: 'http://192.168.1.21:8123/local/sounds/receive.wav'
        media_content_type: music
        announce: "true"

D’accord donc je dois avoir un fichier audio pour chaque réponse possible c’est ça ?

Pour du TTS:

    - homeassistant.service:
        service: tts.speak
        data:
          entity_id: tts.piper
          cache: 'true'
          media_player_entity_id: media_player.esphome_voice_satellite_1_test
          message: 'oui maître , je vous écoute'

oui faut créer suivant l’action. Regarde la doc de voice asisstant, ta toutes les actions, a toi de choisir celle ou tu veut un message.

1 « J'aime »

Ok merci j’ai juste encore un problème avec mon haut parleur il est en actif mais je n’ai plus de sortie audio une idée ?