Get Started

Run AI on a £5 chip: a wake word that works with no internet

Say "Hey Jarvis" and a lamp clicks on, with no cloud, no app and no Wi-Fi. A neural network on an ESP32-S3, a chip that costs less than a coffee, listens through a £3 microphone and decides in a few tens of milliseconds whether you said the word. Flash it with ESPHome from one YAML file, switch a relay, tune out false triggers, and see the two routes to your own word.

150 minAdvancedTools: Hardware around £15 to £30, software freeStep 1 free
A working offline wake worda neural network listening on an ESP32-S3, no internet and no account
A triggeran LED and a relay that switch when it hears you, from one ESPHome YAML file
Tuning that sticksthe two settings that trade false triggers against missed words, and how to test them
  • Real power numbers: how to measure what it draws and what that costs a year
  • Your own word: the account-free microWakeWord route and the optional Edge Impulse route
Before you start
  • An ESP32-S3 board with PSRAM, for example a Seeed Studio XIAO ESP32S3 ↗ (around £9 inc VAT)
  • An INMP441 I2S microphone module (around £3 each in multipacks), jumper wires and a USB-C data cable
  • Optional: a 3.3V-trigger relay module (around £3) and a USB-C power meter (around £10)
  • uv to run ESPHome without installing it: Put AI in your terminal
  • Comfort with the terminal: Terminal survival kit
01/08How a wake word fits on a microcontroller0 done
STEP 01 of 08~10 min

How a wake word fits on a microcontroller

Know what the chip is actually doing, so tuning and troubleshooting make sense.

  1. The pipelineThe microphone streams 16,000 samples a second. Every 10 ms the chip turns the newest 30 ms of sound into 40 numbers describing how much energy is in each frequency band (a spectrogram slice, with noise suppression and automatic gain built in). A small quantised neural network reads those slices as they arrive and outputs one number: the probability that the last second or so of audio was your wake word. When that probability stays high for several windows in a row, it fires.

  2. Why it fitsThe models used here, from the open-source microWakeWord ↗ project, are streaming convolutional networks quantised to 8-bit integers and run with TensorFlow Lite for Microcontrollers. The Hey Jarvis model's manifest asks for a 22,860-byte working area: about 22KB. The ESP32-S3 has vector instructions for exactly this kind of maths, plus 8MB of PSRAM on the XIAO board.

  3. Why it's privateNothing leaves the board. There's no Wi-Fi in this build at all: the audio is processed and thrown away 10 ms at a time.

  4. The route in this missionESPHome ↗, the open-source firmware builder, has a micro_wake_word component with four ready-trained words: okay nabu, hey jarvis, hey mycroft and alexa (model repository ↗). You describe the hardware in one YAML file, ESPHome builds and flashes the firmware. No account anywhere.

  5. Everything you'll use is in one kitDownload the kit: the ESPHome YAML, a parts list and a manifest template for your own trained word.

✓
CheckpointYou can say in one sentence why the model needs a few windows in a row before it fires.
If it breaksWill an ESP32 without the S3 work? + 1 more
Will an ESP32 without the S3 work?
Use an S3. ESPHome's micro_wake_word component targets the ESP32-S3 because of its vector instructions and PSRAM, and that's what keeps detection fast enough to stream.
Do I need Home Assistant for this?
No. This build has no Wi-Fi and no Home Assistant at all. ESPHome is only used to build and flash the firmware from your computer.
Still stuck? Ask the community
Next mission · Advanced buildsBuild a real search engine from scratch
→