"ReSpeaker Lite" - new Seeed Studio Voice Assistant Development Kit hardware combine ESP32 with XMOS XU316 DSP chip for advanced audio processing as a ESPHome-based Home Assistant Assist Satellite voice devkit

I don’t want to transform the thread into soldering guide. :slight_smile:

In general, you can use whatever 5V you find. GND is recommended to be common.
All 5V pads you find will be basically the same cable.
However, for LED I’d use 5V as close as I can to the power input - just because it can take relatively big current, and it can damage trace on the board.

As there is only 1 5v pad on the esp board and none on the respeaker board I will splice into the 5v wire going to the respeaker board to power the led and encoder.
I will post any future questions I may have on the koala github.

2 Likes

Hey Folks

I’m trying to set up a couple of the ReSpeaker kits and am hitting a snag at the ESP download stage. When I select “Install” and “Manual Download” I get this error

INFO ESPHome 2024.12.2
INFO Reading configuration /config/esphome/respeaker1.yaml...
INFO Generating C++ source...
INFO Updating https://github.com/espressif/[email protected]
INFO Compiling app...
Processing esp32s3 (board: esp32-s3-devkitc-1; framework: espidf; platform: https://github.com/pioarduino/platform-espressif32.git#51.03.07)
--------------------------------------------------------------------------------
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
 - framework-espidf @ 3.50105.0 (5.1.5) 
 - tool-cmake @ 3.21.3 
 - tool-esptoolpy @ 4.8.1 
 - tool-mklittlefs @ 3.2.0 
 - tool-ninja @ 1.7.1 
 - tool-riscv32-esp-elf-gdb @ 12.1.0+20221002 
 - tool-xtensa-esp-elf-gdb @ 12.1.0+20221002 
 - toolchain-esp32ulp @ 2.35.0-20220830 
 - toolchain-riscv32-esp @ 12.2.0+20230208 
 - toolchain-xtensa-esp32s3 @ 12.2.0+20230208
Reading CMake configuration...
No dependencies
Compiling .pioenvs/esp32s3/src/esphome/components/i2s_audio_xiao/i2s_audio_xiao.cpp.o
Compiling .pioenvs/esp32s3/src/esphome/components/i2s_audio_xiao/speaker/i2s_audio_speaker.cpp.o
In file included from src/esphome/components/i2s_audio_xiao/i2s_audio_xiao.h:5,
                 from src/esphome/components/i2s_audio_xiao/i2s_audio_xiao.cpp:1:
/data/cache/platformio/packages/framework-espidf/components/driver/deprecated/driver/i2s.h:27:2: warning: #warning "This set of I2S APIs has been deprecated, please include 'driver/i2s_std.h', 'driver/i2s_pdm.h' or 'driver/i2s_tdm.h' instead. if you want to keep using the old APIs and ignore this warning, you can enable 'Suppress leagcy driver deprecated warning' option under 'I2S Configuration' menu in Kconfig" [-Wcpp]
   27 | #warning "This set of I2S APIs has been deprecated, \
      |  ^~~~~~~
In file included from src/esphome/components/i2s_audio_xiao/speaker/../i2s_audio_xiao.h:5,
                 from src/esphome/components/i2s_audio_xiao/speaker/i2s_audio_speaker.h:5,
                 from src/esphome/components/i2s_audio_xiao/speaker/i2s_audio_speaker.cpp:1:
/data/cache/platformio/packages/framework-espidf/components/driver/deprecated/driver/i2s.h:27:2: warning: #warning "This set of I2S APIs has been deprecated, please include 'driver/i2s_std.h', 'driver/i2s_pdm.h' or 'driver/i2s_tdm.h' instead. if you want to keep using the old APIs and ignore this warning, you can enable 'Suppress leagcy driver deprecated warning' option under 'I2S Configuration' menu in Kconfig" [-Wcpp]
   27 | #warning "This set of I2S APIs has been deprecated, \
      |  ^~~~~~~
src/esphome/components/i2s_audio_xiao/i2s_audio_xiao.cpp: In member function 'virtual void esphome::i2s_audio_xiao::I2SAudioComponent::setup()':
src/esphome/components/i2s_audio_xiao/i2s_audio_xiao.cpp:15:24: error: 'I2S_NUM_MAX' was not declared in this scope; did you mean 'I2S_NUM_1'?
   15 |   if (next_port_num >= I2S_NUM_MAX) {
      |                        ^~~~~~~~~~~
      |                        I2S_NUM_1
*** [.pioenvs/esp32s3/src/esphome/components/i2s_audio_xiao/i2s_audio_xiao.cpp.o] Error 1
src/esphome/components/i2s_audio_xiao/speaker/i2s_audio_speaker.cpp: In static member function 'static void esphome::i2s_audio_xiao::I2SAudioSpeaker::player_task(void*)':
src/esphome/components/i2s_audio_xiao/speaker/i2s_audio_speaker.cpp:54:24: error: 'I2S_MCLK_MULTIPLE_DEFAULT' was not declared in this scope; did you mean 'I2S_MCLK_MULTIPLE_512'?
   54 |       .mclk_multiple = I2S_MCLK_MULTIPLE_DEFAULT,
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                        I2S_MCLK_MULTIPLE_512
*** [.pioenvs/esp32s3/src/esphome/components/i2s_audio_xiao/speaker/i2s_audio_speaker.cpp.o] Error 1
========================== [FAILED] Took 4.64 seconds ==========================

Anyone able to shed light on this at all?

Make sure you have latest ESPHome version and updated libraries.

I’m using ESPHome Device Builder addon ver: 2024.12.2 :man_shrugging:

I just updated the repository. What was done:

  • removed obsolete 16kHz firmware;
  • refactored main YAML to be closer to Koala, for easier support and bugfixes;
  • added some useful switches and sensors (switches for ambient sounds, sensors for next timer on device);
  • since it’s based on Koala, the onboarding process to the HA and choosing the wake word should work fine now.
5 Likes

Check the new firmware. It 100% works with 2024.12.2.

Very specific question but has anyone harvested the speaker from a nest mini or google mini and tried to plug it in?

It LOOKs like the speaker connector is the same. Also curious how much the sound comes down to the case acoustics vs the quality of the speaker

You might instead be interested in following this Onju Voice feature request discussion about making updated custom PCB design to be drop-in replacement the original circut board inside the Google Home Mini and Google Nest Mini → [REQUEST] Update PCB design with added XMOS chip for advanced audio processing as used in Home Assistant Voice: Preview Edition? · Issue #59 · justLV/onju-voice · GitHub

The enclosure is the defining part. I tried to use speaker from IKEA VAPPEBY before - and it works much, much better in stock enclosure, than in generic one.

Aww that answers my question. I was aware of the Onju but not the new request… I do want micro wake word and just figured swiping the speaker would be good enough.

If the enclosure shape is critical to sound quality then that is a more complicated issue.

As the ReSpeaker Lite is available now and getting my hands on old minis is easy since I already have 5 and I see them used for cheap regularly I figured just grabbing the speaker would be easiest.

A full drop in micro wake word board would be nice but from the look of the thread the dev does not have access to gen 1 hardware which is what I have.

I don’t understand what you’re referring to under “micro wake word board”.
Respeaker Lite needs ESP32 firmware with Microwakeword anyways (well, you can use Openwakeword, but that requires changes in firmware). And it still needs esp32s3 board, even if you take speaker from old Alexa. :slight_smile:

I was talking about the Onju I wasn’t sure you could use microwake word with it ( a little more searching indicates there is a firmware with it now), besides it is the wrong generation for my minis I have the first gen ones.

yes I am aware both need an esp32s3 board, included on some of the shipping options.

Ether way the idea was to YANK a good speaker out and put it in a new solution / case vs trying to get a custom board that exactly fits my 5 existing G1 google minis.

I see. Well, I’d rather sell minis and buy some speakers from AliExpress or Amazon. It will be cheaper than ripping off speakers from minis. Let them go. :slight_smile:

I just updated my ReSpeaker using the latest YAML and all works great especially the additional sensors/switched so thanks for the great work. However I noticed the RGB led is constantly on with blue color, i checked the log and it looks like the user button keeps going on and off all the time. Please note that I don’t have my user button soldered on the ReSpeaker. Would that be the reason?
I also notice that the device started to produce a ringing like sound every now and then without any physical/voice trigger.

Below is the log from ESPHome:

[10:16:21][D][binary_sensor:036]: 'User button': Sending state ON
[10:16:21][D][light:036]: 'LED Respeaker onboard' Setting:
[10:16:21][D][light:051]:   Brightness: 80%
[10:16:21][D][light:058]:   Red: 0%, Green: 0%, Blue: 100%
[10:16:21][D][binary_sensor:036]: 'User button': Sending state OFF
[10:16:21][D][light:036]: 'LED Respeaker onboard' Setting:
[10:16:21][D][light:051]:   Brightness: 50%
[10:16:21][D][light:058]:   Red: 100%, Green: 20%, Blue: 100%
[10:16:21][D][binary_sensor:036]: 'User button': Sending state ON
[10:16:21][D][light:036]: 'LED Respeaker onboard' Setting:
[10:16:21][D][light:051]:   Brightness: 80%
[10:16:21][D][light:058]:   Red: 0%, Green: 0%, Blue: 100%
[10:16:21][D][binary_sensor:036]: 'User button': Sending state OFF
[10:16:21][D][light:036]: 'LED Respeaker onboard' Setting:
[10:16:21][D][light:051]:   Brightness: 50%
[10:16:21][D][light:058]:   Red: 100%, Green: 20%, Blue: 100%
[10:16:21][D][binary_sensor:036]: 'User button': Sending state ON
[10:16:21][D][light:036]: 'LED Respeaker onboard' Setting:
[10:16:21][D][light:051]:   Brightness: 80%
[10:16:21][D][light:058]:   Red: 0%, Green: 0%, Blue: 100%
[10:16:22][D][binary_sensor:036]: 'User button': Sending state OFF
[10:16:22][D][light:036]: 'LED Respeaker onboard' Setting:
[10:16:22][D][light:051]:   Brightness: 50%
[10:16:22][D][light:058]:   Red: 100%, Green: 20%, Blue: 100%

@formatBCE Same for me. since I updated to the newest firmware, the LED constantly flashing blue, which is very annoying :confused:

I can confirm, it’s because the user button is not connected. I just updated another ReSpeaker which has the user button connected and it works great. So I think i will need to solder all of my devices which will also add a switch and more functionalities

FYI, for reference, ESP32-AIVoice-Z01 is now available as a very low-cost battery-powered ESP32-S3 AI voice kit development kit, but it does not feature a dedicated hardware DSP like the XMOS xCORE MCU for noise reduction + echo cancellation but instead they implemented audio algorithms running on the ESP32 for that → https://www.youyeetoo.com/products/esp32-aivoice-z01-esp32-s3-ai-kit?VariantsId=12402

This will behave like old Respeaker hats, or inmp441. Unreliable and obsolete. Probably. Or maybe, they made something better than XMOS does?

P.S. Guys from Seeed reached out today, asking to check similar solution on Respeaker Lite working with OpenAI. Looks like same stuff that is shown on video (fast communication voice-to-voice with ChatGPT).
However, it won’t work with Home Assistant - rather like personal GPT speaker.

@haidar23 @maglat yeah sorry guys, all my setups are built with soldering usr and mute buttons on, for maximum features.

You can modify YAML to remove everything related to user button, and it will stop misbehaving. The pin D2 is floating by default, so if it’s not soldered to button, it will flicker programmatic button state. Weird sounds are also result of button presses.