Publish MQTT Messages on Snowboy Hotword Detection
Prerquisites: Debian, Raspbian, Armbian, Ubuntu; Node.js >= 8
$ apt install sox libsox-fmt-all libatlas-base-dev build-essential
$ npm install -g snowboy2mqtt --unsafe-perm
Create a model folder, e.g. /opt/snowboy
and put the Snowboy .umdl/.pmdl file(s)
in it.
I suggest to use pm2 to manage the snowboy2mqtt process (start on system boot, manage log files, ...)
$ snowboy2mqtt --help
Usage: snowboy2mqtt [options]
Options:
-v, --verbosity possible values: "error", "warn", "info", "debug"
[default: "info"]
-p, --model-path path of model files [default: "/opt/snowboy2mqtt"]
-a, --activation-hotword hotword that activates listening for other hotwords
-t, --timeout timeout after activation [default: 5000]
-g, --audio-gain [default: 2]
-s model sensitivity [default: "0.5"]
-n, --name instance name. used as topic prefix
[default: "snowboy"]
-k, --insecure allow ssl connections without valid certificate
[boolean]
-u, --url mqtt broker url [default: "mqtt://127.0.0.1"]
-h, --help Show help [boolean]
--version Show version number [boolean]
You can put credentials for authentication in the url supplied to the --url
option: mqtt://user:password@broker
. If
you want to use TLS for the connection to the broker use mqtts://
as URL scheme, e.g. mqtts://broker:8883
.
It's possible to define a Hotword that activates detection of other Hotwords for a configured period of time. So if you
set e.g. --activation-hotword computer
and --timeout 5000
only 5 seconds after someone said Computer the
publishing of other Hotwords gets activated. Every detected Hotword prolongs the timeout to 5 seconds again. The
current activation status is published retained on the topic <name>/active
.
snowboy2mqtt © 2018 Sebastian Raff, licensed under Apache License 2.0