linux/ubuntu16.04系统上snowboy swig源码安装及使用全记录和遇到的错误

目录

linux/ubuntu16.04系统上snowboy swig源码安装及使用全记录和遇到的错误

零、主要参考:

0.1 官网链接:

0.2 其他链接:

一、安装必要的包

1.1 安装pyaudio、sox

1.2 安装PortAudio的Python绑定

1.3 检查现在是否可以用你的麦克风录音

1.4 安装swig(版本>=3.0.10)

1.4.1 下载swig3.0.12的压缩包:

1.4.2 解压swig3.0.12的压缩包:

1.4.3 安装swig3.0.12:

1.4.4 验证swig3.0.12安装是否成功:

1.5 安装atlas矩阵计算库

二、源码安装snowboy

2.1 获取官网源码

2.2 进入待编译的目录进行编译

2.3 开始编译make

三、测试snowboy

3.0 目录树如下所示:

3.1 使用示例demo.py测试是否可用

3.2 使用示例demo.py测试自定义的唤醒词

四、遇到的错误汇总

4.1 在Python3目录编译时出错

4.2 在运行示例程序demo.py时出错


零、主要参考:

0.1 官网链接:

[github]
建议去官网的github上按照readme.md去做,如果按照官网上的github上的教程走下去没有什么错误的话,本blog可以不用往下看了。
[官网参考文档]
这个是官网给的doc,可以看看,毕竟是官网给的。

0.2 其他链接:

下面是在安装过程中出现的一些错误,然后搜索的、经过自己实践、行之有效的参考链接(不敢保证在读者机器上完全适用,作为参考),可先看正文,遇到相同错误再看:

参考1:https://answers.ros.org/question/36890/unable-to-find-swigswg-and-unable-to-find-pythonswg/

参考2:https://www.cnblogs.com/starktan/p/9365999.html

一、安装必要的包

主要的坑都在这一步,在这一步我把所有能踩的坑几乎全踩了,昨天晚上找bug找到崩溃,不知所以然的到了十二点多,就怀着不甘心地去睡觉了。

1.1 安装pyaudio、sox

sudo apt-get install python-pyaudio python3-pyaudio sox

1.2 安装PortAudio的Python绑定

pip install pyaudio

1.3 检查现在是否可以用你的麦克风录音

1.3.1 试着运行以下命令,说一些话之后,ctrl+c退出即可:

rec temp.wav

1.3.2 然后,在运行上述命令的目录下,如果可以找到temp.wav文件,并且文件中可以听到刚刚说的话,说明麦克风工作正常。可以继续往下进行了。

1.4 安装swig(版本>=3.0.10)

这一步很关键,官网指出版本要在3.0.10及以上才行。

如果你是ubuntu16.04,使用命令:

sudo apt install swig

默认安装的应该是3.0.8(在我机器上默认按照的版本是这个),你可以试一下如果版本不对再卸载掉。如果是18.04,默认安装的好像是3.0.12。注意!

1.4.1 下载swig3.0.12的压缩包:

可以从swig网站上下载3.0.12的安装包,然后解压到本地;在这里直接点进去链接也同样可以下载3.0.12。或者terminal里使用git clone ...

1.4.2 解压swig3.0.12的压缩包:

如果是tar.gz压缩包的话,执行以下命令:

tar -xzvf swig-3.0.12.tar.gz

如果是zip压缩包的话,可以执行以下命令:

unzip -o -d /home/swig-3.0.12 swig-3.0.12.zip

1.4.3 安装swig3.0.12:

  1. 进入swig-3.0.12目录

    cd swig-3.0.12
  2. 执行configure:
    ./configure
  3. 然后编译:
    make
  4. 安装:
    make install
  5. 配置path。打开home目录下的bashrc文件,根据你的swig安装目录,将下面两行写入到文件中:

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

    《这个地方有个坑,见最后的错误汇总4.1》

  6. source 使之生效:

    source ~/.bashrc

    1.4.4 验证swig3.0.12安装是否成功:

