imx6ul蓝牙语音识别项目之4:构建ARM Linux语音识别环境

语音识别的选择
前面我们准备好了BlueZ stack, 接下来就需要准备语音识别库了。对于语音识别,国内主要的提供商有:

  • 科大讯飞
  • 图灵机器人
  • 思必驰信息科技有限公司
  • 北京捷通华声科技股份有限公司
  • 百度语音
  • 北京云知声信息技术有限公司
  • 哦啦语音

但是,我们是在ARM Cortex-A7单核上面跑,平台为ARM Linux,而且我们不准备跑python,而是使用C/C++, python脚本写代码会很快,但是效率较低,在这里可能不那么合适。
同时,考虑到我们需要从BlueZ那边获取音频,且音频数据量不小,为了有更好的体验,所以用C/C++会较好。


国内提到语音识别,那么大家会很可能马上想打的是科大讯飞,但是科大讯飞最新的Linux SDK库,里面有各prebuilt shared library,这个shared library只提供了x86和x64的版本,无法在ARM Cortex-A7平台使用。当然,我们也可以使用旧版本泄漏出来的,大家都用在树莓派上面的版本,但是毕竟现在官方不再释放出来,我们就选择其他的好了。

稍微对比了一下,决定选用百度的语音识别。
百度语音号称基础服务永久免费,且支持全平台的API:

使用百度SDK
我们直接创建一个应用

选择和现在SDK



我们查看一下依赖的头文件和库



下面是库文件,这些库文件我们无法使用,需要编译arm版本的


编译libcrypto-cpp
扫了一眼,我们需要自己来写recipe的只有libcrypto-cpp,即最后一个。其他的包在Yocto中直接就有,编译就可以了。
而libcrypto-cpp在github上面可以找到一个:

这个recipe需要更改一下,就是install中的ln,同时也需要将版本改成更高的版本。
然后直接bitbake编译即可:

得到的lib库如下:

编译百度sdk例子
编译完所有的依赖库后,直接就用devshell来编译:

注意里面我们需要使用$CXX,而不是arm-poky-gnueabi-g++, 这个在我以前的Yocto Tips专栏(https://blog.csdn.net/column/details/yocto.html)有提及。

然后接下来我们将在后面的章节中测试,而这需要我们准备好蓝牙语音遥控器,因此我们将需要先说明一下遥控器。下次继续。

Leave a Reply

Your email address will not be published. Required fields are marked *