linux/ubuntu16.04系统上snowboy swig源码安装及使用全记录和遇到的错误
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:
- 进入swig-3.0.12目录
cd swig-3.0.12
- 执行configure:
./configure
- 然后编译:
make
- 安装:
make install
配置path。打开home目录下的bashrc文件,根据你的swig安装目录,将下面两行写入到文件中:
SWIG_PATH=/usr/local/share/swig/3.0.12 PATH=$PATH:$SWIG_PATH
《这个地方有个坑,见最后的错误汇总4.1》
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源码安装及使用全记录和遇到的错误相关推荐
- linux(ubuntu16.04)系统下Matlab2015b软件下载与安装
Linux版Matlab2015b软件下载安装与运行 一.Matlab软件(Linux版)百度网盘下载 二.软件安装教程 三.软件破解步骤 四.打开软件和添加环境变量 五.创建linux桌面快捷方式 ...
- CentOS7系统上的GPSTK源码安装
网址:http://www.gpstk.org/bin/view/Documentation/BuildingGPSTkUnderUnix 这里使用Cmake来安装源码,网站上的原文摘抄如下,有少部分 ...
- 【githubshare】基于 C 语言编写的一款 2D 太空射击游戏,已在 Windows 10 和 Ubuntu Linux 16.04 系统上跑通测试
基于 C 语言编写的一款 2D 太空射击游戏:space-shooter.c,已在 Windows 10 和 Ubuntu Linux 16.04 系统上跑通测试. GitHub:github.com ...
- Ubuntu16.04编译android6.0.1源码记录
目录 目录 一.安装环境 二.下载源码 1.下载repo 2.初始化repo 3.同步源代码 关于驱动 三.编译源码 四.导入源码到AS 五.刷入真机 六.修改源码 总结: 3.同步源代码 关于驱动 ...
- 在Windows上使用Cygwin源码安装tig
Linux上安装就简单,这里就不介绍了 参考官网:https://github.com/jonas/tig/blob/master/INSTALL.adoc git clone git@github. ...
- ubuntu16.04系统制作本地apt源
一.背景及概述 1.背景 1)最近在做的一个项目,linux环境是ubuntu16.04,需要把多个开源包打在一起形成一个安装包供其他人使用,这就面临一个问题,开源包依赖很多的linux依赖库,同时不 ...
- Ubuntu 14.04 64bit上curl-7.37源码包中的sample 源码示例研究
curl是Linux平台上(本人不考虑其他平台)很好用的一个工具软件,它有命令行,有C接口API,更常见的编程用途是php和python版本.如果在C/C++平台上使用curl,可以直接去官网 htt ...
- Linux+Apache2.4+PHP5.6+MySQL5.6源码安装步骤
一.安装Apache 若要安装apache服务器软件,需要安装以下几个依赖软件 apr-1.4.6.tar.gz 下载地址:http://apr.apache.org/ apr-util-1.4.1. ...
- ubuntu17.04下mysql5.7.18源码安装
1.下载mysql5.7.18源码(带有boost) 下载 地址为https://dev.mysql.com/downloads/mysql/ 2.添加mysql组及用户 groupadd mysql ...
- 在Ubuntu16.04系统上更新FireFox浏览器(即火狐浏览器)到最新版本
前言 难点在于我下载的是一个压缩包firefox-61.0.2.tar.bz2,没法按照正常流程安装,所以才写这篇博客记录一下. 一.找到FireFox的更新版本并下载 1)我之前的版本是Firefo ...
最新文章
- js获取浏览器当前时间
- 数据库——修改表信息(转)
- DHCP服务器的配置详细说明
- eLua学习第一课:和Lua的第一次亲密接触
- 使用VNS 使用XWINDOWS 登录远程服务器方法
- 删除后别人的微信号变成wxid_安卓版微信更新了,微信号终于可以修改了?
- 使用adb shell screencap命令截图
- 论文查重 降重复度?如何进行毕业论文查重--总结贴
- 【艾琪出品】《计算机应用基础》【试题汇总9】
- 学习uc/os-ii
- Win10系统耳机插入不起作用_依然外放声音---Windows运维工作笔记053
- 如何使用Python生成数据分析报告
- 平衡左右脑、加强记忆、提高情商……冥想的这些好处你知道吗?
- 【基础】什么是网关以及网关作用
- java mysql多媒体积件管理库的开发与应用源码+论文
- python seth什么意思_【后端开发】python中的seth是什么意思
- radmin viewer报错User does not have security permission for this connection type. 用户没有该联机类型的安全许可
- redis的事件模型详解(结合Reactor设计模式)
- C8:Unity3D制作智能家居设计软件——智能装修(三)
- esxi 自动给虚拟机打快照(定时快照任务)
热门文章
- 小米笔记本android,小米笔记本同步助手下载
- 记忆术: 记数字 (110数字图像编码)
- 理解运放的虚断和虚短
- 拼多多关键词搜索接口,商品分类ID搜索商品列表接口,关键词搜索商品销量接口,拼多多销量API接口
- 微信用户扫码登录和登录退出的业务逻辑实现(java版)
- frm考试可以用计算机,FRM考试,能用哪些金融计算器?(内含用法功能全解读)...
- wincc怎么c语言编程,WINCC几个常用C语言编程
- python内置函数什么意思_python内置函数是什么
- 塑胶产品内滑块设计要点,以及注意哪些事项?
- Max Script|加密写法