
snowboy
Snowboy,KITT.AI开发的人工智能软件工具包。通过Snowboy软件,开发人员可以在一些硬件设备上添加 “语音热词探测” 功能。KITT.AI 宣称,Snowboy 能够让人们轻松地将语音控制功能添加到自己的硬件设备上。

snowboy使用的是swig编译。
swig介绍
C 和 C++ 被公认为(理当如此)创建高性能代码的首选平台。对开发人员的一个常见要求是向脚本语言接口公开 C/C++ 代码,这正是 Simplified Wrapper and Interface Generator (SWIG) 的用武之地。
SWIG 允许您向广泛的脚本语言公开 C/C++ 代码,包括 Ruby、Perl、Tcl 和 Python。本文使用 Ruby 作为公开 C/C++ 功能的首选脚本接口。
snowboy源码目录结构
.
└── snowboy
├── binding.gyp
├── examples
│ ├── Android
│ ├── C
│ ├── C++
│ ├── Go
│ ├── iOS
│ ├── Java
│ ├── Node
│ ├── Perl
│ ├── Python
│ ├── Python3
│ └── REST_API
├── include
│ └── snowboy-detect.h
├── lib
│ ├── aarch64-ubuntu1604
│ ├── android
│ ├── ios
│ ├── node
│ ├── osx
│ ├── rpi
│ └── ubuntu64
├── LICENSE
├── MANIFEST.in
├── package.json
├── README_commercial.md
├── README.md
├── README_ZH_CN.md
├── resources
│ ├── alexa
│ ├── common.res
│ ├── ding.wav
│ ├── dong.wav
│ ├── models
│ ├── snowboy.raw
│ └── snowboy.wav
├── scripts
│ ├── install_swig.sh
│ └── publish-node.sh
├── setup.py
├── swig
│ ├── Android
│ ├── Go
│ ├── Java
│ ├── Node
│ ├── Perl
│ ├── Python
│ └── Python3
└── tsconfig.json
安装swig
swig默认需要的版本是3.0.10以上,再ubuntu18.04上默认安装的是3.0.12版本
$ sudo apt install swig

安装snowboy
获取源代码:
$ git clone https://github.com/Kitt-AI/snowboy.git
进入snowboy/swig/Python
目录或者snowboy/swig/Python3
目录(和本地安装的python有关系)执行:
$ make

生成的物件:
验证
进入examples/Python
,执行demo:
python demo.py resources/models/snowboy.umdl
执行效果:

这里就是等待被唤醒的状态了。
来看一下demo.py的代码:
import snowboydecoder
import sys
import signal
interrupted = False
def signal_handler(signal, frame):
global interrupted
interrupted = True
def interrupt_callback():
global interrupted
return interrupted
if len(sys.argv) == 1:
print("Error: need to specify model name")
print("Usage: python demo.py your.model")
sys.exit(-1)
model = sys.argv[1]
# capture SIGINT signal, e.g., Ctrl+C
signal.signal(signal.SIGINT, signal_handler)
detector = snowboydecoder.HotwordDetector(model, sensitivity=0.5)
print('Listening... Press Ctrl+C to exit')
# main loop
detector.start(detected_callback=snowboydecoder.play_audio_file,
interrupt_check=interrupt_callback,
sleep_time=0.03)
detector.terminate()
可以看出基本就是回调函数了,当唤醒被触发的时候就会调用回调函数。
设置自己的唤醒词
snowboy可以设定自己的唤醒词,不过需要上传音频到官网
训练模型。
这部分以后在考虑。^_^
今天就到这里了。
网友评论