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:
Feedback and questions welcome via the repo’s Issues. Hope it saves someone a few hundred recordings.
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.
Espero que le ahorre a alguien unos cuantos cientos de grabaciones.