Browse by type
KITT.AI出品。
Discussion Group (或者发送邮件给 snowboy-discussion@kitt.ai)
(因为我们每天都会收到很多消息,从2016年9月开始建立了讨论组。请在这里发送一般性的讨论。关于错误,请使用Github问题标签。)
版本:1.3.0(2/19/2018)
Snowboy现在为运行在Raspberry Pi上的Alexa AVS sample app提供了hands-free的体验!有关性能以及如何使用其他唤醒词模型,请参阅下面的信息。
性能
唤醒检测的性能通常依赖于实际的环境,例如,它是否与高质量麦克风一起使用,是否在街道上,在厨房中,是否有背景噪音等等. 所以对于性能,我们觉得最好是在使用者真实的环境中进行评估。为了方便评估,我们准备了一个可以直接安装训醒的Android应用程序:SnowboyAlexaDemo.apk (如果您之前安装了此应用程序,请先卸载它) 。
个人模型
# Please replace YOUR_PERSONAL_MODEL.pmdl with the personal model you just
# created, and $ALEXA_AVS_SAMPLE_APP_PATH with the actual path where you
# cloned the Alexa AVS sample app repository.
cp YOUR_PERSONAL_MODEL.pmdl $ALEXA_AVS_SAMPLE_APP_PATH/samples/wakeWordAgent/ext/resources/alexa.umdl
APPLY_FRONTEND 为 false,更新 SENSITIVITY,并重新编译# Please replace $ALEXA_AVS_SAMPLE_APP_PATH with the actual path where you
# cloned the Alexa AVS sample app repository.
cd $ALEXA_AVS_SAMPLE_APP_PATH/samples/wakeWordAgent/src/
# Modify KittAiSnowboyWakeWordEngine.cpp and update SENSITIVITY at line 28.
# Modify KittAiSnowboyWakeWordEngine.cpp and set APPLY_FRONTEND to false at
# line 30.
make
kitt_ai通用模型
# Please replace YOUR_UNIVERSAL_MODEL.umdl with the personal model you just
# created, and $ALEXA_AVS_SAMPLE_APP_PATH with the actual path where you
# cloned the Alexa AVS sample app repository.
cp YOUR_UNIVERSAL_MODEL.umdl $ALEXA_AVS_SAMPLE_APP_PATH/samples/wakeWordAgent/ext/resources/alexa.umdl
SENSITIVITY, 并重新编译# Please replace $ALEXA_AVS_SAMPLE_APP_PATH with the actual path where you
# cloned the Alexa AVS sample app repository.
cd $ALEXA_AVS_SAMPLE_APP_PATH/samples/wakeWordAgent/src/
# Modify KittAiSnowboyWakeWordEngine.cpp and update SENSITIVITY at line 28.
make
kitt_aiSnowboy现在通过 https://snowboy.kitt.ai/api/v1/train/ 端口提供 个人唤醒词训练服务, 请查看Full Documentation和示例Python/Bash script(非常欢迎贡献其他的语言)。
简单来说,POST 下面代码到https://snowboy.kitt.ai/api/v1/train:
{
"name": "a word",
"language": "en",
"age_group": "10_19",
"gender": "F",
"microphone": "mic type",
"token": "<your auth token>",
"voice_samples": [
{wave: "<base64 encoded wave data>"},
{wave: "<base64 encoded wave data>"},
{wave: "<base64 encoded wave data>"}
]
}
然后您会获得一个训练好的个人模型!
Snowboy是一款可定制的唤醒词检测引擎,可为您创建像 "OK Google" 或 "Alexa" 这样的唤醒词。Snowboy基于神经网络,具有以下特性:
高度可定制:您可以自由定义自己的唤醒词 - 比如说“open sesame”,“garage door open”或 “hello dreamhouse”等等。
总是在监听 但保护您的个人隐私:Snowboy不使用互联网,不会将您的声音传输到云端。
轻量级和嵌入式的:它可以轻松在Raspberry Pi上运行,甚至在最弱的Pi(单核700MHz ARMv6)上,Snowboy占用的CPU也少于10%。
Apache授权!
目前Snowboy支持(查看lib文件夹):
Snowboy底层库由C++写成,通过swig被封装成能在多种操作系统和语言上使用的软件库。我们欢迎新语言的封装,请随时发送你们的Pull Request!
目前我们已经现实封装的有:
如果您想要支持其他硬件或操作系统,请将您的请求发送至snowboy@kitt.ai
注意:Snowboy还不支持Windows 。请在 *nix平台上编译Snowboy。
黑客:免费
商业:请通过snowboy@kitt.ai与我们联系
为了测试方便,我们提供一些事先训练好的通用模型。当您测试那些模型时,请记住他们可能没有为您的特定设备或环境进行过优化。
以下是模型列表和您必须使用的参数:
SetSensitivity设置为0.6,并将ApplyFrontend设置为true。当ApplyFrontend设置为true时,这是迄今为止我们公开发布的最好的“Alexa”的模型。SetSensitivity设置为0.5,ApplyFrontend设置为false。sensitivity。将SetSensitivity设置为0.8,0.8,ApplyFrontend设置为true。SetSensitivity设置为0.5,ApplyFrontend设置为false。Snowboy为一下平台编译了node模块:64位Ubuntu,MacOS X和Raspberry Pi(Raspbian 8.0+)。快速安装运行:
npm install --save snowboy
有关示例用法,请参阅examples/Node文件夹。根据您使用的脚本,可能需要安装依赖关系库例如fs,wav或node-record-lpcm16。
如果您要根据自己的环境/语言编译版本,请继续阅读。
要运行demo,您可能需要以下内容,具体取决于您使用的示例和您正在使用的平台:
在下面您还可以找到在Mac OS X,Ubuntu或Raspberry Pi上安装依赖关系所需的确切命令。
brew 安装 swig,sox,portaudio 和绑定了 pyaudio的Python:
brew install swig portaudio sox
pip install pyaudio
如果您没有安装Homebrew,请在这里here下载。如果没有pip,可以在这里here安装。
确保您可以用麦克风录制音频:
rec t.wav
首先 apt-get 安装 swig,sox,portaudio和绑定了 pyaudio 的 Python:
sudo apt-get install swig3.0 python-pyaudio python3-pyaudio sox
pip install pyaudio
然后安装 atlas 矩阵计算库:
sudo apt-get install libatlas-base-dev
确保您可以用麦克风录制音频:
rec t.wav
如果您需要额外设置您的音频(特别是Raspberry Pi),请参阅full documentation。
为Linux和Raspberry Pi编译node插件需要安装以下依赖项:
sudo apt-get install libmagic-dev libatlas-base-dev
然后编译插件,从snowboy代码库的根目录运行以下内容:
npm install
node-pre-gyp clean configure build
# Make sure you have JDK installed.
cd swig/Java
make
SWIG将生成一个包含转换成Java封装的java目录和一个包含JNI库的jniLibs目录。
运行Java示例脚本:
cd examples/Java
make run
cd swig/Python
make
SWIG将生成一个_snowboydetect.so文件和一个简单(但难以阅读)的python 封装snowboydetect.py。我们已经提供了一个更容易读懂的python封装snowboydecoder.py。
如果不能make,请适配swig/Python中的Makefile到您自己的系统设置。
cd examples/Go
go get github.com/Kitt-AI/snowboy/swig/Go
go build -o snowboy main.go
./snowboy ../../resources/snowboy.umdl ../../resources/snowboy.wav
期望输出:
Snowboy detecting keyword in ../../resources/snowboy.wav
Snowboy detected keyword 1
更多细节,请阅读 'examples/Go/readme.md'。
cd swig/Perl
make
Perl示例包括使用KITT.AI RESTful API训练个人唤醒词,在检测到唤醒之后添加Google Speech API等。要运行示例,请执行以下操作
cd examples/Perl
# Install cpanm, if you don't already have it.
curl -L https://cpanmin.us | perl - --sudo App::cpanminus
# Install the dependencies. Note, on Linux you will have to install the
# PortAudio package first, using e.g.:
# apt-get install portaudio19-dev
sudo cpanm --installdeps .
# Run the unit test.
./snowboy_unit_test.pl
# Run the personal model training example.
./snowboy_RESTful_train.pl <API_TOKEN> <Hotword> <Language>
# Run the Snowboy Google Speech API example. By default it uses the Snowboy
# universal hotword.
./snowboy_googlevoice.pl <Google_API_Key> [Hotword_Model]
在Objective-C中使用Snowboy库不需要封装. 它与Objective-C中使用C++库基本相同. 我们为iOS设备编写了一个 "fat" 静态库,请参阅这里的库lib/ios/libsnowboy-detect.a。
在Objective-C中初始化Snowboy检测器:
snowboy::SnowboyDetect* snowboyDetector = new snowboy::SnowboyDetect(
std::string([[[NSBundle mainBundle]pathForResource:@"common" ofType:@"res"] UTF8String]),
std::string([[[NSBundle mainBundle]pathForResource:@"snowboy" ofType:@"umdl"] UTF8String]));
snowboyDetector->SetSensitivity("0.45"); // Sensitivity for each hotword
snowboyDetector->SetAudioGain(2.0); // Audio gain for detection
在Objective-C中运行唤醒词检测:
int result = snowboyDetector->RunDetection(buffer[0], bufferSize); // buffer[0] is a float array
您可能需要按照一定的频率调用RunDetection(),从而控制CPU使用率和检测延迟。
感谢@patrickjquinn和@grimlockrocks,我们现在有了在Objective-C和Swift3中使用Snowboy的例子。看看下面的例子examples/iOS/和下面的截图!

