Skip to content

nyumaya/nyumaya_audio_recognition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wakeword detection on small embedded sytems

Nyumaya offline audio classification. Libraries are available for Linux, WASM, RaspberryPi, ESP32S3, Android. Experimental Libraries are also available for MAC, iOS, Windows

Codacy Badge

For esp32s3 support look at its example and library

To run an example

git clone --depth 1 https://github.com/nyumaya/nyumaya_audio_recognition.git
cd nyumaya_audio_recognition/examples/python
python3 simple_hotword.py

The python demo captures audio from the default alsa microphone.

Web Demo

A web demo is available here. This has been tested with recent versions of Chrome and Firefox.

Performance V3.1

  • Pi Zero: CPU 52%
  • Pi 3: CPU one core: 12%
  • Pi 4: CPU one core: 4%
  • i.MX8 CPU one core: 4%
  • i.MX6 CPU one core: 11.9% (CortexA9)
  • Android, low usage on a fairly old XIAOMI MI A3

Free models:

  • Marvin Hotword
  • Sheila Hotword
  • Firefox Hotword
  • Alexa Hotword
  • View Glass Hotword

Versioning

Models and the Library are Versioned with <major>.<minor>.<revision> Models must match the <major>.<minor> version of the library to be compatible.

Sensitivity

The sensitivity parameter is a tradeoff between accuracy and false positives. Setting the sensitivity to a high value means it's easier to trigger the hotword. If you experience a lot of false detections, set the sensitivity to a lower value.

Audio Config

You can run the audio_check script to get some info about your volume level and possible DC-Offset. Speak as loud as the maximum expected volume will be.

python check_audio.py

Chaining Commands

The multi_streaming_example.py is a demo of how to chain commands. You can add commands with a list of words and function to call when the command is detected.

mDetector.add_command("marvin,on",light_on)
mDetector.add_command("marvin,stop",stop)

Be aware that CPU usage increases a little bit when multiple models have to run concurrently. I this case the software has to run the marvin_model (marvin) and the subset_model (stop) at the same time.

mDetector.add_command("marvin,on",light_on)
mDetector.add_command("stop",stop)

Custom Keywords:

Custom Keywords can be requested for evalutaion and commercial use here

Custom Targets:

Libraries for other targets can be requested for commercial customers.