Custom Wake Word for ESP32

Train a product-specific wake phrase, test it with the target microphone, and deploy a compact INT8 model for offline inference on ESP32-S3.

What can run on ESP32?

A desktop ONNX model is not automatically an ESP32 model. The usual embedded path is INT8 TFLite Micro, 16 kHz mono PCM and local feature extraction. ESP32-S3 with PSRAM is the best starting point; other boards need separate validation.

Online training vs self-training

Online training is faster for small teams and hardware validation. Self-training gives more control over data and hard negatives, but you own the training, export and evaluation pipeline.

Recommended workflow

  1. Choose a distinctive phrase and record with the final microphone.
  2. Train online or with a self-hosted pipeline.
  3. Measure recall and false triggers in noise, music and similar speech.
  4. Export the matched INT8 TFLite model and output head, then integrate them together in ESP-IDF.

ESP-IDF example

git clone https://github.com/voicute/onnx-wakeword.git
cd onnx-wakeword/esp32/examples/esp32s3_hmi_devkit
idf.py set-target esp32s3
idf.py build
Important: browser accuracy does not prove hardware accuracy. Test the final board, microphone, enclosure, distance and background audio.
Train and test a custom wake word
View the open-source inference engine and demo models →
ONNX / TFLite · Android · ESP32 · Web · Python · Home Assistant