雪童是一个可定制的热词检测引擎

snowbo的Python项目详细描述


#雪童热词检测

[kitt.ai](http://kitt.ai)。

[主页](https://snowboy.kitt.ai)

[完整文档](http://docs.kitt.ai/snowboy)和[常见问题解答](http://docs.kitt.ai/snowboy'faq)

[讨论组](https://groups.google.com/a/kitt.ai/forum/!论坛/雪童讨论)(或发送电子邮件至snowboy discussion@kitt.ai)

(讨论组自2016年9月以来是新的,因为我们每天都收到许多消息。请把一般问题发过去。对于Bug,请使用GitHub问题。)


版本:1.2.0(3/25/2017)


\alexa支持


Snowboy现在为Raspberry PI上的[alexa AVS示例应用程序](https://github.com/alexa/alexa-avs-sample-app)带来免提体验!请参阅下面有关性能和如何使用其他Hotword型号的更多信息。

**供用户在实际环境中进行评估。为了评估的目的,我们准备了一个android应用程序,它可以安装和运行,开箱即用:[snowboyalexademo.apk](https://github.com/kitt-ai/snowboy/raw/master/resources/alexa/snowboyalexademo.apk)(如果您以前安装过这个应用程序,请先卸载之前的任何一个)。

**个人模型**
*通过我们的[网站](https://snowboy.kitt.ai)或[热词api](https://snowboy.kitt.ai/api/v1/train/)创建您的个人热词模型
*用您的个人模型替换[alexa avs示例应用程序](https://github.com/alexa/alexa-avs-sample-app)(安装后)中的热词模型用您刚刚创建的个人模型替换您的个人模型.pmdl,用您克隆Alexa AVS示例应用程序存储库的实际路径替换$Alexa AVS示例应用程序路径。
cp your个人模型.pmdl$Alexa AVS示例应用程序路径/samples/wakewordagent/ext/resources/Alexa.umdl
````

*将"应用程序前端"设置为"false"`并更新[Alexa AVS示例应用程序代码](https://github.com/alexa/alexa-avs-sample-app/blob/master/samples/wakewordagent/src/kittaisnowboywakewordengine.cpp)中的"sensitivity",然后重新编译

`````
_ avs_sample_u app_path/samples/wake word agent/src/



**通用模型**
*将[Alexa AVS示例应用程序](https://github.com/alexa/alexa-avs-sample-app)(安装后)中的Hotword模型替换为您的通用模型

`````
;请将您的"通用"模型.umdl替换为您刚刚创建的个人模型,并将$Alexa AVS`U示例应用程序路径替换为Y所在的实际路径。ou
克隆了alexa avs示例应用程序存储库。
cp your_universal_model.umdl$alexa_avs_sample_app_path/samples/wakewordagent/ext/resources/alexa.umdl
`````

*更新[alexa avs示例应用程序代码](https://github.com/alexa/alexa-avs-sample-app/blob/master/samples/wakewordagent/src/kittaisnowboywakewordengine.cp(p)并重新编译


````
;请用克隆alexa avs sample app存储库的实际路径替换$alexa avs_sample app_sample app_sample app存储库的实际路径。
cd$alexa avs_sample_sample app_sample app路径/samples/wakewordagent/src/

<
;修改kitaisnowaboywakewordengine.cpp并在第28行更新敏感度。
make
```
````


*运行Wake Wo引擎设置为"kitt_ai"的研发代理!


.kitt.ai/api/v1/train/``
端点。查看[完整文档](http://docs.kitt.ai/snowboy)和示例[python/bash脚本](examples/rest-api)(非常欢迎其他语言贡献)。

":"en",
"年龄组":"10*19",
"性别":"f",
"麦克风":"麦克风类型",
"令牌","语音样本",[
{wave:"<;base64编码wave data>;"},
{wave:"<;base64编码wave data>;"},
"{wave:"<;base64编码的wave数据"}
]
}



然后您将得到一个训练有素的个人模型作为回报!

它由深层神经网络驱动,具有以下特性:

***高度可定制**:您可以在这里自由定义自己的神奇词组–
让它成为"芝麻开门"、"车库门打开"或"你好梦之家",您可以命名它。

**总是在听**,但p保护您的隐私:Snowboy不使用互联网,也不*将您的声音传输到云端。

*轻量级和**嵌入式**:它甚至可以在树莓PI上运行,在最弱的PI(单核700MHz ARMV6)上消耗的CPU少于10%。



目前Snowboy支持(查看[库](lib)文件夹):

*所有版本的Raspberry PI(Raspbian基于Debian Jessie 8.0)
*64位Mac OS X
*64位Ubuntu(12.04和14.04)
*iOS
*Android
*Pine64(Debian Jessie 8.5,3.10.102 bsp2)
*Nvidia JEtsStx1(使用以上PNE64封装)
*NVIDIA JETSON TX2(使用PNE64封装)< BR/> *英特尔爱迪生(基于Debian WoZy 7.8的UBILIUX)BR/> *三星ARTIK(用FEDORA 25为ARMV7构建)
*ARM64(AGAR64,Ubuntu 16.04)
< BR> >以A**C+ +库**的形式使用语言swig生成的依赖包装
。我们欢迎新语言的包装——随时发送一个拉请求!目前我们已经建立了包装:
BR/> *Java/Android
*(感谢@ BrutNd)
* Perl(感谢@ EvooChann和@ NEKUZZ0R)
Perl(感谢@ iBugSuperSky])BR/*Python
*iOS/SWIFT3(感谢@ GRIMROKRONCE)< BR/> *iOS/ObjiC(感谢@ PATRIKJQUIN)< BR/> BR/> I如果您想在其他硬件/操作系统上获得支持,请将您的请求发送到
[snowboy@kitt.ai](mailto:snowboy.kitt.ai)

注意:**snowboy尚不支持Windows**。请在*nix平台上建立雪童。


pport

当您测试这些
模型时,请记住,它们可能不会针对您的特定设备或
环境进行优化。


以下是模型列表,以及您必须为它们使用的参数:

**resources/snowboy.umdl**:通用模型,用于热词"snowboy"。将
setsensitivity设置为0.5以获得更好的性能。
**resources/alexa.umdl**:热词"alexa"的通用模型。将
设置灵敏度设置为0.5,最好将applyfrontend(仅适用于覆盆子
pi)设置为true。这个模型被抑制了。
**resources/alexa/alexa_.umdl**:热词的通用模型
"alexa"。这项工作仍在进行中。将setsensitity设置为0.15。
**resources/alexa/alexa avs sample app/alexa.umdl**:针对[alexa avs sample app]优化的
热词"alexa"的通用模型(https://github.com/alexa/alexa avs sample app)。
set setsensitity to 0.6,并将applyfrontend(仅适用于覆盆子pi)
设置为true。这是迄今为止我们公开发布的最好的"Alexa"模型,当
applyfrontend设置为true时。


有关快速安装运行:


npm install--save snowboy


有关示例用法,请参见"examples/node"文件夹。您可能需要安装
依赖项,如"fs"、"wav"或"node-record-lpcm16",具体取决于您使用的脚本。


python demo预编译的二进制文件
*64位ubuntu[12.04](https://s3-us-west-2.amazonaws.com/snowboy/snowboy releases/ubuntu1204-x86-u64-1.2.0.tar.bz2)
/【14.04】(https://s3-us-west-2.amazonaws.com/snowboboy/snowboboy/snowboboy releases/ubuntu1404-x86-x86-x86-64-1.2.0 tar.bz2)
*[macos x](https://s3-us-west-2.amazonaws.com/snowboy/snowboboboy releas/osx-x86-64-1.2.2.0.tar.bz2)
*raspbberry pi with raspbian 8.0,所有版本
(【1/2/2/2/2/3/3/0】(https://s3-us-west-west-2.2.2.是的zonaws.com/snowboy/snowboy releases/rpi-arm-raspbian-8.0-1.2.0.tar.bz2))
*pine64(debian jessie 8.5(3.10.102))、nvidia jetson tx1和nvidia jetson tx2([下载](https://s3-us-west-2.amazonaws.com/snowboy/snowboy releases/pine64-debian-jessie-1.2.0.tar.bz2))
*英特尔爱迪生(ubilinux bas)在Debian Wheezy 7.8上编辑([下载](https://s3-us-west-2.amazonaws.com/snowboy/snowboy releases/edison-ubilinux-1.2.0.tar.bz2))


lowing,这取决于您使用的演示程序和使用的平台:

*sox(音频转换)
*portaudio或pyaudio(音频捕获)
*swig 3.0.10或更高版本(为不同语言/平台编译snowboy)
*atlas或openblas(矩阵计算)

y您还可以在下面找到安装依赖项所需的确切命令。



\mac os x

`brew`install`swig`、`sox`、`portaudio`及其python绑定`pyaudio`:

brew install swig portaudio sox
pip install pyaudio

如果您没有安装自制程序,请[在此处](http://brew.sh/)下载。如果你没有"pip",你可以安装它[在这里](https://pip.pypa.io/en/stable/installing/)。

`"sox"、"portaudio"及其python绑定"pyaudio":

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需要安装以下依赖项:

sudo apt get install libmagic dev libatlas base dev

然后要编译插件,请从Snowboy存储库的根目录运行以下命令:


compile一个Java包装器:BR/> BR/>你必须安装JDK。< BR/> CD SWIG/JavaBR/>使
BR/> SWIG将生成一个名为"Java'的目录,它包含转换的Java包装器和一个名为‘JNILBS’的目录,包含JNI库。
BR/>运行Java示例脚本:BR/> BR/> CD示例/javaBR/>使运行
BR/>α编译Python包装器
BR/> CD SWIG/Python
使
BR/>swig将生成一个"snowboydetect.so"文件和一个简单(但很难读取)的python包装器"snowboydetect.py"。我们在上面提供了一个更高级的python包装器snowboydecoder.py。

wig/go
go build-o snowboy main.go
./snowboy.././resources/snowboy.umdl.././resources/snowboy.wav

adme.md`.

\/perl

如果您还没有cpanm,请安装它。
curl-l https://cpanmin.us perl--sudo app::cpanminus

注意,在Linux上,您必须首先安装portaudio包,例如:
apt get install portaudio19 dev
sudo cpanm--installdeps。

/snowboy_restful_train.pl<;api_token>;<;hotword>;<;language>;

运行snowboy google speech api示例。默认情况下,它使用snowboy
通用热词。
./snowboy



编译ios包装器

在objective-c中使用snowboy库并不真正需要包装器。它基本上与Objtovi.C中使用C++库相同。我们为iOS设备编译了一个"FAT"静态库,见这里的库"LB/iOS/LIB SunBooth.A.B./BR/> BR/>初始化Objul-C中的雪人检测器:
BR/>雪人:SunByoBythy:SunByoDebug =新雪人::中岛幸惠STD:[B[/NStraseBetrasePrimeRealthRe]:[Urf8]),
STD::String([[NSbBasePixePraseRealthRease:@ SunPosits OfType:@"UMDL"] UTF8String));
SosiBybor -& Gt St灵敏度("0.45");//对EAC的敏感性h hotword
snowboydector->;setaudiogain(2.0);//audio gain for detection


to run hotword detection in objective-c:


调用"rundetection()"的频率,它控制CPU使用率和检测延迟。

感谢@patrickjquinn和@grimlocksrocks,我们现在有了在objective-c和swift3中使用snowboy的示例。查看"examples/ios/"上的示例和下面的屏幕截图!


<;img src=https://s3-us-west-2.amazonaws.com/kittai-cdn/snowboy/obj-c_demo-u 021772017.png alt="obj-c example"width=300/>;<;img src=https://s3-us-west-2.amazonaws.com/kittai-cdn/snowboy/swift3_demo-u 021721717.png alt="swift3 example"width=300/>;




<
。;编译android包装器

完整的自述和教程在[android readme]中(examples/android/readme.md),这里有一个截图:

<;img src="https://s3-us-west-2.amazonaws.com/kittai-cdn/snowboy/snowboy alexa demo-andriod.jpeg"alt="android alxa demo"width=300/>;

RoID应用程序,可以安装和运行,开箱即用:[snowboy alexa demo.apk](https://github.com/kitt-ai/snowboy/raw/master/resources/alexa/snowboyalexademo.apk)(如果以前安装过此应用程序,请先卸载以前的任何一个)。

ples/python`文件夹并打开您的python con唯一:

in[1]:导入SnowboyDecoder


in[2]:def detected_callback():
….:打印"检测到的Hotword"
….:


in[3]:detector=SnowboyDecoder.HotwordDetector("resources/Snowboy.umdl,sensitivity=0.5,audio撸gain=1)


在[4]:detector.start(detected_callback)


然后对麦克风说"snowboy",查看雪童是何时检测到您的。


"snowboy.umdl"文件是一个"通用"模型,可以检测不同的人说"snowboy"。如果你想要其他的热词,请去[雪童.kitt.ai](https://snowboy.kitt.ai)录制、训练和下载你自己的个人模型(一个`.pmdl'文件)。

但您可能会收到更多错误警报。

"音频增益"控制是增加(gt;1)还是减少(lt;1)输入音量。

意外的关键字参数"model_str"

您可能正在使用旧版本的swig。请升级。我们已经使用SWIG版本3.0.7和3.0.8进行了测试。


xa avs示例应用)
*新解码器适用于Alexa

**v1.1.1,3/24/2017等短热词**

*添加了Android演示
*添加了iOS演示
*添加了Samsung Artik支持
*添加了Go支持
*添加了Intel Edison支持
*添加了Pine64支持
*添加了Perl支持
*增加了一个更健壮的"alexa"模型(umdl)
*通过`/api/v1/train``端点提供hotword服务。
*解码器没有更改。

**v1.1.0,9/20/2016**

*增加了节点库。
*增加了对python3的支持。
*增加了通用模型alexa.umdl`
*更新了Universal Model"Snowboy.umdl",使其在嘈杂的环境中工作。

**v1.0.4,7/13/2016**


*更新了Universal"Snowboy.umdl"模型,使其更加健壮。
*各种改进加快了检测速度。
*错误修复。

**v1.0.3,6/4/2016**


*更新了Universal的"snowboy.umdl"模型,使其在非语音环境中更加健壮。
*修复了使用float作为输入数据时的错误。
*增加了对Android ARMV7体系结构的库支持。
*增加了针对iOS的库。

**v1.0.2,5/24/2016**

*更新了Universal的"snowboy.umd"L模型BR/> *添加C++示例,文档将在下一个版本中出现。
BR/**VAD现在返回-沉默2,错误1,语音0,以及触发模型0。BR/> *添加Raspberry Pi静态库,以供人们编译自己而不使用TH。e二进制版本

**v1.0.0,5/10/2016**

*初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在设置AtomicBoolean之前检查另一个条件?   通过java将文件从windows计算机复制到另一台windows计算机   java如何在使用Cobertura时忽略与记录器相关的If条件?   java无法在Eclipse中导出Android应用程序   带GSON的java parse JSON返回null   java Extract/filter Splunk查询和条件逻辑   java ProgressBar带有一个倒计时器Android   java我应该为每个DAO编写通用方法的集成测试吗?   java从命令行访问执行JAR的文本文件   任务应用程序的java Gradle生成失败:processReleaseResources   预测函数的java DeepLearning4j NN不收敛   java如果发现特殊字符,如何删除字符串中的字符?   在Java中,从精确位置将字符串拆分为两个   将Java ByteArrayOutputStream压缩到不同的容器中   带有同心指示方块的java太空船模拟器制导计算机   java如何使用Jericho解析两条注释?   PersistenceUnit中的java多个类   连接到java中的elasticsearch?   当嵌入HTML页面时,删除java小程序中的外部白色边框   用于webstart的java CXF ClassCastException(SEIStub/ClientProxy)