backup 20240718
This commit is contained in:
320
esphome/cfg_experimental/voiceassistS3.yaml
Normal file
320
esphome/cfg_experimental/voiceassistS3.yaml
Normal file
@@ -0,0 +1,320 @@
|
||||
substitutions:
|
||||
device_name: "voiceassist1"
|
||||
friendly_name: "ESP32 voice Assist 2"
|
||||
comment: "esp32-s3, mic, dac, RGB"
|
||||
api_password: !secret voiceassist1_api
|
||||
ota_password: !secret ota_password
|
||||
wifi_ssid: !secret wifi_ssid
|
||||
wifi_password: !secret wifi_password
|
||||
gateway: !secret ip_gateway
|
||||
subnet: !secret ip_subnet
|
||||
ip: !secret voiceassist1_ip
|
||||
pin_lrclk: GPIO18
|
||||
pin_bclk: GPIO6
|
||||
pin_i2sdin: GPIO16
|
||||
pin_i2sdout: GPIO17
|
||||
#pin_button: GPIO14
|
||||
pin_led1: GPIO48
|
||||
num_leds: "1"
|
||||
chipset: ws2812
|
||||
|
||||
micro_wake_word_model: okay_nabu
|
||||
|
||||
voice_assist_idle_phase_id: "1"
|
||||
voice_assist_listening_phase_id: "2"
|
||||
voice_assist_thinking_phase_id: "3"
|
||||
voice_assist_replying_phase_id: "4"
|
||||
voice_assist_not_ready_phase_id: "10"
|
||||
voice_assist_error_phase_id: "11"
|
||||
voice_assist_muted_phase_id: "12"
|
||||
|
||||
packages:
|
||||
board: !include boards/esp32-s3-voice.yaml
|
||||
spkmic: !include interfaces/SpkMicVoice.yaml
|
||||
leds: !include templates/light_rgbw_rmt.yaml
|
||||
connection: !include common/wifi.yaml
|
||||
logger: !include templates/logger.yaml
|
||||
|
||||
|
||||
esphome:
|
||||
name: ${device_name}
|
||||
friendly_name: ${friendly_name}
|
||||
name_add_mac_suffix: true
|
||||
platformio_options:
|
||||
board_build.flash_mode: dio
|
||||
min_version: 2023.11.5
|
||||
project:
|
||||
name: esphome.voice-assistant
|
||||
version: "2.0"
|
||||
on_boot:
|
||||
priority: 600
|
||||
then:
|
||||
- delay: 30s
|
||||
- if:
|
||||
condition:
|
||||
lambda: return id(init_in_progress);
|
||||
then:
|
||||
- lambda: id(init_in_progress) = false;
|
||||
- light.turn_on:
|
||||
id: led_lights
|
||||
brightness: 30%
|
||||
red: 0%
|
||||
green: 50%
|
||||
blue: 50%
|
||||
effect: pulse
|
||||
|
||||
dashboard_import:
|
||||
package_import_url: github://esphome/firmware/wake-word-voice-assistant/esp32-s3-box.yaml@main
|
||||
|
||||
button:
|
||||
- platform: factory_reset
|
||||
id: factory_reset_btn
|
||||
name: Factory reset
|
||||
|
||||
esp32_improv:
|
||||
authorizer: none
|
||||
|
||||
binary_sensor:
|
||||
- platform: gpio
|
||||
pin:
|
||||
number: GPIO1
|
||||
inverted: true
|
||||
name: "Mute"
|
||||
disabled_by_default: true
|
||||
entity_category: diagnostic
|
||||
|
||||
micro_wake_word:
|
||||
model: ${micro_wake_word_model}
|
||||
on_wake_word_detected:
|
||||
- voice_assistant.start
|
||||
|
||||
voice_assistant:
|
||||
id: va
|
||||
microphone: mic
|
||||
use_wake_word: true
|
||||
noise_suppression_level: 2
|
||||
auto_gain: 31dBFS
|
||||
volume_multiplier: 2.0
|
||||
speaker: big_speaker
|
||||
on_client_connected:
|
||||
- if:
|
||||
condition:
|
||||
switch.is_off: mute
|
||||
then:
|
||||
- wait_until:
|
||||
not: ble.enabled
|
||||
- if:
|
||||
condition:
|
||||
lambda: return id(wake_word_engine_location).state == "In Home Assistant";
|
||||
then:
|
||||
- lambda: id(va).set_use_wake_word(true);
|
||||
- voice_assistant.start_continuous:
|
||||
- if:
|
||||
condition:
|
||||
lambda: return id(wake_word_engine_location).state == "On device";
|
||||
then:
|
||||
- micro_wake_word.start
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
|
||||
else:
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_muted_phase_id};
|
||||
- lambda: id(init_in_progress) = false;
|
||||
- light.turn_on:
|
||||
id: led_lights
|
||||
brightness: 30%
|
||||
red: 0%
|
||||
green: 100%
|
||||
blue: 0%
|
||||
effect: none
|
||||
on_listening:
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_listening_phase_id};
|
||||
- light.turn_on:
|
||||
id: led_lights
|
||||
brightness: 30%
|
||||
red: 0%
|
||||
green: 100%
|
||||
blue: 0%
|
||||
effect: pulse
|
||||
on_stt_vad_end:
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_thinking_phase_id};
|
||||
- light.turn_on:
|
||||
id: led_lights
|
||||
brightness: 30%
|
||||
red: 0%
|
||||
green: 100%
|
||||
blue: 100%
|
||||
effect: Pulse
|
||||
on_tts_stream_start:
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_replying_phase_id};
|
||||
- light.turn_on:
|
||||
id: led_lights
|
||||
brightness: 30%
|
||||
red: 0%
|
||||
green: 100%
|
||||
blue: 100%
|
||||
effect: none
|
||||
on_tts_stream_end:
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
|
||||
- light.turn_on:
|
||||
id: led_lights
|
||||
brightness: 30%
|
||||
red: 0%
|
||||
green: 0%
|
||||
blue: 100%
|
||||
effect: Pulse
|
||||
on_error:
|
||||
- if:
|
||||
condition:
|
||||
lambda: return !id(init_in_progress);
|
||||
then:
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_error_phase_id};
|
||||
- delay: 1s
|
||||
- if:
|
||||
condition:
|
||||
switch.is_off: mute
|
||||
then:
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
|
||||
else:
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_muted_phase_id};
|
||||
- light.turn_on:
|
||||
id: led_lights
|
||||
brightness: 30%
|
||||
red: 100%
|
||||
green: 0%
|
||||
blue: 0%
|
||||
effect: Pulse
|
||||
- delay: 4s
|
||||
- light.turn_off:
|
||||
id: led_lights
|
||||
on_client_disconnected:
|
||||
- if:
|
||||
condition:
|
||||
lambda: return id(wake_word_engine_location).state == "In Home Assistant";
|
||||
then:
|
||||
- lambda: id(va).set_use_wake_word(false);
|
||||
- voice_assistant.stop:
|
||||
- if:
|
||||
condition:
|
||||
lambda: return id(wake_word_engine_location).state == "On device";
|
||||
then:
|
||||
- micro_wake_word.stop
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_not_ready_phase_id};
|
||||
- light.turn_on:
|
||||
id: led_lights
|
||||
brightness: 30%
|
||||
red: 100%
|
||||
green: 0%
|
||||
blue: 0%
|
||||
effect: none
|
||||
on_end:
|
||||
- if:
|
||||
condition:
|
||||
and:
|
||||
- switch.is_off: mute
|
||||
- lambda: return id(wake_word_engine_location).state == "On device";
|
||||
then:
|
||||
- wait_until:
|
||||
not:
|
||||
voice_assistant.is_running:
|
||||
- micro_wake_word.start:
|
||||
|
||||
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);
|
||||
|
||||
- platform: template
|
||||
name: Mute
|
||||
id: mute
|
||||
optimistic: true
|
||||
restore_mode: RESTORE_DEFAULT_OFF
|
||||
entity_category: config
|
||||
on_turn_off:
|
||||
- if:
|
||||
condition:
|
||||
lambda: return !id(init_in_progress);
|
||||
then:
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
|
||||
- if:
|
||||
condition:
|
||||
not:
|
||||
- voice_assistant.is_running
|
||||
then:
|
||||
- if:
|
||||
condition:
|
||||
lambda: return id(wake_word_engine_location).state == "In Home Assistant";
|
||||
then:
|
||||
- lambda: id(va).set_use_wake_word(true);
|
||||
- voice_assistant.start_continuous
|
||||
- if:
|
||||
condition:
|
||||
lambda: return id(wake_word_engine_location).state == "On device";
|
||||
then:
|
||||
- micro_wake_word.start
|
||||
on_turn_on:
|
||||
- if:
|
||||
condition:
|
||||
lambda: return !id(init_in_progress);
|
||||
then:
|
||||
- lambda: id(va).set_use_wake_word(false);
|
||||
- voice_assistant.stop
|
||||
- micro_wake_word.stop
|
||||
- lambda: id(voice_assistant_phase) = ${voice_assist_muted_phase_id};
|
||||
|
||||
select:
|
||||
- platform: template
|
||||
entity_category: config
|
||||
name: Wake word engine location
|
||||
id: wake_word_engine_location
|
||||
optimistic: true
|
||||
restore_value: true
|
||||
options:
|
||||
- In Home Assistant
|
||||
- On device
|
||||
initial_option: On device
|
||||
on_value:
|
||||
- wait_until:
|
||||
lambda: return id(voice_assistant_phase) == ${voice_assist_muted_phase_id} || id(voice_assistant_phase) == ${voice_assist_idle_phase_id};
|
||||
- if:
|
||||
condition:
|
||||
lambda: return x == "In Home Assistant";
|
||||
then:
|
||||
- micro_wake_word.stop
|
||||
- delay: 500ms
|
||||
- if:
|
||||
condition:
|
||||
switch.is_off: mute
|
||||
then:
|
||||
- lambda: id(va).set_use_wake_word(true);
|
||||
- voice_assistant.start_continuous:
|
||||
- if:
|
||||
condition:
|
||||
lambda: return x == "On device";
|
||||
then:
|
||||
- lambda: id(va).set_use_wake_word(false);
|
||||
- voice_assistant.stop
|
||||
- delay: 500ms
|
||||
- micro_wake_word.start
|
||||
|
||||
globals:
|
||||
- id: init_in_progress
|
||||
type: bool
|
||||
restore_value: false
|
||||
initial_value: "true"
|
||||
- id: voice_assistant_phase
|
||||
type: int
|
||||
restore_value: false
|
||||
initial_value: ${voice_assist_not_ready_phase_id}
|
||||
Reference in New Issue
Block a user