#Can I get an ESP32-S3 Smart speaker to use assist_satellite.announce ?

1 messages ยท Page 1 of 1 (latest)

zenith dirge
#

I am trying to make a speaker with an ESP32-S3-Dev1 board that can use the "assist_satellite.announce" to push TTS from an automation. This will be used for medication reminders. I can not find any information in the documents to tell me what I need to add in ESPhome to make this available.

I tried setting up a standard Voice Assistant that works with the wake word, but it will not let me select it when I try to use assist_satellite.announce.

I also tried setting up a media player and I can push TTS to it using tts.speak, but still nothing from assist_satellite.announce.

Recently I am using the Speaker Audio Media Player combo and that got the voice assistant to pop up in assist_satellite.announce, but it crashed the ESP32 and never showed up again.

Is there something I am missing? Is there some code I need to add to the ESPHome YAML? Will this only work on some devices?

Thanks for your help.

void python
#

and do you have the latest home assistant and esphome builder installed?

zenith dirge
#

ESPHome and HOme Assistant are updated to the latest versions. The 2025.4.1 update broke the media player code that was working. now I am using the following code but it keeps crashing from time to time:

#

I switched form using the media player to adding speaker due to the 2025.4.1 update not stopping playback after the TTS announcements. Now I get many errors and it still fails to stop the player even though I tell it to after on_tts_stream_end:

void python
#
    then:
      - media_player.toggle:
          id: media_out```
no idea what this is about for example
zenith dirge
#

Yeah, I was adding a button to trigger listening through automations. It had worked but things have been funky since the update.

here is the previous code:

zenith dirge
#

I still would love to use the assist_satellite.announce, but I have yet to find any example code that works with it.

mild jay
#

Just use satellite code from Voice PE. You will need 2 microphones I guess to work with Microwakeword, but overall it should do. Because for assist_satellite you need actual satellite...
Or use Respeaker Lite as your mic array and amplifier.

void python
mild jay
void python
mild jay
#

One for MWW, one for VA

#

Different mics

void python
#

no

#

thats not how that works

mild jay
#

And if you have the working config for satellite, using elements from PE GitHub repo with single mic, please share.

void python
void python
# mild jay And if you have the working config for satellite, using elements from PE GitHub ...

I had MWW and VA working fine on a single mic on a dev board the other day. granted it was slow and shakey but that was cos it was an shitty dev board. but it works. or something magic happened during my testing where it was working with my INMP441

now I am not an expert on the exact implementation but from what I can see on the VPE there are 2 streams but they are both generated from the mic array which combines the mics.

  - platform: nabu_microphone
    i2s_din_pin: GPIO15
    adc_type: external
    pdm: false
    sample_rate: 16000
    bits_per_sample: 32bit
    i2s_mode: secondary
    i2s_audio_id: i2s_input
    channel_0:
      id: asr_mic
      amplify_shift: 0
    channel_1:
      id: comm_mic
      amplify_shift: 2```

they both get the input and generate 2 channels with different amplify shifts which may then be used separately
#

maybe i misunderstand the implementation and i am happy to be educated on that front but what I can guarantee you is MWW and VA will work with a single mic. why wouldnt they? MWW is listening for WW, it detects and triggers VA which stops MWW and streams the mic

mild jay
#

Like, how you grab those two doesn't matter - in case of PE/Respeaker the DFU firmware gives two streams (one with AEC and another one clean, for MWW).

void python
#

yeah, but they both use both mics is my point, assuming nabu_microphone gets moved upstream i am pretty sure will be able to do that on any mic be it single or an array

#

could potentially import nabu_microphone directly as a package but i have no idea if it would work with other setups. and i am pretty sure if i tried to do it on my crappy dev board it will complain drastically

#

i thought about getting a new board for it but then i realised if i was gunna do that i should just get a respeaker and call it a day

#

project was just a toy messing with voice, as i wanted something other than a atom echo, i shelved it when the VPE release was imminent.

mild jay
void python
#

the channels are both made from the same source

mild jay
mild jay
void python
#

crude and missing a few steps but

#

thats as i understand it anyway

mild jay
#

Not quite

#

It has 2 channels before nabu_microphone

#

It's DFU (XU-316 chip) software that does create those two channels.

void python
#

it comes out the xmos chip as 1 combined (and cleaned up/equalised)

mild jay
#

XMOS chip consolidates input, then splits it for 2, applies NC to one of them, and makes 2-channel "stereo" microphone.
Then nabu_microphone is exposing one channel (with NC) for voice_assistant, and another one (basically raw) for Microwakeword.

#

We were doing the same for Respeaker Lite with Seeed devs, when I explained this to them. Before that Respeaker was sending two identical streams to both channels...

#

Anyways. Didn't mean to bomb the thread. ๐Ÿ™‚

#

Sorry!

void python
#

yeah that seems right, there are 2 channels but both of them are generate from all mics in the array (granted with different processing) each channel is not specific to a mic

void python
# mild jay Sorry!

yeah me too ๐Ÿ˜› dont want to be hostile but my orginal point is that you can run MWW/VA on 1 mic and i feel that stands ๐Ÿ™‚

mild jay
#

No, not specific. I believe it should actually make beam forming first (not that it's pretty possible with 2 mics)

mild jay
void python
#

i am happy to learn, i hope we didnt chase off richard though. and i hope the config i made for him works ๐Ÿ™‚

mild jay
#

But it was far ago.

#

However, that voice_assistant still isn't merged to main

#
- source:
      type: git
      url: https://github.com/esphome/home-assistant-voice-pe
      ref: dev
    components:
      - micro_wake_word
      - microphone
      - voice_assistant

So to use announce on S3, you have to use that component from PE repo.

void python
#

i am sure i could call it on my dev board the other day

#

[api] add voice assistant announce to the api esphome#8395 by @kahrendt

#

perhaps its just in the API and not fully in the component

mild jay
#

Probably... Or Kevin added it to the default VA...

void python
#

yeah stuff is starting to move upstream

mild jay
#

I will move upstream when PE does ๐Ÿ™‚

void python
#

sec ill grab my echo, that uses the stock components

#

so announce does work, but preannounce media does not

#

so you get the tts but no ping

mild jay
#

Yeah that ding dong is PE thing

#

Well I did it on Koala too

void python
#

i tried a custom one too, it just does the tts there too

mild jay
void python
#

i guess preannounce media isnt upstream yet so it just ignored it, i didnt check the logs

mild jay
#

Yeah it's PE feature I guess