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_ai
Snowboy现在通过 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
。SetSensitivity
设置为0.5
,ApplyFrontend
设置为true
。sensitivity
。将SetSensitivity
设置为0.7,0.7
,ApplyFrontend
设置为true
。SetSensitivity
设置为0.6
,ApplyFrontend
设置为true
。SetSensitivity
设置为0.7
,ApplyFrontend
设置为true
。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_modules/node-pre-gyp/bin/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/47
resources/models/jarvis.umdl
给 https://snowboy.kitt.ai/hotword/29
v1.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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。