Esp32 s3 voice assistant with wake word problems

Hi everyone,
I’m experiencing a persistent and frustrating issue with a Voice Satellite based on ESP32-S3 and micro_wake_word. The strange thing is that the exact same setup was working perfectly a few hours ago. After a clean build, I started getting the following error consistently:[E][micro_wake_word:252]: Encountered an error while performing an inference
[E][micro_wake_word:061][mww]: Failed to allocate tensors for the streaming model
Hardware Setup:

  • Board: ESP32-S3-WROOM-1 (N16R8) with 8MB Octal PSRAM.
  • Microphone: INMP441 (I2S).
  • Speaker: MAX98357A (I2S).
  • Power: Stable 5V supply.

Software Environment:

  • ESPHome version: 2026.3.3
  • Framework: ESP-IDF (defaulting to 5.5.x in recent builds).
  • Python version: 3.12.x (Host).

What I have tried so far:

  1. Model swap: Tried both okay_nabu and hey_jarvis. Both fail with the same tensor allocation error, suggesting it’s not a model size issue but an SRAM fragmentation problem.
  2. Memory Optimization: Added sdkconfig_options to force WiFi and LWIP stacks into PSRAM (CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_AND_LWIP_STACKS_IN_EXTERNAL_RAM).
  3. Minimalist Config: Removed the speaker and media player components to free up SRAM, but the wake word still fails to initialize.
  4. Framework Downgrade: Attempted to force esp-idf version 5.1.2, but hit compatibility issues with Python 3.12 (ModuleNotFoundError: No module named 'pkg_resources') and various 404 errors on platform repositories.
  5. Audio Bit-depth: Switched between 16-bit and 32-bit for the microphone. here is the code I used: voice assistant - Pastebin.com Has anyone else noticed a sudden regression in memory allocation for S3 satellites? Any advice on how to further reduce SRAM usage or force a stable framework version on ESPHome 2026.3.3 would be greatly appreciated.

Same error, flashed 3x Atom S3R on Tuesday pulling the m5stack package for satellite base, all went well, no issues, set the wake word, worked fine.

Since Tuesday evening I’ve been getting this error using the same code.

I’ve tried doing it through ESPBuilder on Home Assistant, through web.esp, same error. Fairly new to this, and at a loss now, nothing seems to work, so hoping for some suggestions if any has any.

Same issue, it’s been two days I have been troubleshooting, no results.
ESP32-S3 on custom pcb with INMP441 and MAX98357.
Thought I bought some defective microphones, tried others, no luck.

[micro_wake_word:252]: Encountered an error while performing an inference
[E][micro_wake_word:061][mww]: Failed to allocate tensors

I have not had the issue with mine.

Can you post your yaml?

I use this if it helps at all.

This went onto 3, the same now pulls the package, the device shows up as it should as a satellite mic, in the correct area, watching the logs if I change settings they register, but the wake word seems to be the issue

esphome:

name: esphome-web-0f42ac

friendly_name: Living Room Mic (1)

min_version: 2025.11.0

name_add_mac_suffix: false

esp32:

variant: esp32s3

framework:

type: esp-idf

psram:

mode: octal

speed: 80MHz

logger:

api:

encryption:

key: !secret

ota:

- platform: esphome

password: !secret

wifi:

ssid: !secret wifi_ssid

password: !secret wifi_password

use_address: 192.168.0.85

ap:

ssid: "LRoom1 Fallback"

password: !secret fallback_password

captive_portal:

packages:

remote_package_files:

url: https://github.com/m5stack/esphome-yaml

files: [common/atom-echos3r-satellite-base.yaml]

ref: main

refresh: 0s

If it’s something else you need, let me know!

I found a solution, look here, credit to the user there that found the solution, now it works micro_wake_word: v2 models fail to allocate tensor arena on ESP32-S3 N16R8 with PSRAM · Issue #7242 · esphome/issues · GitHub

So I couldn’t get it to work this way (but that could more be inexperience and user error than anything)

Finally, I pulled the .bin file from there, installed via web and it worked

I could have sworn I did it whilst trying to work it out but clearly not!, anyway, 3 that were not working, not all work great