Python开发之路(4)— 使用 snowboy 做语音唤醒功能

Python开发之路(4)— 使用 snowboy 做语音唤醒功能

本次开发在Ubuntu16.04虚拟机系统。

一、snowboy介绍

snowboy 是一个开源的、轻量级语音唤醒引擎,可以通过它很轻松地创建属于自己的类似“hey, Siri” 的唤醒词。它的主要特性如下:

高度可定制性。可自由创建和训练属于自己的唤醒词 始终倾听。
可离线使用,无需联网,保护隐私。精确度高,低延迟 轻量可嵌入。
耗费资源非常低(单核700MHz 树莓派只占用 10% CPU)
开源跨平台。开放源代码,支持多种操作系统和硬件平台,可绑定多种编程语言

参考自:https://www.jianshu.com/p/a1c06020f5fd

二、安装依赖

安装 pulseaudio 软件,减少音频配置的步骤:

sudo apt-get install pulseaudio

安装 sox 软件测试录音与播放功能,安装完成后运行 sox -d -d 命令,对着麦克风说话,确认可以听到自己的声音。

sudo apt-get install sox

安装 SWIG(>3.0.10)

sudo apt-get install swig

安装 ATLAS:

sudo apt-get install libatlas-base-dev

然后Pyaudio的安装在之前的博客讲过:Python开发之路(1)— 使用Pyaudio进行录音和播音

三、获取源码,进行编译

直接使用git拉取即可

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

如果GitHub拉取不超过,可以测试使用我导入到码云的源码:

git clone https://gitee.com/william_william/snowboy.git

拉取源码成功后,进入Python3目录

cd snowboy/swig/Python3

然后使用make命令开始编译。

Swig版本过低问题解决
首先,我们下载Swig 3.0.12的源码包:https://nchc.dl.sourceforge.net/project/swig/swig/swig-3.0.12/swig-3.0.12.tar.gz
下载完成后解压:

tar -xzvf swig-3.0.12.tar.gz

然后安装需要使用的依赖工具:

sudo apt-get install g++
sudo apt-get install libpcre3 libpcre3-dev

然后进入swig源码:

cd swig-3.0.12/

配置

./configure

编译

make

安装:

sudo make install

然后将swig导入到环境变量,打开bashrc

sudo vi ~/.bashrc

添加以下两行到bashrc中

SWIG_PATH=/usr/local/share/swig/3.0.12
PATH=$PATH:$SWIG_PATH

使之生效

source ~/.bashrc

使用swig -version确认版本型号

swig -version

四、测试功能

进入官方示例目录 snowboy/examples/Python3 并运行以下命令:

python3 demo.py resources/models/snowboy.umdl

然后就会发现报错
在这里插入图片描述
我们打开snowboydecoder.py 文件,将第 5 行代码 from * import snowboydetect 改为 import snowboydetect 即可直接运行。
在这里插入图片描述
可以看到,你喊出sonwboy的时候,会打印出成功识别的信息,并且发出"ding"的提示音。

五、生成语音模型,自定义唤醒词唤醒词

录制3 个wav 格式的的音频文件,内容即为你的唤醒词,最好使用你要运行唤醒功能的机器录制,录音参数最好设置和程序中的一样,通过查阅程序,我得到的参数为:

采样深度为16位即2个字节、声道数为1、采样率为16K、

打开snowboy 官网
,然后登录,例如,我这里使用github账号登录,登录完成点击创建,
Python开发之路(4)— 使用 snowboy 做语音唤醒功能_第1张图片
然后输入名称,语言和备注,点击【Record my voice】
Python开发之路(4)— 使用 snowboy 做语音唤醒功能_第2张图片
然后将你录制的三个文件上传,点击【Test the model】
Python开发之路(4)— 使用 snowboy 做语音唤醒功能_第3张图片
测试成功后选择下载:
Python开发之路(4)— 使用 snowboy 做语音唤醒功能_第4张图片
得到你好的模型:
Python开发之路(4)— 使用 snowboy 做语音唤醒功能_第5张图片
然后我们新建一个项目目录,将以下文件放入:

1、下载好的 model.pmdl 模型文件
2、snowboy/swig/Python3 目录下编译好的 _snowboydetect.so
3、snowboy/examples/Python3 目录下的 demo.pysnowboydecoder.pysnowboydetect.py 文件以及 resources 目录
Python开发之路(4)— 使用 snowboy 做语音唤醒功能_第6张图片

然后我们尝试运行命令:

python3 demo.py nihaoxiaobai.pmdl

可以看到,当喊出你好,小白的时候,会打印出成功识别的信息,并且发出"ding"的提示音。
Python开发之路(4)— 使用 snowboy 做语音唤醒功能_第7张图片

你可能感兴趣的:(Python学习)