SEED — Train a custom wake word from just a handful of recordings (not hundreds)

Hi all,

I trained a custom wake word for my Voice PE and my first attempt used 314 recordings of my own voice. It worked, but recording 314 times is torture — and it turns out most of them were redundant.

So I built a method to get there with 5-9 short recordings instead. I’m sharing it free for the community.

The idea: you record a handful of “acted” takes of your wake word — different emotional registers (tired, rushed, lively, worked-up…). A script then multiplies each one into ~20 timbres (child, woman, man, old-person × speeds) using the WORLD vocoder, which reshapes the formants independently from pitch — so a “child” sounds like a child, not a chipmunk. That gives ~180 clean samples, which the microWakeWord trainer augments to 50,000 as usual.

The result: with 180 samples, my model scored frr 0.0155 (detects ~98.5%) with 0.187 false positives/hour — equal to or better than my earlier 314-recording model. Less recording, same result.

The repo has the script, a full write-up (the method, why WORLD, the whole setup, and an honest “pitfalls” section with every wall I hit), example input/output, and a reference model:

:backhand_index_pointing_right: GitHub - 3fxh/seed-wakewords: SEED — Sample Expansion Engine for Detection. Train Home Assistant wake words with just a few recordings (WORLD/pyworld + microWakeWord). · GitHub

Feedback and questions welcome via the repo’s Issues. Hope it saves someone a few hundred recordings.


:spain: En español:

Hola a todos,

Entrené una wake word propia para mi Voice PE y en el primer intento usé 314 grabaciones de mi propia voz. Funcionó, pero grabar 314 veces es un suplicio — y resultó que la mayoría sobraban.

Así que monté un método para llegar al mismo sitio con 5-9 grabaciones cortas. Lo comparto libre para la comunidad.

La idea: grabas un puñado de tomas “actuadas” de tu palabra — distintos registros (cansado, con prisa, animado, alterado…). Un script multiplica cada una en ~20 timbres (niño, mujer, hombre, anciano × velocidades) usando el vocoder WORLD, que deforma los formantes por separado del tono — así un “niño” suena a niño, no a ardilla. Salen ~180 muestras limpias, que el entrenador microWakeWord augmenta a 50.000 como siempre.

El resultado: con 180 muestras, mi modelo dio frr 0.0155 (detecta ~98,5%) con 0,187 falsos positivos/hora — igual o mejor que mi modelo anterior de 314 grabaciones. Menos grabación, mismo resultado.

El repo tiene el script, la documentación completa (el método, por qué WORLD, el montaje, y una sección honesta de “trampas” con cada muro contra el que choqué), ejemplos de entrada/salida y un modelo de referencia. La documentación está en inglés y español.

:backhand_index_pointing_right: GitHub - 3fxh/seed-wakewords: SEED — Sample Expansion Engine for Detection. Train Home Assistant wake words with just a few recordings (WORLD/pyworld + microWakeWord). · GitHub

Espero que le ahorre a alguien unos cuantos cientos de grabaciones.

:united_kingdom: A note from the author:

I’m not certifying this method yet — I’m presenting it. It was born from time sunk into something that was a nightmare to get working with the usual tools. The idea, at heart, is simple: from the fewest real recordings and a handful of well-chosen timbres, it expands on its own — like polyurethane foam, a little squirt fills almost the whole spectrum — always chasing maximum performance for minimum time and effort, with the process nearly automatic.

To certify it works beyond my own voice, I’m after beta testers — one at a time.

How to sign up: first reply here in the thread to take your spot (that way the order stays visible to everyone). Then contact me by DM and send it all at once: recordings (5-9 WAV, in silence, mono, zipped), the exact wake phrase, the language, the model name, and confirmation the voice is your own. The one condition: an honest, precise verdict on whether it works.

It’s a beta. Time will tell. Contact by DM — and if it doesn’t work, maybe you just haven’t seen the light yet. :wink:


:spain: Nota del autor:

Este método no lo certifico aún — lo presento. Nació de tiempo perdido en algo que costó horrores hacer funcionar con las herramientas de siempre. La idea, en el fondo, es sencilla: con las mínimas grabaciones reales y unos pocos timbres bien elegidos, la cosa se expande sola — como la espuma de poliuretano, que echas un poco y te tapa casi todo el espectro — buscando siempre el máximo rendimiento con el mínimo esfuerzo y tiempo, y que el desarrollo sea casi automático.

Para certificar que funciona más allá de mi propia voz, busco beta testers — de uno en uno.

Cómo apuntarse: primero deja constancia aquí en el hilo para coger tu turno (así el orden queda a la vista de todos). Después contáctame por MP y mándalo todo de golpe: grabaciones (5-9 WAV en silencio, mono, comprimidas), la wake phrase exacta, el idioma, el nombre del modelo, y confirmación de que la voz es tuya. La única condición: que des un veredicto honesto y exacto de si te funciona.

Es una beta. El tiempo dirá. Contacto por MP — y si no funciona, quizás es que aún no has visto la luz. :wink:

:clipboard: BETA TESTERS — REGISTRO (se irá actualizando)

# Nombre Idioma Wake word Calidad

:locked: Reservado — próximamente.