前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python snowboy安装(一)

python snowboy安装(一)

作者头像
李小白是一只喵
发布2020-04-23 15:07:40
2.4K0
发布2020-04-23 15:07:40
举报
文章被收录于专栏:算法微时光算法微时光

image.png

snowboy

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

image.png

snowboy使用的是swig编译。

swig介绍

C 和 C++ 被公认为(理当如此)创建高性能代码的首选平台。对开发人员的一个常见要求是向脚本语言接口公开 C/C++ 代码,这正是 Simplified Wrapper and Interface Generator (SWIG) 的用武之地。

SWIG 允许您向广泛的脚本语言公开 C/C++ 代码,包括 Ruby、Perl、Tcl 和 Python。本文使用 Ruby 作为公开 C/C++ 功能的首选脚本接口。

snowboy源码目录结构

代码语言:javascript
复制
.
└── 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版本

代码语言:javascript
复制
$ sudo apt install swig

image.png

安装snowboy

获取源代码:

代码语言:javascript
复制
$ git clone https://github.com/Kitt-AI/snowboy.git

进入snowboy/swig/Python目录或者snowboy/swig/Python3目录(和本地安装的python有关系)执行:

代码语言:javascript
复制
$ make

image.png

生成的物件:

代码语言:javascript
复制

验证

进入examples/Python,执行demo:

代码语言:javascript
复制
python demo.py resources/models/snowboy.umdl

执行效果:

image.png

这里就是等待被唤醒的状态了。

来看一下demo.py的代码:

代码语言:javascript
复制
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可以设定自己的唤醒词,不过需要上传音频到官网 训练模型。

参考

snowboy官网 树莓派使用 snowboy 配置语音唤醒

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • snowboy
  • swig介绍
  • snowboy源码目录结构
  • 安装swig
  • 安装snowboy
  • 验证
  • 设置自己的唤醒词
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档