|
Download README.md from MayaFdn/hey-maya: direct link, hf CLI and curl.
- Browser
- Download file 4.68 kB
-
https://huggingface.co/MayaFdn/hey-maya/resolve/main/README.md
- Command line
-
hf download hf://MayaFdn/hey-maya/README.md
-
curl -L -o README.md https://huggingface.co/MayaFdn/hey-maya/resolve/main/README.md
4.68 kB
| license: apache-2.0 | |
| language: | |
| - en | |
| tags: | |
| - wake-word | |
| - keyword-spotting | |
| - microwakeword | |
| - tflite | |
| # Hey Maya — wake word, version 1 | |
| "Hey Maya" is the phrase meant to start Maya, the Maya Foundation's assistant, on a person's phone, only | |
| when that person has turned the "Hey Maya" setting on (it is off by default). This is the small model | |
| that listens for the phrase. It runs on the phone; no audio needs to leave it. | |
| ## The files | |
| | File | What it is | | |
| | --- | --- | | |
| | `hey_maya-v1.tflite` | The model: 62,304 bytes, SHA-256 `e95b7a1df30e0619dfa1f72134b0153d49f825cf4e63e656aa79ec0208da61bd`. A [microWakeWord](https://github.com/kahrendt/microWakeWord) streaming model that keeps its own state, quantised to int8 (microWakeWord's `stream_state_internal_quant` export). | | |
| | `training_parameters.yaml` | The training settings, as used. | | |
| | `tflite_streaming_roc.txt` | The test results below, as the training run wrote them. | | |
| ## Input and output | |
| - **Features:** 16 kHz mono audio turned into 40-value frames by TensorFlow Lite Micro's audio front end | |
| (the one microWakeWord trains with), one frame every 10 ms. | |
| - **Input:** `[1, 3, 40]` int8 (scale 0.10196078568696976, zero point −128): three frames, 30 ms, per call. | |
| - **Output:** `[1, 1]` uint8 (scale 1/256): how sure the model is that it just heard "Hey Maya". | |
| - **State:** the model keeps its memory between calls in TensorFlow Lite resource variables | |
| (`VAR_HANDLE`, `READ_VARIABLE`, `ASSIGN_VARIABLE`, `CALL_ONCE`), so the interpreter must support them | |
| and must be called in order, once per 30 ms. | |
| - **Deciding:** the test below averaged the last 5 outputs (150 ms, microWakeWord's default for this test) | |
| and compared the average with the cutoff. | |
| ## How well it works — on test audio, not on real people yet | |
| Measured by the training run on held-out audio. "Misses" is how often it did not wake on "Hey Maya" in | |
| synthetic test speech; "wakes by mistake" counts wakes on speech and music with no "Hey Maya" in it. | |
| | Cutoff | Misses "Hey Maya" | Wakes by mistake, per hour | | |
| | --- | --- | --- | | |
| | 0.99 (chosen for the app) | 15.7 % | 1.18 | | |
| | 0.98 | 13.9 % | 1.45 | | |
| | 0.97 | 13.1 % | 1.80 | | |
| | 0.96 | 12.8 % | 2.00 | | |
| AUC 0.795. **It has never heard a real voice:** every "Hey Maya" it learned from, and every one it was | |
| tested on, was synthetic speech (a different speech engine for the test than for training). Accuracy on | |
| real voices, in real rooms, is to be measured on phones before release and will differ from this table. | |
| Version 2 is to be trained on real recordings that people choose to share. | |
| ## What it was trained on | |
| Only data the app may ship with (checked 2026-10-21): | |
| - **"Hey Maya" for training:** synthetic speech from the [Piper sample generator](https://github.com/rhasspy/piper-sample-generator) (MIT), using its 904-speaker LibriTTS-R voice model (LibriTTS-R, CC BY 4.0). | |
| - **"Hey Maya" for testing:** Phonon-31m English and its 37 English voices (Apache 2.0), a different engine, so the test is not the training voices again. | |
| - **Near misses** it must not wake on ("hey mia", "hey mayor", "maya" on its own, other assistants' names and more): the same Piper generator. | |
| - **Ordinary speech:** LibriSpeech dev and test sets (CC BY 4.0), with every utterance whose transcript says Maya, Maia, Maja, Mayer or Mayas removed. | |
| - **Noise and music:** MUSAN (CC BY 4.0), 80 % of the files for training and 20 % held out for the test. | |
| - **Room echo:** OpenSLR 28 RIRS_NOISES (Apache 2.0). | |
| Credits: LibriTTS-R (Koizumi et al., CC BY 4.0), LibriSpeech (Panayotov et al., CC BY 4.0), MUSAN (Snyder, | |
| Chen and Povey, CC BY 4.0), RIRS_NOISES (Ko et al., Apache 2.0), Phonon-31m (Apache 2.0), Piper sample | |
| generator (MIT), microWakeWord (Kevin Ahrendt, Apache 2.0). | |
| ## How it was made | |
| microWakeWord (Apache 2.0) at commit `4665173cd35f1cff9a61e06fc427f124766c488e`, its "mixednet" model | |
| (`--pointwise_filters 64,64,64,64 --repeat_in_block 1,1,1,1 --mixconv_kernel_sizes '[5], [7,11], [9,15], [23]' | |
| --residual_connection 0,0,0,0 --first_conv_filters 32 --first_conv_kernel_size 5 --stride 3`), 20,000 | |
| training steps, trained on 2026-10-21 on one rented GPU, then quantised to the streaming TensorFlow Lite | |
| model above. | |
| ## Use and limits | |
| - For starting Maya when its owner has turned "Hey Maya" on. Not for telling who is speaking. | |
| - English, and the phrase "hey maya" only. "Maia" and "Maja" sound the same and were left out of the near | |
| misses on purpose; expect it to wake on them too. | |
| - It sometimes wakes by mistake and sometimes misses; a tap on Maya's pill always works as well. | |
| ## Licence | |
| The model: Apache 2.0. The training data keeps its own licences, credited above. | |