Comment est cablé le L/R de l’INMP ?
Le L/R est relié au GND.
Oui je suis sur une breadboard
Retire chanel left de la partie Microphone pour tester
Super @Krull56, il y a du mieux
19:45:18 [D] [voice_assistant:557]
Speech recognised as: "allume la lampe marine"
19:45:18 [D] [voice_assistant:529]
Event Type: 5
19:45:18 [D] [voice_assistant:562]
Intent started
19:45:18 [D] [voice_assistant:562]
Intent started
19:45:18 [D] [voice_assistant:529]
Event Type: 6
19:45:18 [D] [voice_assistant:529]
Event Type: 7
19:45:18 [D] [voice_assistant:585]
Response: "Allumé"
Merci beaucoup, je dois quitter pour ce soir mais je sors apaisé
Je reprends demain, la lampe s’est allumée.
Top merci
Bob
Bonsoir,
Petit retour :
Suite au passage concluant du retour vocal sur mon ampli (pour test), et l’ajout d’une led pour signaler la reconnaissance du mot de réveil ça fonctionne bien, reste à ajuster les alias.
Par contre en activant le speaker (c’est le but) c’est comme si l’ESP avait besoin de temps pour récupérer son souffle
speaker:
- platform: i2s_audio
id: my_speaker
dac_type: external
i2s_dout_pin: GPIO27 #DIN
mode: mono
i2s_audio_id: i2s_in
ça avance, reste à trouver la bonne config pour le speaker de l’ESP32, pas envie que le système allume l’ampli juste pour ça
Peut être un autre ESP32 avec un media_player: avec 2 amplis (MAX98357) et deux HP pour soulager celui qui a le micro.
Bob
Tu as quoi comme symptômes exactement ? Le retour est haché ? Le volume est faible ?
Un truc que je n’ai pas encore testé c’est d’utiliser le media_player intégré dans mon code initial en début de ce post comme moteur de réponse avec le on_tts.end ( tout comme pour ton ampli ).
Je mets ça sur ma todo-list
C’est fait
Le volume n’a pas vraiment changé , mais les réponses sont plus claires et pas hachées comme ca peut arriver de temps en temps en utilisant « Speaker » en réponse.
par contre le max98357 est pas top niveau puissance réelle, à remplacer par un PCM5102 + Ampli plus punchy ?
@+
Symptôme : après une ou deux requête il faut attendre plusieurs minutes pour que ça refonctionne.
Bon appétit
Tu as toujours ces déconnexions ponctuelles ?
Bonjour @Krull56
Je l’ai très rarement mais ça arrive encore.
Bob
Hello,
Rien à voir avec ESP and family, mais un petit programme pour lancer directement assist sur PC/MAC/LINUX
@+
Bonjour,
Suite à l’ajout de :
Je vois que mon ESP32 freeze très souvent, le fonctionnement reste très aléatoire, même l’allumage de la led bleu de la carte devient très lent, pour le son, parfois ça fonctionne, souvent non.
Je vais faire un 2ème assistant basé sur un ESP32 avec PSRAM pour voir si c’est mieux.
Merci pour toutes les infos et échanges de ce post.
Bob
@Krull56,
Pourrais-tu partager ton yaml complet stp avec media_player intégré
Merci
Bob
Hello
Le voici avec le media player + le mute All (light+media) revu en conséquence
esphome:
name: satellite1
friendly_name: Satellite1
on_boot:
- priority: -100
then:
- wait_until: api.connected
- light.turn_on:
id: led
effect: pulse
red: 100%
blue: 0%
green: 0%
- switch.turn_on: use_wake_word
- delay: 5s
- voice_assistant.start_continuous:
- light.turn_off: led
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key:
ota:
password:
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: "RwJBFIeZYHDb"
captive_portal:
light:
- platform: esp32_rmt_led_strip
chipset: WS2812
rmt_channel: 0
pin: GPIO16
num_leds: 16
rgb_order: GRB
name: "Neopixel 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
media_player:
- platform: i2s_audio
id: media_sat2
name: "media_sat"
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: 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_tts_end:
- homeassistant.service:
service: media_player.play_media
data:
entity_id: media_player.satellite1_media_sat
media_content_id: !lambda 'return x;'
media_content_type: music
announce: "true"
- delay : 10s
- homeassistant.service:
service: tts.clear_cache
on_end:
- delay: 2s
- light.turn_off: led
switch:
- platform: template
name: "MuteAll"
id: MuteAll
optimistic: true
on_turn_on:
- switch.turn_on: MuteLight
- media_player.volume_set: !lambda "return 0.0;"
on_turn_off:
- switch.turn_off: MuteLight
- media_player.volume_set: !lambda "return 1;"
- platform: template
name: MuteLight
id: MuteLight
optimistic: true
- platform: template
id: listen_force
name: Listen_force
optimistic: true
restore_mode: ALWAYS_OFF
on_turn_on:
- switch.turn_off: use_wake_word
- delay: 0.5s
- 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);
Bonjour,
Merci @Krull56,
Je vois bien mon media_player :
Mais aucun son, pas mieux depuis les outils de dev → Services.
Pour le « i2s_dout_pin: » de media_player je mets bien le GPIO que j’avais pour le speaker ?
Mon YAML :
Bob
esphome:
name: esp32-psram-voice-control-2
friendly_name: Esp32 Psram Voice Control 2
#on_boot:
# - priority: -100
# then:
# - wait_until: api.connected
# - delay: 5s
# - speaker.play:
# data: [0x00]
# - delay: 1s
# - if:
# condition:
# switch.is_on: use_wake_word
# then:
# - voice_assistant.start_continuous:
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
level: debug
# Enable Home Assistant API
api:
encryption:
key: "gDrtxsGTMhoGo10AGjOhvdY="
ota:
password: "6e6362d7d59f97"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.1.47
gateway: 192.168.1.254
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp32-Psram-Voice-Control-2"
password: "Okr2hj"
captive_portal:
debug:
update_interval: 5s
text_sensor:
- platform: debug
device:
name: "Device Info"
reset_reason:
name: "Reset Reason"
sensor:
- platform: debug
free:
name: "Heap Free"
block:
name: "Heap Max Block"
loop_time:
name: "Loop Time"
#psram:
# name: "Free PSRAM"
# voice assistant
i2s_audio:
- id: i2s_in
i2s_lrclk_pin: GPIO26 #WS / LRC
i2s_bclk_pin: GPIO25 #SCK /BCLK
microphone:
- platform: i2s_audio
adc_type: external
pdm: false
id: mic_i2s
#channel: left
bits_per_sample: 32bit
i2s_audio_id: i2s_in
i2s_din_pin: GPIO33 #SD
#speaker:
# - platform: i2s_audio
# id: my_speaker
# dac_type: external
# i2s_dout_pin: GPIO27 #DIN
# mode: mono
# i2s_audio_id: i2s_in
media_player:
- platform: i2s_audio
id: media_sat1
name: "media_sat1"
i2s_dout_pin: GPIO27
dac_type: external
mode: mono
voice_assistant:
microphone: mic_i2s
id: brunoassist
noise_suppression_level: 2
auto_gain: 31dBFS
volume_multiplier: 2.0
use_wake_word: true
#speaker: my_speaker
on_wake_word_detected:
- switch.turn_on:
id: reveil
on_error:
- if:
condition:
switch.is_on: use_wake_word
then:
- switch.turn_off: use_wake_word
- switch.turn_on: use_wake_word
on_client_connected:
- if:
condition:
switch.is_on: use_wake_word
then:
- voice_assistant.start_continuous:
on_client_disconnected:
- if:
condition:
switch.is_on: use_wake_word
then:
- voice_assistant.stop:
on_end:
- switch.turn_off:
id: reveil
#on_tts_end:
# - delay : 2s
# - switch.turn_off:
# id: reveil
#Pour envoyer réponse sur le Denon
on_tts_end:
- homeassistant.service:
service: media_player.play_media
data:
entity_id: media_player.esp32_voice_control_1_media_sat1 #denon_avc_x3700h mibox3 freebox_player_2
media_content_id: !lambda 'return x;'
media_content_type: music
announce: "true"
- delay : 8s
- homeassistant.service:
service: tts.clear_cache
binary_sensor:
- platform: status
name: API Connection
id: api_connection
filters:
- delayed_on: 1s
on_press:
- if:
condition:
switch.is_on: use_wake_word
then:
- voice_assistant.start_continuous:
on_release:
- if:
condition:
switch.is_on: use_wake_word
then:
- voice_assistant.stop:
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(brunoassist).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(brunoassist).set_use_wake_word(false);
- platform: gpio
name: "LedVerte"
id: led
pin: 21
- platform: gpio
name: "LedIo23"
id: reveil
pin: 23
#- platform: template
# id: listen_force
# name: Listen
# optimistic: true
# restore_mode: ALWAYS_OFF
# on_turn_on:
# - switch.turn_off: use_wake_word
# - delay: 0.5s
# - voice_assistant.start
# on_turn_off:
# - switch.turn_on: use_wake_word
web_server:
port: 80
Hello @Bob
C’est étrange car pas de souci de mon côté et oui, même GPIO que pour l’ancien « speaker »
Tu as bien activé ça pour ton esp dans esphome ?
Oui, c’est bien activé.
Avec le nouvel ESP32 + PSRAM ça ne « freeze » plus, ça fonctionne plutôt bien mais parfois le son reste haché ou le texte coupé, peut être prévoir un délai avant la diffusion du message au cas où il ne serait pas entièrement généré…
Bob
Y a pas un pb sur la definition du media_player ? (à moins qu’il soit sur un autre ESP)
- homeassistant.service:
service: media_player.play_media
data:
entity_id: media_player.esp32_voice_control_1_media_sat1
Car esp32_voice_control_1 n’est pas le nom de ton ESP qui « porte » le media player
Sinon, plus simple ( je n’ai pas encore testé), esphome voice assistant supporte maintenant nativement le media player en place du speaker .
En remplacant
voice_assistant:
microphone: mic_i2s
id: brunoassist
noise_suppression_level: 2
auto_gain: 31dBFS
volume_multiplier: 2.0
use_wake_word: true
speaker: my_speaker
par
voice_assistant:
microphone: mic_i2s
id: brunoassist
noise_suppression_level: 2
auto_gain: 31dBFS
volume_multiplier: 2.0
use_wake_word: true
media_player: media_sat1
et en supprimant evidemment la partie on_tts_end