python snowboy安装(一)

作者: Lee_5566 | 来源:发表于2020-04-14 18:02 被阅读0次
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源码目录结构

.
└── 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
image.png

安装snowboy

获取源代码:

$ git clone https://github.com/Kitt-AI/snowboy.git

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

$ make
image.png

生成的物件:


验证

进入examples/Python,执行demo:

python demo.py resources/models/snowboy.umdl

执行效果:


image.png

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

来看一下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可以设定自己的唤醒词,不过需要上传音频到官网
训练模型。

这部分以后在考虑。^_^

今天就到这里了。

参考

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

相关文章

网友评论

    本文标题:python snowboy安装(一)

    本文链接:https://www.haomeiwen.com/subject/okrzmhtx.html