Voice Assistant esphome with Esp32-s3 - Max98357 - Inmp441

i use your latest v4 version (esp32-s3-devkitc-1-esp-idf-v4.yaml), no added any other sensors - i am talking about “tts” sudden stop problem - the problem happens sporadically

try to increase buffer_duration on speaker

edit:

what conversation agent are you using? do you have nabu casa subscription?
if you are using piper try with Homeassistant cloud



I use google cloud and google ai


Same problem as on voice pe - but it has been fixed.

that fix is been since 2025.5

I know, but for “external component” can you check again if there is any problem

There is difference between the Max98357 and the one voice PE is using, I don’t have the issues you had, and a made multiple assist, the only thing i think can be different is the DAC maybe from different manufactures there are two versions with different chip one is QFN package and the other is BGA package, not sure if that is cause of a problem, but did you try changing the buffer_duration on the speaker?

Oh, I haven’t tried what you said - to clarify I’m using DAC - QFN as in the picture. And the problem only appears on your latest V4 version. Previous version like V3 is completely normal.
Can I try like this? “buffer_duration: 120ms”

yes , just remember that increase the buffer will make the response take longer

also i forget to ask what esp32-s3 you are using 16mb or 8mb

yes, i use 16mb/esp32 s3 n16r8 - i tested many times and only got this problem on V4 :frowning:

I think it was changed in the last week in V4 or am I wrong?

Previously in the V3 version there was the possibility to control the LED light (I use a 12 LED circle) that I activated during the night as a courtesy light. In the V4 there is no light entity for the strip. How can I add it?

Give the light a name

light:

  • platform: esp32_rmt_led_strip
    id: led_internal
    name: “Status LED”
    internal: false
    rgb_order: GRB

you fix it like that

1 Like

Thanks… I already have the “light” as follow:

light:
  - platform: esp32_rmt_led_strip
    id: status_led
    name: "Status LED"
    chipset: WS2812
    pin: ${ledpin}
    num_leds: 12
    rgb_order: GRB
    restore_mode: ALWAYS_OFF      
    effects:
        - pulse:
            name: "Slow Pulse"
            transition_length: 250ms
            update_interval: 250ms
            min_brightness: 25%
            max_brightness: 50%
        - pulse:
            name: "Fast Pulse"
            transition_length: 100ms
            update_interval: 100ms
            min_brightness: 25%
            max_brightness: 50%
        - addressable_scan:
            name: "Scan"
            move_interval: 50ms
            scan_width: 2
        - addressable_lambda:
            name: Volume Level Display
            update_interval: 500ms
            lambda: |-
              float volume = id(speaker_media_player_id).volume;
              int num_leds_on = round(volume * 4);
              for (int i = 0; i < it.size(); i++) {
                if (i < num_leds_on) {
                  it[i] = Color(0, 0, 255); // Blue
                } else {
                  it[i] = Color::BLACK;
                }

should I change this or should I add a new entity?

EDIT: SOVE IT…
I JUST PUT

internal: false

As it has a name, it should show as an entity. Have you searched for it? Done a refresh on the device page?

Nope… I just added now:

internal: false

Very strange… on the same conf on 2 ESP32S3 different… one is working and one is not

I thought internal defaulted to false

I honestly don’t know… however on two identical devices with the same configuration… with “internal: false” it shows the light as an entity in the second device instead no. This is very strange.

can you post the .yaml file here ?