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账号登录,登录完成点击创建,

然后输入名称,语言和备注,点击【Record my voice】

然后将你录制的三个文件上传,点击【Test the model】

测试成功后选择下载:

得到你好的模型:

然后我们新建一个项目目录,将以下文件放入:

1、下载好的 model.pmdl 模型文件
2、snowboy/swig/Python3 目录下编译好的 _snowboydetect.so
3、snowboy/examples/Python3 目录下的 demo.pysnowboydecoder.pysnowboydetect.py 文件以及 resources 目录

然后我们尝试运行命令:

python3 demo.py nihaoxiaobai.pmdl

可以看到,当喊出你好,小白的时候,会打印出成功识别的信息,并且发出"ding"的提示音。

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

  1. 树莓派 --- 使用snowboy实现语音唤醒功能

    目录 Snowboy,KITT.AI开发的人工智能软件工具包,是一个开源的.轻量级语音唤醒引擎,通过它可以创建类似"hey, Siri" 之类的唤醒词. github项目地址 可惜 ...

  2. Python开发之路(5)— 使用HTTP获取天气情况

    Python开发之路(5)- 使用HTTP获取天气情况 一.心知天气 首先,我们需要使用到的一个平台就是心知天气:https://www.seniverse.com/ 进入心知天气的网站,注册一个账号 ...

  3. python之使用snowboy离线语音唤醒

    python之使用snowboy离线语音唤醒 介绍 snowboy 是一个开源的.轻量级语音唤醒引擎,比较好用. 训练语音模型网址: https://snowboy.hahack.com/ 环境 开发 ...

  4. python 开发之路 - 入门

    一. python 介绍 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言.1991年 发布Python ...

  5. python语音唤醒功能_百度语音识别 语音唤醒失败

    半夜起来给小朋友冲奶粉,于是忽然想到了那个在机柜里落灰的树莓派.当时用百度的语音识别和合成用python实现了一些功能.但是并没有实现语音唤醒,于是要想实现语音唤醒就只能不断的轮询接口,然后发送到百度 ...

  6. python开发大型游戏_Python也有做大型游戏的潜力?原来我们小看了Python,无所不能...

    前言 在小编以前还没怎么接触很多编程语言时,都是认为游戏(端游,手游)都是用C做出来了!不知道大家有没有这么想过,反正我是这样的.后来慢慢接触多了,才知道并不是所有的都是这个样子的! Python也有 ...

  7. python开发之路目录

    Python 目录 基础 python入门 python数据类型.字符编码.文件处理 python函数基础 python函数进阶 python装饰器函数 python装饰器函数 python递归函数 ...

  8. python开发之路-第二章

    第二章python基础 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if1==1:     name ='wupeiqi' print  nam ...

  9. python电路模型编程_14、python开发之路-并发编程之I/O模型

    十四.并发编程之I/O模型 http://www.cnblogs.com/linhaifeng/articles/7454717.html 1.模型介绍 1.1 IO种类 (1)* blocking ...

最新文章

  1. AWS太过强势?VMware为自保疑与微软达成合作
  2. formdata怎么传数组_如何使用formData上传file数组
  3. Python(28)-异常
  4. linux raw格式改名img,4款Linux下的RAW格式图片编辑软件
  5. Spread for Windows Forms高级主题(6)---数据绑定管理
  6. ad20导出bom没有Value属性
  7. win10下用VM 14安装OS X 10.11
  8. word2013论文公式居中并且自动编号
  9. Java识别获取pdf中文字信息
  10. 如何获取mac虚拟机激活码 一步学会
  11. 关系抽取论文阅读笔记
  12. PostgreSQL更改表格的owner
  13. JMeter之性能监控插件PerfMon Metrics Collector
  14. css+html 嵌套表格做简单网页
  15. wx2540h配置教程_求高手解决H3C无线网络 WX3024E和无线AP设备之间的详细配置命令!...
  16. 图像的几何变换—平移、旋转、镜像、缩放、剪切(原理+调用函数+像素操作)
  17. 【Nginx】配置中 resolver 指令的使用
  18. 中断处理优先级与中断相应次序
  19. 小程序分销商城开发功能
  20. JS——nth-child和nth-of-type的区别以及nth-of-type下的坑

热门文章

  1. 2020浙江省ACM省赛后记
  2. 功能比较全的串口助手
  3. 全球逾两亿票房影片总榜
  4. 趣头条短视频伪原创技巧
  5. Python爬虫配置Selenium库+设置无图无头属性
  6. Java数据结构——二叉树的遍历
  7. 微信公众平台php自定义菜单,php实现微信公众号创建自定义菜单
  8. AG9310设计USB TYPEC 转HDMI+U2+5V慢充方案设计|AG9310拓展坞方案电路|TYPE-C dongle设计资料
  9. 极客公园实习5天记录
  10. Windows下如何删除mysql服务