WakeWave is a web application designed to collect audio samples for training wake word detection models. It provides a simple, mobile-friendly interface for users to record their voice saying a specified wake word (e.g., "Lancelot").
- Mobile-friendly interface: Optimized for use on smartphones and tablets.
- Web app installation: Can be installed on iOS and Android home screens for quick access.
- Simple recording: Single-button interface with tap or hold functionality to record audio.
- Docker support: Easily deployable in a Docker container for consistent environments.
- Frontend: HTML, CSS, JavaScript
- Backend: Node.js, Express.js, TypeScript
- File Uploads: Multer
- Containerization: Docker (Alpine Linux)
- Node.js and npm installed on your machine.
- Docker installed (optional, for containerized deployment).
- Clone the repository:
git clone https://github.com/helv-io/wakewave.git
- Navigate to the project directory:
cd wakewave
- Install dependencies:
npm install
- Build the TypeScript code:
npm run build
- Start the server:
npm start
- Open your browser and navigate to
http://localhost:3000
.
- Build the Docker image:
docker build -t wakewave .
- Run the container, mounting a host directory for data persistence:
docker run -p 3000:3000 -e WAKE_WORD=Lancelot -v /path/to/recordings:/app/recordings wakewave
- Alternatively, you can use the ghcr.io image:
docker run -p 3000:3000 -e WAKE_WORD=Lancelot -v /path/to/recordings:/app/recordings ghcr.io/helv-io/wakewave:latest
- Access the app at
http://localhost:3000
.
- Open the web app in your browser.
- The current wake word will be displayed (default is "Lancelot").
- To record:
- Tap: Tap the record button to start recording, say the wake word, then tap again to stop.
- Hold: Hold the record button while saying the wake word, release to stop recording.
- The recorded audio will be automatically submitted to the server.
To configure the wake word, set the WAKE_WORD
environment variable when running the server:
WAKE_WORD="YourWakeWord" npm start
Contributions are welcome! If you have suggestions or improvements, please open an issue or submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.