ReSpeaker XMOS XVF3800 ESPHome integration

I’ve been using this integration for a couple of weeks now and it works well and the ReSpeaker voice detection range is impressive. The reSpeaker is located approx. 10 feet from the audio source and while watching TV, it frequently picks up what it thinks is the wake word and then starts listening to the spoken audio. I’m using Ollama as a conversation agent, and after listening for a while Ollama comments on what it “heard”.

I’m using the “Hey Mycroft” wake word and while watching TV last night it false detected 4 times in approx. 2 hours. I’ve tried “Kenobi” and the false detection rate was far worse. I’ll give “Hey Jarvis” and “Hey Nabu” a go but wanted to check if it was possible to set wake word sensitivity.

I also went down the openwakeword rabbit hole and actually trained a model, spun up a rhasspy/wyoming-openwakeword docker container and got everything setup only to find out openwakeword isn’t supported in the ReSpeaker firmware. Any chance that’ll be an option sometime in the near future?

Openwakeword is not supported by either of Voice PE, Respeakers, or Satellite1. There are many reasons to that, and I don’t plan to do it - although in theory it’s possible.
Regarding wake word sensitivity: there’s drop-down in device settings for it. It doesn’t however work for Kenobi word, since that one is just custom one for presentation.
From all available models, “Ok Nabu” is the best - it was tailored with real voice samples and fine-tuned by NabuCasa guys. Others aren’t that good.

I forgot that I had already set wake word sensitivity and had it set to “Slightly sensitive” which I assume to be strictest match?

I’ll give Ok Nabu a try. Thanks again for your work on this.

Having an issue when I try to compile and download a .bin to flash to the esp32 I keep getting this error.

INFO ESPHome 2026.2.4
INFO Reading configuration /config/esphome/livingroom-speaker.yaml…
INFO Updating https://github.com/formatBCE/esphome@respeaker_microphone
Failed config

external_components: [source /config/esphome/livingroom-speaker.yaml:1368]

Could not find components folder for source. Please check the source contains a 'components' or 'esphome/components' folder.
source: 
  type: git
  url: https://github.com/formatBCE/esphome
  ref: respeaker_microphone
components: 
  - i2s_audio
refresh: 0s

All the same. Clean caches, restart ESPHome. Build files are correct. I verify it with every ESPHome release.

Hi everyone,

I recently picked up the XVF3800 (Xiao ESP version) and flashed it with the formatBCE firmware. Everything seems to be working fine except for the AEC (Acoustic Echo Cancellation).

When I play music through my WiiM Mini to the speakers at a higher volume, the XVF3800 fails to pick up my voice for the wake word. I also tested playing music directly through the XVF3800 (Respeaker media player), but the result was the same—it simply can’t hear me over the music.

Has anyone encountered this or have any suggestions on how to properly calibrate or fix the AEC for this setup? Thanks in advance!

Seeed devs state that AEC works when speaker is under the device, vertical, while device is horizontal. I use it in this configuration, and it works pretty good with canceling the inpot from mics. And of course, with external speakers it won’t work, as there’s no reference signal. This is job for NC, and proper beam forming after. It doesn’t work well so far, but there are optimizations in the works.

Hi Andrii, thanks for your reply.

I tested playing music through the XVF3800 (ReSpeaker media player) using the 3.5mm line connected to my external speakers. Since the audio is routed through the device, I assume the XVF3800 already has the necessary reference signal. However, the result remains the same: the device fails to recognize the wake word over the music.

This makes me wonder whether the AEC on the XVF3800 is actually functioning as intended in this setup. Any insights on this?

As I said, I use it like this (with 3.5mm output to pretty good amplified speaker). For me it’s pretty good. Not ideal, but enough to be useable.

In any case, we don’t have control on it. This is the matter of settings in DFU software, and that is courtesy of Seeed.

You may write in their Discord - they respond.

I’m probably late to the party here … I just noticed Seeed reSpeaker Flex XVF3800 which looks to me a small improvement - most notably separates the microphones (4 in a circle or a bar) to a separate board which can be installed away from motors and other sources of interference.

I am pleased to see “… enabling native support for ecosystems such as ESPHome and Home Assistant”. Congratulations guys !!!

But the other features (particularly the on-board acoustic algorithms) don’t sound like a significant improvement over XVF3800 or reSpeaker Lite … so at US$49.90 I’ll hold onto my HA Voice PE a while longer

