树莓派自制智能语音助手之语音唤醒

自从用《树莓派搭建家庭影院》并《用cpolar实现内网穿透》后,我的树莓派再一次进入了积灰状态。最近看了两篇关于自制智能语音助手的文章后,忽然静极思动,再次把树莓派拿了出来,倒腾一番。

要想让树莓派实现智能语音助手,首先要实现语音唤醒功能,从CSDN上找到了N篇攻略,最终参考博文《树莓派3B+指南(十一)安装配置snowboy》予以实施。具体安装过程这篇博文写的很清楚,我这里主要把自己遇到的问题列举下,以供参考。

1.换源

清华的源设置后不知怎么无法完成更新,于是换了一个阿里的源:

2.安装pyaudio

执行博文中的第一条指令,安装portaudio19-dev时遇到了报错,原来是缺少了依赖项libjack-dev,于是先执行sudo apt-get install libjack-dev,之后再根据博文完成了pyaudio的安装。

3.配置麦克风

这一步也可以参考我之前的博文《NO.5 测试树莓派的语音功能》。

4. 下载编译swig和snowboy

按照参考博文执行,先建一个snowboy的目录,进入该目录后按如下顺序操作:

需要注意的是,我在编译snowboy时出现“fatal error: Python.h: No such file or directory”的报错。出现这个报错是因为我的树莓派的Python开发包没有安装,所以要先执行“sudo apt-get install python3-dev”的操作,然后再回到指定目录执行make。编译成功后在目录下就会生成一个_snowboydetect.so文件。

另外,参考其他博文,我还安装了sox,“sudo apt-get install sox”,据说不装这个可能始终无法唤醒。

5.配置修改

打开/snowboy/snowboy/examples/Python3/snowboydecoder.py,把其中的“from . import snowboydetect”改为“import snowboydetect”。

6.复制所需文件到自己的工程目录

创建一个自己的工程目录,然后把如下文件复制到目录中:

/snowboy/snowboy/swig/Python3/目录下除了“Makefile”以外的所有文件。

/snowboy/snowboy/目录下的"resource"文件夹及其所有文件。

/snowboy/snowboy/examples/Python3/目录下的“snowboydecoder.py”文件和”demo.py”。

7.demo测试

进入工程目录,输入:python3 demo.py resources/models/snowboy.umdl

结果出现如下报错:

查了好几篇文章最终确定,主要问题就是黄色方框内提示的采样率问题。因为树莓派在基于pyaudio录音时其声卡不支持16K采样率。(黄框上部alsa的报错可以忽略,不影响唤醒)

采样率的解决方案就是安装pulseaudio:sudo apt-get install pulseaudio

安装完成后,在终端直接输入“pulseaudio --start”,启动pulseaudio。

这时候重新运行demo,用snowboy唤醒词,系统就会显示成功。

8.训练唤醒词模型

打开Snowboy Personal Wake Word,在线录音三次后提交,会自动生成对应的唤醒词.pmdl。

将这个pmdl文件放到工程目录中,再次执行demo程序,但对应的模型换成这个自定义的pmdl文件。

写在最后,语音唤醒经过上述8步已经实现。从实际测试效果来看,也可能是usb麦克风的原因导致唤醒词的识别还不够灵敏。后续再慢慢调整吧。

相关推荐

  1. 树莓docker自制镜像

    2024-07-20 01:18:01       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 01:18:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 01:18:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 01:18:01       45 阅读
  4. Python语言-面向对象

    2024-07-20 01:18:01       55 阅读

热门阅读

  1. ACE之Acceptor-Connector框架

    2024-07-20 01:18:01       15 阅读
  2. Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2) VP

    2024-07-20 01:18:01       19 阅读
  3. 197.上升的温度

    2024-07-20 01:18:01       20 阅读
  4. Openlayers特殊效果

    2024-07-20 01:18:01       15 阅读
  5. __setitem__

    2024-07-20 01:18:01       16 阅读
  6. sklearn基础教程:从入门到精通

    2024-07-20 01:18:01       17 阅读
  7. 翁恺-C语言程序设计-11-0. 平面向量加法

    2024-07-20 01:18:01       19 阅读