完整的README和教程在Android README,这里是一个截图:

我们准备了一个可以安装并运行的Android应用程序:SnowboyAlexaDemo.apk(如果您之前安装了此应用程序,请先卸载它们)。
进入 examples/Python 文件夹并打开你的python控制台:
In [1]: import snowboydecoder
In [2]: def detected_callback():
....: print "hotword detected"
....:
In [3]: detector = snowboydecoder.HotwordDetector("resources/snowboy.umdl", sensitivity=0.5, audio_gain=1)
In [4]: detector.start(detected_callback)
然后对你的麦克风说"snowboy",看看是否Snowboy检测到你。
这个 snowboy.umdl 文件是一个 "通用" 模型,可以检测不同的人说 "snowboy" 。 如果你想要其他的唤醒词,请去snowboy.kitt.ai录音,训练和下载你自己的个人模型(一个.pmdl文件)。
当 sensitiviy 设置越高,唤醒越容易触发。但是你也可能会收到更多的误唤醒。
audio_gain 控制是否增加(> 1)或降低(<1)输入音量。
我们提供了两个演示文件 demo.py, demo2.py 以显示更多的用法。
注意:如果您看到以下错误:
TypeError: __init__() got an unexpected keyword argument 'model_str'
您可能正在使用旧版本的SWIG. 请升级SWIG。我们已经测试过SWIG 3.0.7和3.0.8。
v1.3.0, 2/19/2018
resources/models/smart_mirror.umdl 给 https://snowboy.kitt.ai/hotword/47resources/models/jarvis.umdl 给 https://snowboy.kitt.ai/hotword/29v1.2.0, 3/25/2017
v1.1.1, 3/24/2017
v1.1.0, 9/20/2016
v1.0.4, 7/13/2016
v1.0.3, 6/4/2016
v1.0.2, 5/24/2016
v1.0.1, 5/16/2016
v1.0.0, 5/10/2016
$ claude mcp add snowboy \
-- python -m otcore.mcp_server <graph>