diff --git a/.gitignore b/.gitignore index 88f0899..c9c4919 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ **/*.sw* snowboy-2022/snowboy +**/*.git.d diff --git a/snowboy-2022/build.sh b/snowboy-2022/build.sh new file mode 100644 index 0000000..8913841 --- /dev/null +++ b/snowboy-2022/build.sh @@ -0,0 +1,71 @@ +#! /bin/bash + +echo https://github.com/seasalt-ai/snowboy +cd "$(dirname "$(realpath "$BASH_SOURCE")")" + +set -e +set -o pipefail + +if [ ! -d ./snowboy ]; then + git clone https://github.com/seasalt-ai/snowboy snowboy.git.d +fi + +timeout 2 docker version &> /dev/null +if ! docker images | grep snowboy-pmdl.*latest &> /dev/null; then + pushd snowboy.git.d + docker build -t snowboy-pmdl:latest . + popd +fi + +if [ -n "$TRAIN" ] || [ ! -d ./model ] || [ ! -f ./model/hotword.pmdl ]; then + mkdir -p model + pushd model + echo "record 3 instances of your hotword" >&2 + for i in 1 2 3; do + read -p "ready? ctrl-c when done" + rec \ + -r 16000 \ + -c 1 \ + -b 16 \ + -e signed-integer \ + -t wav \ + record$i.wav + done + popd + + docker run \ + --rm \ + -it \ + -v "$(realpath ./model)":/snowboy-master/examples/Python/model \ + snowboy-pmdl:latest +fi + +if false; then + if ! which swig; then + brew install swig + fi + pip3 install pyaudio + pushd snowboy.git.d/swig/Python3/ + make + popd + + cd snowboy.git.d/examples/Python3/ + echo ' + import snowboydecoder + import datetime + detected_callback = lambda *args: print(datetime.datetime.now(), "GOTCHA") + d = snowboydecoder.HotwordDetector("../../../model/hotword.pmdl", sensitivity=0.5, audio_gain=1) + d.start(detected_callback) + ' > breel.py + echo GO + cleanup() { + echo OK IM DONE NOW + } + trap cleanup EXIT + python3 ./breel.py +else + resources="$(realpath snowboy.git.d/resources/common.res)" + hotword="$(realpath ./model/hotword.pmdl)" + go build -o snowboy + ./snowboy -model "$hotword" -resources "$resources" -sensitivity 0.4 +fi