Downloads · 30 days
0
xmanii/hey-nimruz-wakeword
hey-nimruz-wakeword is a audio classification model from xmanii. Use it for the audio classification task on the model card, and read the license before you ship it in a product. It is set up for livekit-wakeword. The card lists the license as apache-2.0.
hey-nimruz-wakeword is a compact research model for detecting the spoken phrase “Hey Nimruz”, with Nimruz pronounced like the Persian نیمروز. The synthetic speech prompt was written as hey nimrooz so the TTS system wo…
Downloads · 30 days
0
Access
Public
Updated Aug 13, 2026
Repo size
1.8 MB
Likes
0
Public
Click a slice to open those files.
.onnx953 KB · 51%
From the Hugging Face model README
hey-nimruz-wakeword is a compact research model for detecting the spoken
phrase “Hey Nimruz”, with Nimruz pronounced like the Persian
نیمروز. The synthetic speech prompt was written as hey nimrooz so the
TTS system would produce the intended pronunciation.
The release contains a 214,273-parameter convolution-and-attention classifier trained on top of the frozen mel-spectrogram and 96-dimensional speech embedding pipeline provided by LiveKit WakeWord. The exported ONNX classifier is 931 KiB.
This is an experimental wake-word model, not a safety-critical voice-control system. It has worked well in an informal real-microphone test with a Persian accent, but it has not yet been evaluated across a controlled population of speakers, microphones, rooms, dialects, or long recordings of natural Persian conversation.
| File | Purpose |
|---|---|
hey_nimruz.onnx | Inference classifier; input shape (batch, 16, 96) |
hey_nimruz.pt | PyTorch checkpoint backup |
hey_nimruz_metrics.json | Metrics recorded during the three-phase training loop |
training_config.yaml | Exact production training configuration |
test_gui.py | Local microphone tester with a browser-based confidence display |
The ONNX file is the classifier head. It does not accept PCM audio by
itself. livekit-wakeword supplies the frozen audio frontend and embedding
model that convert a rolling two-second, 16 kHz audio window into the
16 × 96 classifier input.
The model was trained with livekit-wakeword==0.2.1 on an NVIDIA L40S through
Modal. Synthetic speech used the Piper VITS backend.
hey nimrooznimrooz, nimruz,
hey nimrod, hey nimbus, and hey numerousThe MUSAN background download was partially complete when its host rate-limited the setup job. The available MUSAN files were still used alongside the room impulse responses and generated background clips.
These figures come from the trainer's held-out validation pass. The validation mixture contained 15,000 augmented positive clips and 46,584 negative clips, including adversarial speech, background audio, and general negative speech features.
| Operating point | Recall | Accuracy | Estimated FPPH |
|---|---|---|---|
Threshold 0.50 | 82.32% | 91.14% | 0.696 |
Selected threshold 0.73 | 75.33% | 87.66% | 0.077 |
FPPH means estimated false positives per hour. These numbers should not be treated as a substitute for long-form testing on real Persian speech. The standalone DET-report command was not completed because of a NumPy API-version mismatch after the model had already been trained, validated, saved, and exported. The raw training-loop metrics are included for inspection.
Python 3.12 is recommended. PortAudio is required by PyAudio; on macOS it can
be installed with brew install portaudio.
pip install "livekit-wakeword[listener]==0.2.1" huggingface_hub
huggingface-cli download xmanii/hey-nimruz-wakeword \
hey_nimruz.onnx hey_nimruz_metrics.json test_gui.py \
--local-dir hey-nimruz
cd hey-nimruz
python test_gui.py \
--model hey_nimruz.onnx \
--metrics hey_nimruz_metrics.json
Open http://127.0.0.1:8765, press Start listening, and say “Hey Nimruz.”
The tester uses the selected threshold of 0.73, displays live confidence and
microphone level, and lets you adjust the threshold interactively.
For direct integration:
import asyncio
from huggingface_hub import hf_hub_download
from livekit.wakeword import WakeWordListener, WakeWordModel
async def main():
model_path = hf_hub_download(
repo_id="xmanii/hey-nimruz-wakeword",
filename="hey_nimruz.onnx",
)
model = WakeWordModel(models=[model_path])
async with WakeWordListener(model, threshold=0.73, debounce=2.0) as listener:
while True:
detection = await listener.wait_for_detection()
print(detection.name, detection.confidence)
asyncio.run(main())
This model is intended for research, prototypes, local assistants, and experiments involving the “Hey Nimruz” activation phrase. It should be tested and thresholded again for the target microphone, acoustic environment, and speaker population before deployment.
Do not use it as the only control for consequential or safety-sensitive actions. A false activation or missed activation must be expected in real conditions.
Nimruz without
the complete wake phrase.The training and inference pipeline is based on LiveKit WakeWord, Copyright 2026 LiveKit, Inc. LiveKit WakeWord and this model release are distributed under the Apache License 2.0. The synthetic dataset itself is not included in this repository.