Hello @MattG
Tu utilise quel matériel ? ESP32 , ESP32-S3, ECHO, KORVO ?
Hello @MattG
Tu utilise quel matériel ? ESP32 , ESP32-S3, ECHO, KORVO ?
J’utilise un ESP32-korvo 1.1.
J’ai essayé de le programmer avec vscode sans passer par ESPHOME avec les bibliothèques natives esp-idf mais je n’ai pas réussi à lui faire sortir un son non plus de cette manière.
Je n’abandonne pas cette carte mais j’ai commandé un esp32-s3-corvo-1 qui m’a au moins l’air mieux géré en dehors d’esphome pour comparer…
Ah ben je vais attendre un peu alors pour voir ce que je peux mettre et tenter de faire fonctionner au mieux le max98357.
Bob
Tiens nous au courant
Sorry, j’ai zappé une partie de mon code
on_tts_end:
- homeassistant.service:
service: media_player.play_media
data:
entity_id: media_player.xxxxx
media_content_id: !lambda 'return x;'
media_content_type: music
announce: "true"
- delay : 10s
- homeassistant.service:
service: tts.clear_cache
Par contre, même sans le tts.clear.cache, il ne m’a jamais enchainé toutes les réponses mises en cache
Merci @Krull56,
En rentrant je vais regarder mais je pense que la Freebox révolution contient des HP et doit donc pouvoir servir aussi de média player, ce pourrait être une solution en attendant mieux.
Je vais regarder l’intégration Freebox, je pense qu’elle est déjà détectée par HA mais je n’ai jamais utilisé.
Bob
J’ai activé l’intégration Freebox mais pas de média player Freebox !
Je poursuis plu tard
Bob
Avez vous reussi a faire fonctionner l’assistant vocal ?
j’ai suivi tout le tuto mais pas moyen de le faire reagir avec le mot de reveil.
de plus jai une erreur lors du flash
Pin 0 is used in multiple place
i2s_audio:
id: codec
i2s_lrclk_pin: GPIO22
i2s_bclk_pin: GPIO25
i2s_mclk_pin: GPIO0
Pin 0 is used in multiple place
id: mic_adc
i2s_lrclk_pin: GPIO26
i2s_bclk_pin: GPIO27
i2s_mclk_pin: GPIO0
merci de vos retour
Hello,
ESPHOME verifie maintenant l’unité des pins utilisées, il faut ajouter un parametre allow other uses
Exemple :
i2s_audio:
- id: codec
i2s_lrclk_pin: GPIO22
i2s_bclk_pin: GPIO25
i2s_mclk_pin:
number: GPIO0
allow_other_uses: true
- id: mic_adc
i2s_lrclk_pin: GPIO26
i2s_bclk_pin: GPIO27
i2s_mclk_pin:
number: GPIO0
allow_other_uses: true
Pour le reste tu as un gros fil sur le sujet ici : Projet voice control - Entraide Home Assistant - Home Assistant Communauté Francophone (hacf.fr) ou encore ici : Year of the voice - Chapitre 5, c’est ce mercredi - Communauté HACF / BlaBlaBla & Suggestions - Home Assistant Communauté Francophone
@+
ok merci je vais deja corriger ce bug et voir si cela change
bon on n’a pas beaucoup evoluéé
T’as encore une erreur de compilation ?
T’es pas très bavard en explications
Publie ton code stp.
Sinon, Assist fonctionne déjà bien depuis le dashboard ou smartphone et reconnait les commandes vocales ?
non pas d’erreur de compillation
pour le code
substitutions:
##### WIFI SETUP #####
###### CHANGE ME START ######
device_name: "esp32korvo_mic"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
apikey: !secret enc_key_esp32korvo_mic
##### CHANGE ME END #####
esphome:
name: ${device_name}
min_version: 2023.11.0
platformio_options:
board_build.flash_mode: dio
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: esp-wrover-kit
framework:
type: arduino
version: recommended
external_components:
- source: github://rpatel3001/esphome@es8311
components: [ es8311 ]
- source: github://rpatel3001/esphome@es7210
components: [ es7210 ]
- source: github://pr#5230
components:
- esp_adf
# Enable logging
logger:
level: VERBOSE
##### API KEY #####
api:
encryption:
key: ${apikey}
##### OTA PASSWORD #####
ota:
password: ${wifi_password}
safe_mode: true
reboot_timeout: 3min
num_attempts: 3
text_sensor:
- platform: wifi_info
ip_address:
name: "${device_name} IP Address"
time:
platform: homeassistant
id: homeassistant_time
#### WIFI PASSWORD ###
wifi:
networks:
- id: wifi_default
ssid: ${wifi_ssid}
password: ${wifi_password}
use_address: 192.168.42.159
ap:
ssid: ${device_name}
password: ${wifi_password}
i2c:
sda: GPIO19
scl: GPIO32
scan: true
frequency: 400kHz
es8311:
address: 0x18
es7210:
address: 0x40
output:
- platform: gpio
id: pa_ctrl
pin: GPIO12
i2s_audio:
- id: codec
i2s_lrclk_pin: GPIO22
i2s_bclk_pin: GPIO25
i2s_mclk_pin:
number: GPIO0
allow_other_uses: true
- id: mic_adc
i2s_lrclk_pin: GPIO26
i2s_bclk_pin: GPIO27
i2s_mclk_pin:
number: GPIO0
allow_other_uses: true
speaker:
- platform: i2s_audio
id: external_speaker
dac_type: external
i2s_audio_id: codec
i2s_dout_pin: GPIO13
mode: mono
microphone:
- platform: i2s_audio
id: external_mic
adc_type: external
i2s_audio_id: mic_adc
i2s_din_pin: GPIO36
pdm: false
voice_assistant:
id: voice_asst
microphone: external_mic
speaker: external_speaker
noise_suppression_level: 2
auto_gain: 15dBFS
volume_multiplier: 0.5
use_wake_word: false
on_listening:
- light.turn_on:
id: led_ring
blue: 100%
red: 0%
green: 0%
brightness: 100%
effect: wakeword
on_tts_start:
- light.turn_on:
id: led_ring
blue: 0%
red: 0%
green: 100%
brightness: 50%
effect: pulse
on_end:
- delay: 100ms
- wait_until:
not:
speaker.is_playing:
- script.execute: reset_led
on_error:
- light.turn_on:
id: led_ring
blue: 0%
red: 100%
green: 0%
brightness: 100%
effect: none
- delay: 1s
- script.execute: reset_led
- script.wait: reset_led
- lambda: |-
if (code == "wake-provider-missing" || code == "wake-engine-missing") {
id(use_wake_word).turn_off();
}
script:
- id: reset_led
then:
- if:
condition:
switch.is_on: use_wake_word
then:
- light.turn_on:
id: led_ring
blue: 30%
red: 0%
green: 0%
brightness: 25%
effect: none
else:
- light.turn_off: led_ring
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(voice_asst).set_use_wake_word(true);
- if:
condition:
not:
- voice_assistant.is_running
then:
- voice_assistant.start_continuous
- script.execute: reset_led
on_turn_off:
- voice_assistant.stop
- script.execute: reset_led
# Restart option
- platform: restart
name: "${device_name} Restart"
light:
- platform: esp32_rmt_led_strip
id: led_ring
name: "${device_name} Light"
pin: GPIO33
num_leds: 12
rmt_channel: 0
rgb_order: GRB
chipset: ws2812
default_transition_length: 0s
effects:
- pulse:
name: "Pulse"
transition_length: 0.5s
update_interval: 0.5s
- addressable_twinkle:
name: "Working"
twinkle_probability: 5%
progress_interval: 4ms
- addressable_color_wipe:
name: "Wakeword"
colors:
- red: 28%
green: 100%
blue: 90%
num_leds: 12
add_led_interval: 40ms
reverse: false
binary_sensor:
- platform: template
name: "${device_name} Volume Up"
id: btn_volume_up
- platform: template
name: "${device_name} Volume Down"
id: btn_volume_down
- platform: template
name: "${device_name} Set"
id: btn_set
- platform: template
name: "${device_name} Play"
id: btn_play
- platform: template
name: "${device_name} Mode"
id: btn_mode
- platform: template
name: "${device_name} Record"
id: btn_record
on_press:
- output.turn_on: pa_ctrl
- voice_assistant.start:
- light.turn_on:
id: led_ring
brightness: 100%
effect: "Wakeword"
on_release:
- voice_assistant.stop:
- output.turn_off: pa_ctrl
- light.turn_off:
id: led_ring
# Status de connection
- platform: status
name: "${device_name} Status"
sensor:
- id: button_adc
platform: adc
internal: true
pin: 39
attenuation: 11db
update_interval: 15ms
filters:
- median:
window_size: 5
send_every: 5
send_first_at: 1
- delta: 0.1
on_value_range:
- below: 0.55
then:
- binary_sensor.template.publish:
id: btn_volume_up
state: ON
- above: 0.65
below: 0.92
then:
- binary_sensor.template.publish:
id: btn_volume_down
state: ON
- above: 1.02
below: 1.33
then:
- binary_sensor.template.publish:
id: btn_set
state: ON
- above: 1.43
below: 1.77
then:
- binary_sensor.template.publish:
id: btn_play
state: ON
- above: 1.87
below: 2.15
then:
- binary_sensor.template.publish:
id: btn_mode
state: ON
- above: 2.25
below: 2.56
then:
- binary_sensor.template.publish:
id: btn_record
state: ON
- above: 2.8
then:
- binary_sensor.template.publish:
id: btn_volume_up
state: OFF
- binary_sensor.template.publish:
id: btn_volume_down
state: OFF
- binary_sensor.template.publish:
id: btn_set
state: OFF
- binary_sensor.template.publish:
id: btn_play
state: OFF
- binary_sensor.template.publish:
id: btn_mode
state: OFF
- binary_sensor.template.publish:
id: btn_record
state: OFF
# Wifi signal
- platform: wifi_signal
name: "${device_name} WiFi Signal"
update_interval: 60s
en ce qui concerne l’intégration c’est ok le micro est bien reconnue
j’ai installer whisper piper et tout et tout comme ce tuto:
https://www.home-assistant.io/voice_control/voice_remote_local_assistant/
mais des que je prononcele mot magique , rien pas de reaction
Tu utilise quel moteur de wakeword dans ton pipeline ?
c’est celui du tuto openwakeword
Bof si tu n’as pas un super accent english.
Essai avec Porcupine1 puis par la suite tu as Porcupine et snowboy.
Mon cocktail gagnant c’est Porcupine + Vosk + piper
bon j’ai essayer, alors j’ai eu une seul reaction mais je sais pas commentj’ai fait, peut un autre paramétrage pour qu’il m’entende mieux
je sais pas si le micro me capte ou se qu’il capte,
C 'est bon des paramétrage dans le code esphome;
Maintenant il me capte bien mais les commandes sont catastrophique. il ne comprent pas « eteint » il me met 9/10 etat…
il ya moyen d’améliorer ca , entrainer la voix ou je sais pas ??
Sinon les delais de reponses sont horribles plus de 5 secondes voir le double . A votre avis c est du aux matériel ou pas ?
Si oui possible d externaliser ces services ? Les fairent s’exécuter sur un raspberry par exemple ou autres ( j ai des raspi 4 et un pc puissant qui attendent qu on les occupent).
Merci
Hello
Tu n’as pas pris le temps de lire les sujets que je t’ai proposé.
Remplace faster whisper par Vosk et tu verras une nette amélioration.
@+