Yeah Flex isn’t huge update to the basic XVF-3800. They’re compatible software wise.
Regarding VPE - if you already have it, no doubt stay on it so far. There’s potential in proper beam forming with 4 mics, as well as proprietary AEC, but so far it’s not ideal in any way. :slight_smile:

Hi. I’ve bought ReSpeaker XMOS XVF3800 with XIAO ESP32S3 with a case and have a small problem with it.

I’ve flashed application_xvf3800_inthost-lr48-sqr-i2c-v1.0.7-release.bin firmware (also tried respeaker_xvf3800_i2s_master_dfu_firmware_v1.0.7_48k_test5.bin), used the respeaker-xvf-satellite-example.yaml for the ESPHome and have a problem with TTS. Everything works fine except this, wake word is properly working, speech to text is also working fine, commands are redirected to whisper server and devices are responding (turning off and on), but nothing is coming from TTS.

I have headphones connected to the 3.5mm jack and when wake word is detected I can hear the beep, but there is no audio response for the commands.

It is working fine for HA app on my phone, so I guess I have pipeline properly configured.

When I set the alarm it works fine, I can hear the alarm, so I guess audio is working. Am I missing something?
I’m using HA 2026.4.3 with OS 17.2 and ESPHome device builder 2026.4.1.

I would reboot HA and Piper (if you use Piper). The most often troubles come out of that.

One other suggestion is to go to the device, click on the 3 dots and reset up twe voice assistant. I’ve seen very rare posts of people having issues until they pick any (low) with piper first, then every other voice works but you can verify through your speaker on this page by clicking the “Try” icon

I’ve fixed it. Problem was that I had ReSpeaker in the VLAN for my IoT devices. Home Assistant could reach to the ReSpeaker but not the other way around. From what I understand, HA just sends an address to the audio file and not the file itself and ReSpeaker couldn’t reach it. I guess I will add exception in the firewall for ReSpeaker since I don’t want 2.4GHz on my main network.
Thank you for suggestions.

Just for my own sanity… You changed the way all this orchestrates, and it now updates the XMOS part automatically right?

I have the version with the case and ESP-S3 soldered, just received yesterday. It seems I only had to do the yaml/esphome part. Once I installed, I then realized I should maybe flash the newest XMOS first… But when I open it in HA it does say “1.0.7”

Note for others: I had to build the device from my ESPHome Builder and go the manual route first, i.e. compile and download the bin, then go to web.esphome to flash it. The device would get stuck into “Preparing installation” with the regular way of doing it straight from ESPHome Builder => plug USB to ESP-S3 (the one with the little silicon cover). Since it’s the enclosed version, there’s no accessible boot/reset button like on standard esp32 boards so you can’t really force it when it gets finicky (I swear 90% of the boards I get do that…).

EDIT: Forgot the well deserved THANK YOU because this is such an amazing project. My new Jarvis in the living room in all its black glory made me very happy :slight_smile:

You’re welcome! :slight_smile:

Yes, every ESPHome firmware version has corresponding compatible DFU firmware inside, and on first boot it installs that into XMOS. It might not work, if the version existing is too old and doesn’t support flashing. I’m glad it worked for you!

Thanks for your fast reply! Other practical one: is it better to power from the integrated esp-s3 usb port or from the usb port thats near the 3.5mm jack (which i understand is the xmos one)?

Does that have potentially any consequence on the overall audio output level or gain? I noticed for some reason that the audio is fairly low. I have some (albeit a bit crappy) usb/3.5mm jack speakers that i plugged using 3.5mm jack out for now of the reaspeaker, and used the usb next to it (the xmos port then) for power of the reaspeaker itself… But i have to crank the sound to 90 and its not even “that” Loud yet.

Well, 3.5mm on XVF isn’t that powerful (line-out), so you need good amplifier on speakers. I use old Samsung speaker with good preamp, and my volume is never going above 20%.
Yeah, I power it through the same port, near 3.5mm.

Making some solid progress with the ReSpeaker XVF3800 for wake-word detection. It’s not 100% perfect yet, but I’m finally starting to understand how its AEC mechanism actually works under the hood.

My setup is routed through a Raspberry Pi using a dedicated USB sound card. The biggest takeaway: you have to feed the AI specifically with the ASR channel (Channel 1 / Right channel). Unlike the Conference channel, the ASR channel applies lighter linear AEC and leaves enough headroom without aggressively clipping the voice. This makes it much easier for openWakeWord to catch the trigger, even with background music playing.