输入一下指令,看一下刚刚的安装过程是否成功:

swig -version

如果返回下面的信息,说明安装swig3.0.12成功:

SWIG Version 3.0.12Compiled with g++ [x86_64-pc-linux-gnu]Configured options: +pcrePlease see http://www.swig.org for reporting bugs and further information

1.5 安装atlas矩阵计算库

sudo apt-get install libatlas-base-dev

  二、源码安装snowboy

刚刚在上面安装的是一些必要的配置,现在才到了最主要的部分,获取snowboy的源码并编译安装。

2.1 获取官网源码

输入以下指令:

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

2.2 进入待编译的目录进行编译

进入Python3的目录的话,输入以下指令:

cd snowboy/swig/Python3

如果Python2的话,进入Python目录即可:

cd snowboy/swig/Python

 2.3 开始编译make

make

《在这里编译的过程中,是我遇到最头疼的问题,一直出现一个报错,见blog最后一部分错误汇总4.1》

编译成功后,在该目录会生成一个名字为_snowboydetect.so的文件,这是我们需要的最重要的一个文件。

  三、测试snowboy

在测试之前,我们先来建立一个自己的文件夹,然后把需要的文件copy进来,就不用在snowboy文件夹下修改一些东西什么的了,避免一些麻烦。

3.0 目录树如下所示:

snowboy_project
├── _snowboydetect.so
├── demo.py
├── demo2.py
├── resources
│   ├── ding.wav
│   ├── dong.wav
│   ├── common.res
│   └── models
│       └── snowboy.umdl
├── snowboydecoder.py
└── snowboydetect.py
  • snowboy_project:自建的snowboy的工程文件夹,名字随意;
  • _snowboydetect.so:在2.3编译完成后生成的文件<在目录~/snowboy/swig/Python3下>,复制到自建的文件夹的根目录下;
  • demo.py、demo2.py:在snowboy的示例文件夹~/snowboy/examples/Python3复制过来的测试程序;
  • resources文件夹:在文件夹~/snowboy/下,找到resources文件夹,复制过来即可。<这个文件夹在目录~/snowboy/examples/Python3下也有,但是这个文件夹下的resources文件夹是一个链接文件,链接到了~/snowboy/resources文件夹,即实际用的resources文件夹还是在~/snowboy/resources>。《这里其实也算是一个坑吧,我前几次安装失败和这里有关系,因为你复制链接文件过去的话,会导致该链接文件找不到真正链接的源文件,还提示你让你删除掉该链接文件》
  • models:里面放模型文件;模型文件可以是自带的,也可以是在官网上自定义的下载好的。<自带的模型文件是以.umdl为后缀名,自定义的是以.pmdl为后缀名(我发现的区别,不知道是不是真是这样)>
  • snowboydecoder.py:由~/snowboy/examples/Python3下复制而来。
  • snowboydetect.py:由~/snowboy/swig/Python3下复制而来。

3.1 使用示例demo.py测试是否可用

3.1.1 打开自己的工程目录:

cd snowboy_project

3.1.2 执行以下命令,运行示例程序:

python3 demo.py resources/models/snowboy.umdl

3.1.3 会出现以下报错:

  File "/home/cpz/snowboy_project/snowboydecoder.py", line 5, in <module>from . import snowboydetect
SystemError: Parent module '' not loaded, cannot perform relative import

3.1.4 按照3.1.3中提示修改snowboydecoder.py程序,删除“from .”,变成import snowboydetect。

3.1.5 回到3.1.2,即可运行示例程序。这个时候当你说出"snowboy"的时候,即可听到ding的一声,说明上述努力全部成功。

《这里我又遇到了bug,我真是擅长出现bug!见错误汇总的4.2》

3.2 使用示例demo.py测试自定义的唤醒词

