Voice Assistant-Add support for the espressif esp32-korvo-v1.1
Describe the problem you have/What new integration you would like
Add support for the espressif esp32-korvo-v1.1, see documentation here: https://github.com/espressif/esp-skainet/blob/master/docs/en/hw-reference/esp32/user-guide-esp32-korvo-v1.1.md Please describe your use case for this integration and alternatives you've tried:
This will provide another option for a voice assistant with all the needed features built-in. Additional context
This board is available, relatively inexpensive, and has a microphone array, leds, and speaker output.
Searching, got me intrigued... The Korvo appears to be It looks like it may be using the same codebase as the what Espressif calls ESP-BOX (ie the ESP32-S3-BOX)... which puts it under the scope of https://github.com/esphome/feature-requests/issues/2239 - doesn't it?
hope someone could study how to add it into ESPHOME. it's it include a ADC es7210 and es8311CODEC and LED control chip.
Got one on order, will start playing with it as soon as I receive it.
I managed to get an ESP32-s3-Korvo-1 wooing with the setup posted https://github.com/joey-90/ESP32-S3-Korvo-1---Voice-Assistant/blob/main/voiceassistant.yaml
I can't get wake word detection working at the moment though
I managed to get an ESP32-s3-Korvo-1 wooing with the setup posted https://github.com/joey-90/ESP32-S3-Korvo-1---Voice-Assistant/blob/main/voiceassistant.yaml
I can't get wake word detection working at the moment though
Thanks @joey-90 for this. I copied the contents of the yaml from your repo and tried to compile/load for my board but I get these msgs when compiling. The firmware loads into the board but none of the i2s components load/work. Have you seen these warnings/errors when compiling? I am running ESPHome 2023.10.3.
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp: In member function 'void esphome::i2s_audio::I2SAudioMicrophone::start_()':
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::chan_mask' [-Wmissing-field-initializers]
};
^
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::total_chan' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::left_align' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::big_edin' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::bit_order_msb' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp:62:3: warning: missing initializer for member 'i2s_driver_config_t::skip_msk' [-Wmissing-field-initializers]
Compiling .pioenvs/esp32-voice-3/src/esphome/components/light/automation.o
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp: In static member function 'static void esphome::i2s_audio::I2SAudioSpeaker::player_task(void*)':
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::chan_mask' [-Wmissing-field-initializers]
};
^
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::total_chan' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::left_align' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::big_edin' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::bit_order_msb' [-Wmissing-field-initializers]
src/esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp:56:3: warning: missing initializer for member 'i2s_driver_config_t::skip_msk' [-Wmissing-field-initializers]
I have the same compilation warnings and the same (non VAD working) behaviour with my Korvo-2. I used the S3-box yaml. Same warnings during compilation, looking good during the device esphome startup log (as far as I know) but also no wakeword detection. As per Jessie it should work very similar to the S3-BOX though ... https://discord.com/channels/429907082951524364/1163574334472863815/1166079003950588006
I've updated the code posted in the repository as I have now got wake word detection working.
In team of compile errors, I did get some initially but was mostly caused by fat fingering repository names and not having the correct pin layout. I think the Korvo 2 and the non S3 Korvo have different Pin outs.
The key to getting it working mostly for me was using the esp32-s3-devkitc-1 board variant.
Have you got the code for this posted anywhere?
I've updated the code posted in the repository as I have now got wake word detection working.
In team of compile errors, I did get some initially but was mostly caused by fat fingering repository names and not having the correct pin layout. I think the Korvo 2 and the non S3 Korvo have different Pin outs.
The key to getting it working mostly for me was using the esp32-s3-devkitc-1 board variant.
Have you got the code for this posted anywhere?
Thanks, I'll dbl chk my board version, gpio pins.
I managed to get this working... As it turns out my esp32-korvo-v1.1 is not an esp32-s3, so I needed to change the board and the gpio pinouts. My board is this one: https://dl.espressif.com/dl/schematics/ESP32-KORVO_V1.1_schematics.pdf I am not 100% which board this should be in the esphome yaml, but I used the following:
esp32:
board: esp32dev
framework:
type: esp-idf
version: recommended
sdkconfig_options:
CONFIG_ESP32_DEFAULT_CPU_FREQ_240: "y"
Heres' the gpio pinouts I used:
i2c:
sda: GPIO19 #GPIO1
scl: GPIO32 #GPIO2
scan: true
frequency: 400kHz
output:
- platform: gpio
id: pa_ctrl
pin: GPIO12 #GPIO38
i2s_audio:
- id: codec
i2s_lrclk_pin: GPIO22 #GPIO41 #ws
i2s_bclk_pin: GPIO25 #GPIO40 #clk
i2s_mclk_pin: GPIO0 #GPIO42
- id: mic_adc
i2s_lrclk_pin: GPIO26 #GPIO9 #ws
i2s_bclk_pin: GPIO27 #GPIO10 #clk
i2s_mclk_pin: GPIO0 #GPIO20
speaker:
- platform: i2s_audio
id: external_speaker
dac_type: external
i2s_audio_id: codec
i2s_dout_pin: GPIO13 #GPIO39
mode: mono
microphone:
- platform: i2s_audio
id: external_mic
adc_type: external
i2s_audio_id: mic_adc
i2s_din_pin: GPIO36 #GPIO11
pdm: false
light:
- platform: esp32_rmt_led_strip
id: led_ring
name: "${friendly_name} Light"
pin: GPIO33 #GPIO19
sensor:
- id: button_adc
platform: adc
internal: true
pin: 39 #8
The microphone, wakeword, LED all work fine. I currently dont have an external speaker to test that.
A big thank you to @joey-90 for the yaml.
A-ha. Is it the WROOM-32-based module here? https://www.aliexpress.com/item/1005002803964499.html
For about $30, it's a steal if this can actually act as a voice assistant.
A-ha. Is it the WROOM-32-based module here? https://www.aliexpress.com/item/1005002803964499.html
For about $30, it's a steal if this can actually act as a voice assistant.
Yes, that's the one I am using.
That's the same board I ordered. Thanks to you guys for the work, I'll try it out as soon as I receive it. I'm thinking of 3D printing a small cylindrical case for it, with the board and microphones on top, and the speaker on the bottom. I'll post it after I get it designed.
I managed to get this working...
As it turns out my esp32-korvo-v1.1 is not an esp32-s3, so I needed to change the board and the gpio pinouts.
My board is this one: https://dl.espressif.com/dl/schematics/ESP32-KORVO_V1.1_schematics.pdf
I am not 100% which board this should be in the esphome yaml, but I used the following:
esp32: board: esp32dev framework: type: esp-idf version: recommended sdkconfig_options: CONFIG_ESP32_DEFAULT_CPU_FREQ_240: "y"Heres' the gpio pinouts I used:
i2c: sda: GPIO19 #GPIO1 scl: GPIO32 #GPIO2 scan: true frequency: 400kHz output: - platform: gpio id: pa_ctrl pin: GPIO12 #GPIO38 i2s_audio: - id: codec i2s_lrclk_pin: GPIO22 #GPIO41 #ws i2s_bclk_pin: GPIO25 #GPIO40 #clk i2s_mclk_pin: GPIO0 #GPIO42 - id: mic_adc i2s_lrclk_pin: GPIO26 #GPIO9 #ws i2s_bclk_pin: GPIO27 #GPIO10 #clk i2s_mclk_pin: GPIO0 #GPIO20 speaker: - platform: i2s_audio id: external_speaker dac_type: external i2s_audio_id: codec i2s_dout_pin: GPIO13 #GPIO39 mode: mono microphone: - platform: i2s_audio id: external_mic adc_type: external i2s_audio_id: mic_adc i2s_din_pin: GPIO36 #GPIO11 pdm: false light: - platform: esp32_rmt_led_strip id: led_ring name: "${friendly_name} Light" pin: GPIO33 #GPIO19 sensor: - id: button_adc platform: adc internal: true pin: 39 #8The microphone, wakeword, LED all work fine.
I currently dont have an external speaker to test that.
A big thank you to @joey-90 for the yaml.
Can you post somewhere the full YAML? I just ordered two of these, one for my test bench and one to create a nice setup once I can get a cool 3D printed case.
The microphone, wakeword, LED all work fine. I currently dont have an external speaker to test that. A big thank you to @joey-90 for the yaml.
Can you post somewhere the full YAML? I just ordered two of these, one for my test bench and one to create a nice setup once I can get a cool 3D printed case.
This is the full yaml I used. Please note I didn't manage to successfully test the speaker output. I am not sure if it was the speaker I was using or the yaml cfg.
substitutions:
friendly_name: esp32-voice-3
esphome:
name: esp32-voice-3
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: esp-idf
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:
# Enable Home Assistant API
api:
encryption:
key: <REDACTED>
ota:
password: <REDACTED>
wifi:
ssid: <REDACTED>
password: <REDACTED>
use_address: <REDACTED>
i2c:
sda: GPIO19 #GPIO1
scl: GPIO32 #GPIO2
scan: true
frequency: 400kHz
es8311:
address: 0x18
es7210:
address: 0x40
output:
- platform: gpio
id: pa_ctrl
pin: GPIO12 #GPIO38
i2s_audio:
- id: codec
i2s_lrclk_pin: GPIO22 #GPIO41 #ws
i2s_bclk_pin: GPIO25 #GPIO40 #clk
i2s_mclk_pin: GPIO0 #GPIO42
- id: mic_adc
i2s_lrclk_pin: GPIO26 #GPIO9 #ws
i2s_bclk_pin: GPIO27 #GPIO10 #clk
i2s_mclk_pin: GPIO0 #GPIO20
speaker:
- platform: i2s_audio
id: external_speaker
dac_type: external
i2s_audio_id: codec
i2s_dout_pin: GPIO13 #GPIO39
mode: mono
microphone:
- platform: i2s_audio
id: external_mic
adc_type: external
i2s_audio_id: mic_adc
i2s_din_pin: GPIO36 #GPIO11
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
light:
- platform: esp32_rmt_led_strip
id: led_ring
name: "${friendly_name} Light"
pin: GPIO33 #GPIO19
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: 0%
green: 50%
blue: 0%
num_leds: 12
add_led_interval: 40ms
reverse: false
binary_sensor:
- platform: template
name: "${friendly_name} Volume Up"
id: btn_volume_up
- platform: template
name: "${friendly_name} Volume Down"
id: btn_volume_down
- platform: template
name: "${friendly_name} Set"
id: btn_set
- platform: template
name: "${friendly_name} Play"
id: btn_play
- platform: template
name: "${friendly_name} Mode"
id: btn_mode
- platform: template
name: "${friendly_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
sensor:
- id: button_adc
platform: adc
internal: true
pin: 39 #8
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
```
Great input folks! Just received my device and tested it out. Problem with @asve99's example: I receive a lot of errors telling me that the speaker buffer is full:
[21:25:52][W][voice_assistant:283]: Receive buffer full.
[21:25:52][W][voice_assistant:293]: Speaker buffer full.
I have a classic wired apple headphone connected to the jack. Any ideas?
Has anyone tried putting an enclosure on this yet? I'm also curious about the dimensions. The only spec I found said it's 88mm wide but no mention of the height - especially since it appears to be 2 boards strapped together... pretty hard to find 2 prefabricated plastic enclosures... Is 3D printing the best option?
Just received my board today. If I get a chance this weekend to set it up, I'll work on designing a case that I have mind. 3D printing is the best option for this. I'll post my design when I finish it.
Just tried to program the board. When I connect the USB, it does not get recognized as a serial port, when I connect a FTDI board to the pads on the PCB, it does not recognize the type of ESP chip. Did you guys have to do anything special to program it, or could it be that I got a defective board?
Just tried to program the board. When I connect the USB, it does not get recognized as a serial port, when I connect a FTDI board to the pads on the PCB, it does not recognize the type of ESP chip. Did you guys have to do anything special to program it, or could it be that I got a defective board?
Initially I thought I had the same issue with my board (not detected), but the issue was that I needed to connect power to the board (via the usb power connector) and connect your PC via the UART usb port on the board.
Never mind, thanks for the help. Apparently the USB port on my computer had locked-up or something. I restarted my computer and it recognized it.
@joey-90 thanks for your config! It works great except the speaker. Did you got that to work? On mine there is no sound (I'm using the headphone jack)
I couldn't get the speaker to work either. I verified the I/O pins against the schematic, and they seem to match correctly. The following is what I get from the logs:
[21:42:04][D][voice_assistant:502]: Event Type: 8
[21:42:04][D][voice_assistant:572]: Response URL: "http://192.168.1.31:8123/api/tts_proxy/093290dcda7b2989879ced0ee701d7978ed0c34a_en-us_bcc7c1a994_tts.piper.raw"
[21:42:04][D][voice_assistant:395]: State changed from AWAITING_RESPONSE to STREAMING_RESPONSE
[21:42:04][D][voice_assistant:401]: Desired state set to STREAMING_RESPONSE
[21:42:04][D][i2s_audio.speaker:161]: Starting I2S Audio Speaker
[21:42:04][D][voice_assistant:502]: Event Type: 2
[21:42:04][D][voice_assistant:584]: Assist Pipeline ended
[21:42:04][D][i2s_audio.speaker:164]: Started I2S Audio Speaker
[21:42:04][D][voice_assistant:502]: Event Type: 98
[21:42:06][W][voice_assistant:293]: Speaker buffer full.
[21:42:06][W][voice_assistant:293]: Speaker buffer full.
[21:42:06][W][voice_assistant:293]: Speaker buffer full.
...
[21:42:07][W][voice_assistant:293]: Speaker buffer full.
[21:42:07][W][voice_assistant:293]: Speaker buffer full.
[21:42:07][D][voice_assistant:502]: Event Type: 99
[21:42:07][D][voice_assistant:395]: State changed from STREAMING_RESPONSE to RESPONSE_FINISHED
[21:42:07][D][voice_assistant:401]: Desired state set to IDLE
[21:42:07][D][voice_assistant:395]: State changed from RESPONSE_FINISHED to IDLE
Apologies for the delay in getting back to everyone, its been a busy week or two with work etc.
I also can't get the speaker output to work, the pin out is definitely correct. The same pin config is used in the demo firmware from Espressif. I get similar error messages to what you are seeing. I've got some updated yaml config to upload where I've been playing with some of the values for the Voice assistant etc.
Great! thank you, I would like to get this working. I'm also trying a couple of things on my end.
I received mine today and can't get Assistant to work. When pressing the record button and releasing it nothing happens and I also don't receive any events in Home Asssitant. The Debug Page of my Voice Assistant says: There where no events in this run.
Besides of that I can see the event of the button press and the LED state change in Home Assistant from the device.
I used the same config as @asve99
Anyone with an idea why this is not working for me?
I received mine today and can't get Assistant to work. When pressing the record button and releasing it nothing happens and I also don't receive any events in Home Asssitant. The Debug Page of my Voice Assistant says:
There where no events in this run.Besides of that I can see the event of the button press and the LED state change in Home Assistant from the device.
I used the same config as @asve99
Anyone with an idea why this is not working for me?
The buttons aren't tied to any functions at the moment, you have to leverage a wake word from my personal experience.
@pascalmtts see @joey-90 example on how to use the buttons. In his example voice is also working fine, but no sound output yet.
I am currently trying to add the Korvo1 board to ESP-ADF, which in turn should make it easy to get it into ESPHome.
The button record is tied to a function in the template above:
- platform: template
name: "${friendly_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
As I did not get the wake word to work I tried using the record button, as it should start and stop the voice assistant.
I am currently trying to add the Korvo1 board to ESP-ADF, which in turn should make it easy to get it into ESPHome.
That's great! I don't know if you also have the Korvo1.1 on the list because I think these are 2 different boards. The Korvo1.1 is much cheaper then ESP32-S3-Korvo-1
Edit:
Here is a log output from ESPHome when pressing, holding and then releasing the rec button:
[15:51:54][D][binary_sensor:036]: 'ESP32 Korvo Record': Sending state ON
[15:51:54][D][voice_assistant:395]: State changed from IDLE to START_PIPELINE
[15:51:54][D][voice_assistant:401]: Desired state set to START_MICROPHONE
[15:51:54][D][light:036]: 'ESP32 Korvo Light' Setting:
[15:51:54][D][light:047]: State: ON
[15:51:54][D][light:051]: Brightness: 100%
[15:51:54][D][light:109]: Effect: 'Wakeword'
[15:51:54][W][component:214]: Component adc.sensor took a long time for an operation (0.05 s).
[15:51:54][W][component:215]: Components should block for at most 20-30ms.
[15:51:54][D][voice_assistant:124]: microphone not running
[15:51:54][D][voice_assistant:206]: Requesting start...
[15:51:54][D][voice_assistant:395]: State changed from START_PIPELINE to STARTING_PIPELINE
[15:51:54][D][voice_assistant:124]: microphone not running
[15:51:54][D][voice_assistant:124]: microphone not running
[15:51:54][D][voice_assistant:124]: microphone not running
[15:51:54][D][voice_assistant:416]: Client started, streaming microphone
[15:51:54][D][voice_assistant:395]: State changed from STARTING_PIPELINE to START_MICROPHONE
[15:51:54][D][voice_assistant:401]: Desired state set to STREAMING_MICROPHONE
[15:51:54][D][voice_assistant:159]: Starting Microphone
[15:51:54][D][voice_assistant:395]: State changed from START_MICROPHONE to STARTING_MICROPHONE
[15:51:54][D][voice_assistant:395]: State changed from STARTING_MICROPHONE to STREAMING_MICROPHONE
[15:51:57][D][sensor:094]: 'button_adc': Sending state 3.13900 V with 2 decimals of accuracy
[15:51:57][D][binary_sensor:036]: 'ESP32 Korvo Volume Up': Sending state OFF
[15:51:57][D][binary_sensor:036]: 'ESP32 Korvo Volume Down': Sending state OFF
[15:51:57][D][binary_sensor:036]: 'ESP32 Korvo Set': Sending state OFF
[15:51:57][D][binary_sensor:036]: 'ESP32 Korvo Play': Sending state OFF
[15:51:57][D][binary_sensor:036]: 'ESP32 Korvo Mode': Sending state OFF
[15:51:57][D][binary_sensor:036]: 'ESP32 Korvo Record': Sending state OFF
[15:51:57][D][voice_assistant:495]: Signaling stop...
[15:51:57][D][voice_assistant:395]: State changed from STREAMING_MICROPHONE to STOP_MICROPHONE
[15:51:57][D][voice_assistant:401]: Desired state set to IDLE
[15:51:57][D][light:036]: 'ESP32 Korvo Light' Setting:
[15:51:57][D][light:047]: State: OFF
[15:51:57][D][light:109]: Effect: 'None'
[15:51:57][W][component:214]: Component adc.sensor took a long time for an operation (0.09 s).
[15:51:57][W][component:215]: Components should block for at most 20-30ms.
[15:51:57][D][voice_assistant:395]: State changed from STOP_MICROPHONE to STOPPING_MICROPHONE
[15:51:57][D][voice_assistant:395]: State changed from STOPPING_MICROPHONE to IDLE
Alright I got it working. Problem was in my Assist configuration - after selecting Piper as TTS it is working now. Audio is also not working in my case, but I think we will find a solution for this in the future
I've uploaded new YAML config having made some tweaks.
These are:
- Night light switch - enables a dim setting at night etc.
- Adjusted Voice assistant sensitivity - these are for a noisy room so YMMV
- Added a start up lighting routine.
Still no success with the sound output, but there is something to try. Will post over the weekend when I've had a chance to play.
Things to add:
- Detect WiFi connection lost and set indicator light
- Detect Home Assistant API status and set indicator lights
- Graft in changes from recent changes made by Jesserockz in Atom firmwares
- Look at using the SD card slot for local files
Please comment if there any suggestions and feel free to add pull requests if you see any errors or can add better code.