I’ve put together two Google Colab notebooks for training custom wake words without any local setup. Each one targets a different framework, so you can pick whichever fits your use case.
microWakeWord (ESP32 / ESPHome)
Wraps the microWakeWord framework into a single notebook — edit one config dict, run all cells, get a .tflite model ready for ESPHome.
Generates training audio automatically using Piper TTS — no need to record your own voice samples
Downloads and wires up all augmentation datasets (MIT RIRs, AudioSet, FMA) and negative examples
Lets you listen to pronunciation variants before training so you can pick what sounds best
Trains a MixedNet model in ~20 minutes on a free Colab T4 GPU
Patches a few issues in the current microWakeWord codebase (stride assertion bug, datasets version incompatibility, OOM on free-tier Colab)
Includes two pre-trained Spanish wake words as examples
openWakeWord
A bulletproof, run-all-and-walk-away notebook for training openWakeWord models in 2026. The official notebook has bit-rotted since 2023 and fails out of the box for multiple reasons — this one patches all of them.
Three lines to edit, one button to press
Trains in ~75-90 minutes on Colab Pro
Supports 36 languages via Piper TTS
Every cell is self-healing with a hard pre-flight gate that fails loudly before any slow downloads start
Both notebooks work with any language supported by Piper TTS. Happy to hear any feedback or suggestions.
Big thanks to kahredndt for microWakeWord and alfiedennen for openwakeword-colab-2026 — these projects wouldn’t exist without their work.
(Sorry, new users can only put two links on a post, add the “.com” to the domain please)
Sounds super promising, I’ve only tri ed the second one but it errors out. Full output below (I have not tried manual install of dependencies as suggested though):
/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_5.so.3 is not a symbolic link
ERROR: Could not find a version that satisfies the requirement piper-phonemize-cross (from versions: none)
ERROR: No matching distribution found for piper-phonemize-cross
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.2/66.2 kB 3.8 MB/s eta 0:00:00
Preparing metadata (setup.py) ... done
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.5/3.5 MB 62.4 MB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 194.4/194.4 kB 18.3 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 983.4/983.4 kB 66.2 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 86.1/86.1 kB 8.8 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.5/48.5 kB 4.8 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 23.6/23.6 MB 82.7 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.9/8.9 MB 118.0 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB 97.5 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 939.7/939.7 kB 64.0 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 343.2/343.2 kB 29.7 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 109.4/109.4 kB 11.2 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 248.5/248.5 kB 23.1 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.6/121.6 kB 14.1 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 782.1/782.1 kB 56.4 MB/s eta 0:00:00
Building wheel for webrtcvad (setup.py) ... done
Building wheel for acoustics (pyproject.toml) ... done
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
google-ai-generativelanguage 0.6.15 requires protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev,>=3.20.2, but you have protobuf 7.36.2 which is incompatible.
ydf 0.15.0 requires protobuf<7.0.0,>=5.29.1, but you have protobuf 7.36.2 which is incompatible.
grpcio-status 1.71.2 requires protobuf<6.0dev,>=5.26.1, but you have protobuf 7.36.2 which is incompatible.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 34.1/34.1 MB 30.1 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 19.0 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 76.8/76.8 kB 5.3 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 78.2 MB/s eta 0:00:00
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 260.1/260.1 kB 15.9 MB/s eta 0:00:00
Python: 3.13.15 (main, Aug 6 2026, 11:06:22) [GCC 13.3.0]
torch: 2.11.0+cu128 cuda: True
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
/tmp/ipykernel_521/1112966177.py in <cell line: 0>()
26 import speechbrain, acoustics
27 import onnx, onnxruntime, soundfile, requests
---> 28 from piper_phonemize import phonemize_espeak
29 from piper import PiperVoice, SynthesisConfig
30 import piper_sample_generator
ModuleNotFoundError: No module named 'piper_phonemize'
---------------------------------------------------------------------------
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.
To view examples of installing some common dependencies, click the
"Open Examples" button below.
---------------------------------------------------------------------------