Skip to content

jakubrohleder/wake-a-word

Wake-a-Word

License: AGPL-3.0 Python 3.12+

Train wake word detection with your own voice. No cloud, no pre-trained models, no compromises.

Note: This is a personal project provided as-is. No support, issue responses, or PR reviews are guaranteed. See CONTRIBUTING.md.

Why?

  • Generic wake words don't work well for everyone
  • Cloud-based training means your voice data leaves your device
  • Existing solutions are either too complex or too limited

Wake-a-Word gives you a complete pipeline: record samples on your phone, train on your PC, deploy to Raspberry Pi.

The Workflow

Record        ->     Train       ->    Test & Mine    ->     Deploy
your voice           first model       hard examples         to device

The key is iteration: train a basic model, test it in real conditions, mine the failures, retrain. Most users get good results after 2-3 cycles.

Get Started

Installation & Setup

Complete Guide

Step Guide What You'll Do
1 Getting Started Install, create profile
2 Recording Samples Collect initial training data
3 Training Models Train your first model
4 Improving Models Mine failures, iterate
5 Deploying Models Export and run on Raspberry Pi

For ML Practitioners

Architecture - Model architectures, training system, audio pipeline

Requirements

  • Python 3.12+, macOS or Linux for data collection
  • Linux with CUDA for training
  • Raspberry Pi 3B+ for deployment (optional)

See Hardware for detailed specifications.

Security

The webapp is designed for local/private network use only.

  • No authentication is implemented (local trust model)
  • Do not expose to the public internet
  • See SECURITY.md for details

Inspiration

This project builds on ideas from:

  • micro-wake-word - MixConv architecture, sub-spectral normalization, CBAM attention
  • openWakeWord - Efficient model design for edge deployment

License

This project is dual-licensed:

  • Open Source: AGPL-3.0 - Free for personal/educational use with copyleft requirements
  • Commercial: Contact for licensing if AGPL doesn't work for your use case. See LICENSE-COMMERCIAL.md