3.2.1 首先,录制三个语音文件,录制过程中只说唤醒词,环境越安静越好;录制方法和1.3中相同。

3.2.2 在snowboy官网登录(github即可)后,Create Hotword--->在New Hotword界面输入该唤醒词的信息:

3.2.2 点击Record my voice,分别上传我们刚刚录制好的三个录音文件:

3.2.3 点击Test the model,等待一会训练完成后,说出你的唤醒词,有一次识别成功的话,即可保存该模型(Save and download):

3.2.4 将3.2.3中下载的模型,移动至我们的resoures/models文件夹下;

3.2.5 测试自己的模型:

python3 demo.py resources/models/giao.pmdl

 看看测试是否成功吧! good luck!

  四、遇到的错误汇总

4.1 在Python3目录编译时出错

我在编译Python3目录(Python也是)时,出现了类似于下面所示的错误:(大概是下面这样,具体的错误忘记保存了)

:1: Error: Unable to find 'swig.swg'
:3: Error: Unable to find 'python.swg'Error: Unable to find 'std_string.i'make: *** [all] Error 2

这个是促使我昨天熬夜到十二点多的罪魁祸首,苦苦在网上搜索,连官网github的issue都找了一遍,居然没有和我同样错误的,我:...,吾将上下而求索 !

终于还是在这里找到了一个类似的问题,大概意思是swig的安装脚本默认认为的安装路径在/usr/local/share/swig/...,但是和实际的安装路径并不一定一样,导致找不到相关的文件才发生的报错,衷心感谢那位回答该问题的人!

我去找了一下我swig的实际目录,是在:

/usr/local/swig-3.0.12/share/swig/3.0.12

果然是!果然是!果然是!  呜呜呜,我真的哭了。已经老的熬不动夜了,呜呜,爬去睡觉吧(睡觉前又遇到了4.3的报错,索性没改,就耿耿于怀的去睡觉了,也没睡好。)

然后,将这个目录复制到/usr/local/share目录下:

cp -r /swig /usr/local/share

在bashrc文件中添加的path的值要和真实的路径一致,见1.4.3的step5。

再返回去,重新编译即可。

 4.2 在运行示例程序demo.py时出错

在运行示例程序时出现错误提示信息:

Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock

经过搜索,该错误提示好像并不影响程序的正常运行,有知道真正解决办法的欢迎留言。这个地方参考这里的解决方法。

思路在运行的py程序中添加:

import os
os.close(sys.stderr.fileno())

这个也谈不上是解决办法,只是不让错误信息在terminal里显示了而已,哎,头大。

