WakeWord
WakeWord provides an example of a real-time wake word detection application for Aurora OS. A bundled Silero VAD ONNX model acts as a gate: the wake word classifier for the phrase "Привет Аврора" runs only while speech is active. It demonstrates a minimal audio detection flow: model loading, microphone recording, background speech detection, gated wake word inference, and result display on a single screen.
Table of Contents
- Compatibility
- Build features
- Branch info
- Install and running
- Screenshots
- Use cases
- Project Structure
- Model training
- Third-party components
- Terms of Use and Participation in Development
Compatibility
Conan is required to resolve and install project dependencies during build. The application is intended for Aurora OS 5.x.
Build features
The project is built using the CMake build system. The project uses the Conan package manager (version 2.22.0) to obtain dependencies, including ONNX Runtime and its runtime libraries.
The Conan client is provisioned automatically during the RPM build: rpm/load-conan.sh downloads the Conan distribution and loads the %conan_install, %conan_cmake, and %conan_deploy_libraries RPM macros used by rpm/ru.auroraos.WakeWord.spec.
The application also requires Qt5Multimedia and the Microphone permission to capture audio before detection.
Branch info
Application versions conform to the branch naming convention
Install and running
Installation and build are performed according to the Build example instruction.
Screenshots
Use cases
The application demonstrates local wake word detection functionality:
Audio Capture
- Recording audio from the device microphone without manual controls
VAD Detection
- Running local Silero VAD inference through ONNX Runtime for real-time speech detection
Wake Word Detection
- Running the "Привет Аврора" wake word classifier only while VAD reports active speech
- The classifier is a pair of DNN heads over openWakeWord-compatible embeddings; a detection is accepted only when both heads pass their thresholds (
primary >= 0.98 AND gate >= 0.96)
Status Display
- Showing detection status (SPEECH / SILENCE), the wake word counter, and both classifier scores on a single screen
Bundled Models
- Shipping the Silero VAD, openWakeWord feature extractor, and wake word classifier ONNX models inside the application package
Project Structure
The project has a standard structure of an application based on C++ and QML for Aurora OS with wake word detection capabilities.
- CMakeLists.txt file describes the project structure for the CMake build system and ONNX Runtime integration.
-
conanfile.py file declares the Conan dependency on
onnxruntime. - icons directory contains the application icons for different screen resolutions.
-
qml directory contains the QML source code and the UI resources.
- cover directory contains the application cover implementations.
- icons directory contains the additional custom UI icons.
- pages directory contains the application pages.
- WakeWord.qml file provides the application window implementation.
-
rpm directory contains the rpm-package build settings.
- ru.auroraos.WakeWord.spec file is used by rpmbuild tool.
-
src directory contains the C++ source code with audio capture, VAD inference, and wake word inference.
- vadrunner.h and vadrunner.cpp expose the main QML-facing API and coordinate model loading, audio capture, and detection state.
- vadworker.h and vadworker.cpp load the bundled model and run VAD inference in a worker thread.
- silerovad.h and silerovad.cpp wrap the Silero VAD ONNX model and provide a prediction interface.
- wakewordworker.h and wakewordworker.cpp run wake word inference in a dedicated worker thread, gated by the VAD speech state.
- wakeworddetector.h and wakeworddetector.cpp wrap the openWakeWord feature extractor and the two wake word classifier heads.
-
main.cpp is the application entry point and registers
VadRunnerin the QML context.
- translations directory contains the UI translation files.
- models directory contains the bundled ONNX models, the Silero VAD LICENSE, and the licenses of the third-party data and models used for training.
- training directory contains a standalone example script that trains the wake word classifier on a demo dataset.
- ru.auroraos.WakeWord.desktop file defines the display and parameters for launching the application.
Model training
The training directory contains a simplified, self-contained example of the wake word classifier training loop: feature extraction with the bundled openWakeWord ONNX models, training of a small PyTorch DNN, and ONNX export. See training/README.md for usage instructions.
Third-party components
The bundled models and the data used to train them are covered by third-party licenses, including Apache-2.0, MIT, and CC BY 4.0. The full list of components, sources, and license texts is available in models/licenses.
Terms of Use and Participation in Development
The source code of the project is provided under license, which allows to use it in third-party applications.
To participate in the development of the project, please read the member agreement. If you plan to submit your own source code for inclusion in the project, you will need to accept the CLA terms and conditions.
Participant information is listed in the AUTHORS file.
The Code of Conduct is the current set of rules of the Open Mobile Platform Company, which informs about the expectations for interaction between community members when communicating and working on projects.
