Ros结合科大讯飞linuxSDK进行离线语唤醒、命令识别

Ros结合科大讯飞linuxSDK进行离线语唤醒、命令识别

工程:多智能车室内ROS编队,现想加入语音功能,选择科大讯飞。
参考&科大讯飞 星火 教程#xff1a;
1.https://blog.csdn.net/u0/article/details/
2.https://www.aidaxue.com/course/courseDetail?id=524
3.https://www.xfyun.cn/doc/asr/commandWord/Linux-SDK.html#_1%E3%80%81%E7%AE%80%E4%BB%8B
4.https://www.ncnynl.com/archives/201905/3028.html

2021年6月份
由于工程中需要用到多种语音功能,其中在线语音听写等多个功能官方文档都如下信息:
Ros结合科大讯飞linuxSDK进行离线语唤醒、命令识别
但是csdn上还是有人用树莓派结合科大讯飞做语音的,如:
1.https://blog.csdn.net/lhh31/article/details/
但是当年讯飞的sdk的libs文件夹下除了x64和x86外是有个RaspberryPi文件夹提供树莓派动态库的,现在没有了
2.https://blog.csdn.net/weixin_/article/details/
上面这位用树莓派4b实现了科大讯飞语音功能,但我emmmmm…反正就没搞成。所以放弃,反正我用的ros,把语音功能布置在虚拟机上,处理完语音信号后再把命令识别结果发送给树莓派小车也是可以的。

系统:ubuntu18.04(虚拟机)
下载SDK,编译,运行示例,请参考:
1.https://www.xfyun.cn/
2.https://www.aidaxue.com/course/search?search=%E8%AF%AD%E9%9F%B3
3.https://blog.csdn.net/weixin_/article/details/
4.https://www.guyuehome.com/27841
主要推荐看1.官网文档和2.视频教程入个门哈,先把自己要用到的功能示例都跑一遍吧。

1.BNF语法文件解读
参考:https://www.aidaxue.com/course/courseDetail?id=524
在这里插入图片描述
callStrat中:
[ ] 表示该槽可说可不说,不说的话指令一样生效一样,
| 表示“或者”
如第三个callStrat定义说成“张海洋打电话”“打电话张海洋”都可以
一个BNF文件示例:


引用自:https://blog.csdn.net/u0/article/details/,仅供参考。

https://blog.csdn.net/u0/article/details/
上面这篇博客里说了官方samples的不足,实现的功能正是我想要的唤醒和离线命令词条识别,目前在学习中,由于每个人的sdk的库都与自己的appid绑定,这位博主给的代码包中有不少内容需要用自己的sdk去替换,但是又遇到不少问题,后续再整理:
1.github上ros分支,readme文档说需要替换res目录,但是科大讯飞的sdk没有相应目录,不知怎么办。

1.先设置语音唤醒词
在这里插入图片描述
2.下载组合SDK包,由于后续会拓展其他功能,选择了五个功能
在这里插入图片描述
组合SDK下载界面:https://www.xfyun.cn/sdk/dispatcher
解压后:
在这里插入图片描述
3.下载我的功能包:
链接:https://pan.baidu.com/s/1SF-DEHLv-r5ZqIUnxEkc7A
提取码:1hae
声明:代码是在下面这位“白夜行的狼”博主基础上修改并且加入ros当中,要理解工作原理请参考这位博主的博客,感谢这位博主的分享,代码仅供学习参考,如有侵权请联系删除。
https://blog.csdn.net/u0/article/details/
代码是初期的示例代码,不少文件是从上面这位博主那里继承的,作为ros控制节点来说并不完善,但可以运行,再次申明仅供参考。

4.资源替换等操作
Readme:
Blog:https://blog.csdn.net/u0/article/details/
Tihs package use alsa to record voice and wait for awake, and then recognize order.
My code is refer to iflytek’s asr_record_sample and awaken_sample. For more infomation, please check through iflytek’s reference.

运行环境:虚拟机ubuntu18.04
以上是另一个博主的readme内容,需要注意的是除了修改appid、路径之外,还需要去替换对应于你自己appid的资源,包括:
a.你下载的sdk中的libs文件夹替换掉本功能包中libs
b.根据系统位数选择libs中的对应的库文件如libmsc.lib、libw_ivw.lib拷贝到/usr/lib/路径下:进入sdk库文件夹libs/x64/或者libs/x86/下
sudo cp libmsc.lib /usr/lib/libmsc.lib、
sudo cp libw_ivw.lib /usr/lib/libw_ivw.lib
c.备份保留我的工程中res文件夹
d.用自己的SDK当中res文件夹替换我功能包中res文件夹。特别注意,我下载的组合SDK中res文件夹位于bin/msc/res/处,内有多个.jet文件,将sdk当中此res文件夹复制替换掉我的包中的res文件夹。
e.将原本的res/asr/call.bnf文件文件复制到你当前的更改过后的res/asr/路径下。
f.ros编译执行。
g.此包中进行消息处理发布ros话题等代码自己根据需求添加即可。

5.运行结果:
在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:Ai探索者,转载请注明出处:https://javaforall.net/280839.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月14日 下午2:37
下一篇 2026年3月14日 下午2:37


相关推荐

关注全栈程序员社区公众号