linux/ubuntu16.04系统上snowboy swig源码安装及使用全记录和遇到的错误相关推荐

  1. linux(ubuntu16.04)系统下Matlab2015b软件下载与安装

    Linux版Matlab2015b软件下载安装与运行 一.Matlab软件(Linux版)百度网盘下载 二.软件安装教程 三.软件破解步骤 四.打开软件和添加环境变量 五.创建linux桌面快捷方式 ...

  2. CentOS7系统上的GPSTK源码安装

    网址:http://www.gpstk.org/bin/view/Documentation/BuildingGPSTkUnderUnix 这里使用Cmake来安装源码,网站上的原文摘抄如下,有少部分 ...

  3. 【githubshare】基于 C 语言编写的一款 2D 太空射击游戏,已在 Windows 10 和 Ubuntu Linux 16.04 系统上跑通测试

    基于 C 语言编写的一款 2D 太空射击游戏:space-shooter.c,已在 Windows 10 和 Ubuntu Linux 16.04 系统上跑通测试. GitHub:github.com ...

  4. Ubuntu16.04编译android6.0.1源码记录

    目录 目录 一.安装环境 二.下载源码 1.下载repo 2.初始化repo 3.同步源代码 关于驱动 三.编译源码 四.导入源码到AS 五.刷入真机 六.修改源码 总结: 3.同步源代码 关于驱动 ...

  5. 在Windows上使用Cygwin源码安装tig

    Linux上安装就简单,这里就不介绍了 参考官网:https://github.com/jonas/tig/blob/master/INSTALL.adoc git clone git@github. ...

  6. ubuntu16.04系统制作本地apt源

    一.背景及概述 1.背景 1)最近在做的一个项目,linux环境是ubuntu16.04,需要把多个开源包打在一起形成一个安装包供其他人使用,这就面临一个问题,开源包依赖很多的linux依赖库,同时不 ...

  7. Ubuntu 14.04 64bit上curl-7.37源码包中的sample 源码示例研究

    curl是Linux平台上(本人不考虑其他平台)很好用的一个工具软件,它有命令行,有C接口API,更常见的编程用途是php和python版本.如果在C/C++平台上使用curl,可以直接去官网 htt ...

  8. Linux+Apache2.4+PHP5.6+MySQL5.6源码安装步骤

    一.安装Apache 若要安装apache服务器软件,需要安装以下几个依赖软件 apr-1.4.6.tar.gz 下载地址:http://apr.apache.org/ apr-util-1.4.1. ...

  9. ubuntu17.04下mysql5.7.18源码安装

    1.下载mysql5.7.18源码(带有boost) 下载 地址为https://dev.mysql.com/downloads/mysql/ 2.添加mysql组及用户 groupadd mysql ...

  10. 在Ubuntu16.04系统上更新FireFox浏览器(即火狐浏览器)到最新版本

    前言 难点在于我下载的是一个压缩包firefox-61.0.2.tar.bz2,没法按照正常流程安装,所以才写这篇博客记录一下. 一.找到FireFox的更新版本并下载 1)我之前的版本是Firefo ...

最新文章

  1. js获取浏览器当前时间
  2. 数据库——修改表信息(转)
  3. DHCP服务器的配置详细说明
  4. eLua学习第一课:和Lua的第一次亲密接触
  5. 使用VNS 使用XWINDOWS 登录远程服务器方法
  6. 删除后别人的微信号变成wxid_安卓版微信更新了,微信号终于可以修改了?
  7. 使用adb shell screencap命令截图
  8. 论文查重 降重复度?如何进行毕业论文查重--总结贴
  9. 【艾琪出品】《计算机应用基础》【试题汇总9】
  10. 学习uc/os-ii
  11. Win10系统耳机插入不起作用_依然外放声音---Windows运维工作笔记053
  12. 如何使用Python生成数据分析报告
  13. 平衡左右脑、加强记忆、提高情商……冥想的这些好处你知道吗?
  14. 【基础】什么是网关以及网关作用
  15. java mysql多媒体积件管理库的开发与应用源码+论文
  16. python seth什么意思_【后端开发】python中的seth是什么意思
  17. radmin viewer报错User does not have security permission for this connection type. 用户没有该联机类型的安全许可
  18. redis的事件模型详解(结合Reactor设计模式)
  19. C8:Unity3D制作智能家居设计软件——智能装修(三)
  20. esxi 自动给虚拟机打快照(定时快照任务)

热门文章

  1. 小米笔记本android,小米笔记本同步助手下载
  2. 记忆术: 记数字 (110数字图像编码)
  3. 理解运放的虚断和虚短
  4. 拼多多关键词搜索接口,商品分类ID搜索商品列表接口,关键词搜索商品销量接口,拼多多销量API接口
  5. 微信用户扫码登录和登录退出的业务逻辑实现(java版)
  6. frm考试可以用计算机,FRM考试,能用哪些金融计算器?(内含用法功能全解读)...
  7. wincc怎么c语言编程,WINCC几个常用C语言编程
  8. python内置函数什么意思_python内置函数是什么
  9. 塑胶产品内滑块设计要点,以及注意哪些事项?
  10. Max Script|加密写法