【ROS】科大讯飞语音SDK+Ubuntu16.04 + kinetic 实践报错记录及解决方案(1):cannot find -lmsc

前言 

这段时间在ubuntu 16.04 kinetic上想要实现语音助手的功能,经过搜索相关ROS语音交互相关资料发现有很多方案,如pocketsphinx这是国外的语音功能包,能够实现语音识别的功能,还有CMU sphinx 这据说是ROS原生态支持的语音交互,CMU内部也是支持pocketsphinx的,等等还有一些国内语音的科大讯飞和百度语音等等。

CMU Sphinx Downloads – CMUSphinx Open Source Speech RecognitionCMUSphinx is an open source speech recognition system for mobile and server applications. Supported languages: C, C++, C#, Python, Ruby, Java, Javascript. Supported platforms: Unix, Windows, IOS, Android, hardware.https://cmusphinx.github.io/wiki/download/具体地可参见下面这篇博客,写的很详细:

ROS实战(一) 语音交互系统的学习:初步了解语音交互流程_无驰复逸的博客-CSDN博客_语音交互系统前言虽然说目前语音识别,合成这块技术已经很成熟了,没什么可以拓展的地方了,但是还是想自己实现一下在ros下进行语音识别以及熟悉整个流程,感觉还是挺cool的。 目前这块属科大讯飞和百度语音这两公司做的不错,不过还有其他的一些比如:思必驰,捷通华声,云之声,图灵OS等 ros下的语音交互系统,原生态的主要是支持的一个叫cmu sphinx, 支持多种语言,英语和德语都是支持的。 比如...https://blog.csdn.net/weixin_40522162/article/details/80427654那么经过我的探索之后最后选择国内的科大讯飞实现语音助手功能。也就是后面几篇博客主要是为这个重心。之所以说的探索,是因为再次之前我的却尝试使用pocketsphinx和CMU sphinx,然而各自出现了一系列问题。

对于pocketsphinx,主要是一些依赖安装的版本和相关组件的配套和兼容问题,虽然最后没有使用它,但我还是花长时间在ROS上debug,并最后运行成功了!别说花多久时间了……

而对于CMU sphinx我直接放弃了,看不太懂这个工具具体要怎么使用,说明文档也离谱得长(仅对于我个人时间紧迫)没有那么多时间去深究了。不过这里还是要说一下的,CMUsphinx文档写的很详细,如果时间很充裕的话,一个不太了解的小白认真看完的话,也会语言模型以及语音识别、合成等功能实现的具体原理有一定掌握的,nice!

Anyway,终于整出来了,下面是这个过程的bug和debug总结。

正文

具体实现参照来源:ROS与语音交互-科大讯飞语音SDK的ROS包使用(xf-ros ) - 创客智造

一开始没有找到sdk在哪里下载,链接:SDK下载 - 科大讯飞api接口 - 讯飞开放平台 

【ROS】科大讯飞语音SDK+Ubuntu16.04 + kinetic 实践报错记录及解决方案(1):cannot find -lmsc_第1张图片前面教程中提到说,把libmsc.so文件替换一下写的不够详细,并且会报错如下:

error :cannot find -lmsc

【ROS】科大讯飞语音SDK+Ubuntu16.04 + kinetic 实践报错记录及解决方案(1):cannot find -lmsc_第2张图片

我这里把这个步骤详细说明一下,具体步骤如下: 

在讯飞平台上根据需求选择功能之后下载SDK,将下载下来的压缩包解压后在lib文件夹下,会有x64和x86两个自文件,这里根据自己的系统选择!这里要特别注意版本哈!我是64位双系统所以选择64文件夹下的libmsc.so文件,将它复制到 /home/catkin_wa/src/xfei_asr/lib下(默认你的catkin_ws是直接安装在home下。如果不是,请复制到在你的catkin_ws下的xfei_asr/lib下)该路径下已经存在这个文件,可以先备份一下原来的,然后把新下载的复制进去,即可。

上述步骤结束后,重新回catkin_ws编译一下,幸运的话就结束了,但很有可能你也和我一样会报错,如上图。 于是我把上述同样的so文件放到/usr/lib下了,并且给它权限了:chmod +x libmsr.so这一步是需要权限的,注意使用sudo。

至此这个报错就结束了,其他的按照教程里面走就基本没有问题了。

虽然看上去很简单的问题也很简单的解决方案,但是每一个总结出来的解决办法都经历了很长时间的探索和试错。

在这一过程中,很好地锻炼了我排查问题和解决问题的能力,还是很值得的。特别是对问题的定位、原因的分析,只有能够找到具体问题的定位在哪里,才能最快找到问题的解决方案。而在Linux当中,还是有很多问题的报错很含糊其辞的,因此积累相关经验也还是很有必要的。加油!

 

你可能感兴趣的:(ROS,Debug,ROS,linux)