Downloads · 30 days
352
61% of all-time downloads
droman42/microwakeword-irina-ru
microwakeword-irina-ru is a machine learning model from droman42. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as cc-by-nc-sa-4.0.
Quantized INT8 streaming TFLite wake-word model for the Russian «Ирина» (stress on the 2nd syllable: и-РИ-на), for ESP32-S3 / ESPHome and server-side pymicro-wakeword. First openly published Russian microWakeWord.
Downloads · 30 days
352
61% of all-time downloads
All-time downloads
578
Public
Repo size
61 KB
Likes
0
Public
Click a slice to open those files.
.tflite61 KB · 91%
From the Hugging Face model README
Quantized INT8 streaming TFLite wake-word model for the Russian «Ирина» (stress on the
2nd syllable: и-РИ-на), for ESP32-S3 / ESPHome and server-side
pymicro-wakeword. First openly published
Russian microWakeWord.
irina.tflite — streaming quantized modelirina.json — v2 manifest (trained_languages: ["ru"], probability_cutoff 0.97,
sliding_window_size 5)The manifest ships probability_cutoff = 0.97 — a deliberately recall-safe starting
point. Real utterances score ~0.996 (tightly bunched just under 1.0), well clear of 0.97, so
recall is 100% with comfortable margin. To trade a little of that margin for fewer false
accepts, raise the cutoff toward ~0.99 on your own device as your real ambient dictates:
| cutoff | recall (16 real) | FA/h* |
|---|---|---|
| 0.97 (shipped) | 100% | 1.9 |
| 0.98 | 100% | 1.3 |
| 0.99 | 100% | 1.0 |
| ≥0.995 | drops | — |
*FA/h is from a thin 3.13 h ambient sample — indicative only; measure on your device.
Above ~0.99 recall falls off a cliff, so don't exceed it. Secondary knob: raise
sliding_window_size (5 → 7) for extra smoothing if FA is stubborn.
No open Russian microWakeWord existed; the closest attempt (French: 3 Piper voices and a widened SNR) trained cleanly yet was dead on device. This one is alive — and publishable — because of choices each checked by a native-Russian ear, not assumed:
+ before the stressed
vowel, put_accent=False); Vosk's BERT accentizer handles it from plain text.ruslan + Silero
(xenia/kseniya/eugene) + a female-leaning Vosk-TTS minority (all Apache/CC-BY-NC-SA).
The Vosk female voices restore the female-speaker diversity that a non-redistributable Piper
voice would otherwise have provided — so the model generalizes to female speakers without any
CC-BY-NC-ND source.from pymicro_wakeword import MicroWakeWord, MicroWakeWordFeatures
mww = MicroWakeWord.from_config("irina.json") # feed 16 kHz mono 16-bit audio via MicroWakeWordFeatures
Or in ESPHome via the micro_wake_word component.
Voice mix above (Piper ruslan + Silero + female Vosk-TTS minority) → CC BY-NC-SA 4.0;
plus stock English negatives (kahrendt/microwakeword) and a Common Voice ru subset.
Full recipe, per-run log, and methodology: https://github.com/locveil/wakeword-training
(docs/recipe.md, EXPERIMENTS.md).