Pi-zero+Jabra : need help to improve snowboy performance

Hi all,

I’ve been playing during the last week with Rhasspy 2.5.0-pre using Snowboy for Wake word detection on my Pi-zero satellite (running Buster) connected to a Jabra 410. For information, my Rhasspy master (base) runs in a Debian 9 stretch VM under Proxmox (where my Snips master is still running as well).

Even if everything is mostly ok so far, I’m still disappointed by Snowboy performance/accuracy compared to Snips hotword from snips-satellite. I’m using exactly the same HW so there is no reason that the weakness comes from here.

With Snips, I have low CPU usage (around 15%) and excellent detection even at 3-4 meters from the Jabra and not speaking so loud. When my appartment is very quiet, I’m even detected by several snips satellites (including one at 7-8 meters).

With Snowboy, I don’t get stable performance even if it’s not so simple to describe.
In a quiet room, it usually works well for the 2 or 3 first detections. If I say again the wake word some time later, it’s hardly detected, having to repeat it without guarantee to succeed.
In a more noisy room (living room with kids playing), I get quite some (and sometimes a lot of) false detections and if I lower the sensitivity then the I’m not even detected anymore when I say the wake word :frowning:

By disabing Rhasspy webserver, the CPU load is quite OK: 15-20% minly due to snowboy process which is very well expected load (discussed in another post). But the overall results are still disapointing.

So far, I have been playing a lot with the following tweaking axis:

  • wakeword - I tried “Jarvis”, “Hey snips”, “Ok google” and did not get very different performance among the 3
  • loudness at recording - I tried recording the wakeword between 20cm and 1.5 meter from the Jabra but no major difference
  • wakewod samples optimization - Even if SnowboyCustomMaker done by @KiboOst is doing a good job, I noticed that it sometimes cuts a bit too much on both start and end sides. Therefore I tried with arecord + audacity doing noise reduction and amplification, following the advices of @ced_cox on his blog
  • sensitivity setting - between 0.35 and 0.5 but impossible to get a good trade-off between lack of detection and false detections
  • audio_gain - between 1 and 3 but no clear impact of the setting on the same trade-off
  • alsamixer capture setting - between 0 and +6dB (Jabra 410 has a 3dB step hence the value can be 0,3 or 6)

On snowboy website, I have read that USB microphones (Jabra 410 should be in this category) are a bit weak in recording volume. I would agree with this because I have the feeling that I get slightly better results when increasing alsamixer capture gain but this is still not at the level of Snips hotword out-of-the-box (default settings) performance.

I’m interested by your experience and recommandations on the way top optimize and whether you find your snowboy performance “really good” or simply “good but could be better”…

By the way, I’m also a bit surprised to see that Kitt.ai has decided to shutdown all their products (including Snowboy) at the end of the year. Being in May, I’m affraid that my optimization efforts are not worth if we all have to switch to another too for wakeword detection…

Sorry for the long message… your help is appreciated :slight_smile:

fx

Hi,

if when you do a arecord test and you ear clearly your voice,the problem is not the mic or the sound but pooketSphinx.
I never managed to get it to work properly.

did you try snowboy ? you have a Snowboy-CustomMaker here : https://kiboost.github.io/jeedom_docs/other/Rhasspy/SnowboyCustomMaker/

Ced

If you have Snips running, it is also possible to trigger the Snips wakeword for rhasspy.
Just set wakeword to Hermes

I am also interested to know if some people manage to get Snowboy working on a pi zero reliably over the long term.

I don’t…

@3issa which kind of microphone did you connect to your Pi-zero? USB, any seeed product, …? Did you consider going back to snips_hotword?

@KiboOst please could you comment on your experience with the 2-mics pi hat + pi-zero?

I also have a 2-mics pi hat (from my 1st snips experience) that I could use again if someone shares his global settings (alsa, snowboy, etc) and his extremly happy with the solution :wink:

I have very good result with it and snowboy.

Thanks @KiboOst for your quick answer.

Please could you share your snowboy settings (sensitivity and audio_gain), alsamixer capture gain and distance to the pi hat when recording the wake word? I may give it a try on one of my satellites in the next days…

I use a respeaker 2-mics and once I have restarted Rhasspy it works like a charm. I have very good results. But that doesn’t last… After a while, Snowboy doesn’t answer anymore and I have to restart Rhasspy again.
I also use a respeaker 2-mics with a rpi A3+ and I have no problem. Everything is perfect.

Actually, I considered to try Rhasspy with snips-hotword but now I’m wondering to only use rpi 3 as satellite.

I think @tuxedo78 sorted it and the config webserver causes much load.

It also depends on the Snowboy model.

Apart from “snowboy”, all the other “universal” models (alexa, jarvis, etc.) use applyFrontend=true which drastically increase the CPU load.

To reduce the load on Pi0, maybe try with a custom model or use the universal “snowboy” model…