博舍

ROS机器人语音模块 怎么唤醒机器人语音

ROS机器人语音模块

ROS机器人语音模块文章目录ROS机器人语音模块零乘骐骥以驰骋兮,来吾道夫先路壹路漫漫其修远兮,吾将上下而求索贰苟余情其信姱以练要兮,长顑颔亦何伤叁不吾知其亦已兮,苟余情其信芳肆虽体解吾犹未变兮,岂余心之可惩末亦余心之所善兮,虽九死其犹未悔近期我参加了第十七届全国大学生智能汽车竞赛讯飞-家庭服务机器人挑战赛,目前我们队已经完成了场地搭建、环境配置,各传感器的功能也已验证完毕,接下来就是视觉代码编写以及ROS相关功能实现,其中就包括机器人语音功能,另外,互联网+比赛的机器人也需要实现语音功能。因此,实现ROS机器人语音功能的任务就落在了我的肩上。

目前,我找到了语音模块相关文档”环形六麦克风阵列开发者文档“,该文档用于描述科大讯飞环形六麦克风阵列的使用方法,覆盖语音唤醒、声源定位、语音获取、语音识别等应用的实现方式。废话不多说,直接开干咯!

零乘骐骥以驰骋兮,来吾道夫先路

麦克风阵列简介:

麦克风阵列是由一定数目的声学传感器(一般为麦克风)组成,对声场的空间特性进行采样并处理的系统。其主要作用有声源定位,抑制背景噪声、干扰、混响、回声,信号提取与分离。其中,声源定位是指利用麦克风阵列计算声源阵列的角度和距离,基于TDOA(TimeDifferenceOfArrival,到达时间差)实现对目标声源的跟踪;信号的提取与分离是指在期望方向上有效地形成一个波束,仅拾取波束内的信号,从而达到同时提取声源和抑制噪声的目的。

麦克风的一般使用流程:①麦克风启动并进入工作状态②设置麦克风的主麦方向,可唤醒或手动设置③获取降噪音频送入识别引擎进行识别和处理

【注:在麦克风阵列中,一般指定一个主麦来实现指定方向声音加强,其他方向抑制的目的,且降噪音频的获取也属于该主麦方向。若未主动设置主麦,主麦方向随机,则获取到的降噪音频不一定基于说话方向,此时生成的降噪音频可能不是最优的】

壹路漫漫其修远兮,吾将上下而求索

Linux-SDK:

本次智能车比赛所用麦克风阵列板载系统为Linux,用户可以使用任一搭载Linux系统的主机进行通信,主机与麦克风阵列之间的通信方式为基于USB的自定义通信协议。基于这些协议,用户可以在主机端进行诸如麦克风板开机、获取音频、设置主麦方向、获取唤醒角度等操作。为便于使用,本次比赛所用麦克风阵列配备SDK,主要对一些协议进行了API封装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBRPthll-1652716821228)(https://gitlab.com/Muscularmonk/project_01/uploads/aa51e6b68a79d573dab694dcb9a8f353/2.png)]

将sdk拷贝到系统任一目录,切换到该目录,可以看到sdk-vvui以及ros中对应的功能包集vvui_ros-master。初次使用且未配置本麦克风的udev规则,则先完成如下操作:(注:xf_mic.rules位于根目录)sudocpxf_mic.rules/etc/udev/rules.d#①sudoserviceudevrestart#②重启udev服务#③重启设备或插拔麦克风设备

该SDK文件中config存放配置文件,其中call.bnf是用户自定义的离线命令词语法文件,可根据场景进行更改,且需要根据bnf语法规则来定义关键语料,需要先构建语法,再指定使用的语法

SDK集成方式:

首先进入主机(搭载linux系统的PC或ARM板),将SDK拷贝到自定义的目录中,切换到该目录,执行以下命令,

tarxvfvvui.tar.gzsudoapt-getinstalllibasound2-dev#安装必要的声卡库sudoapt-getinstallsox#安装必要的音频播放库sudoapt-getinstallmplayer#安装必要的音频播放库#将麦克风阵列通过USB口插到主机上,然后打开终端,执行以下命令lsusb#查看是否检测到设备,若检测到VID:PID为10d6:b003的设备,则读取成功贰苟余情其信姱以练要兮,长顑颔亦何伤

基础功能测试:

动态库配置:cd./vvui/lib

若主机是X64操作系统,则执行:

cdx64&&sudocplib*/usr/lib

若主机是arm64操作系统,则执行:

cdarm64&&sudocplib*/usr/lib

若主机是arm32操作系统,则执行:

cdarm32&&sudocplib*/usr/lib生成可执行文件:cdvvui/sample/mic_demo_sample

若主机是X64操作系统,则执行:

sh./x64bit_make.sh

若主机是arm64操作系统,则执行:

sh./arm64_make.sh

若主机是arm32操作系统,则执行:

sh./arm32_make.sh测试:cd../../binsudo./mic_demo_sample

若运行完成,会提示”成功打开麦克风设备“,后面附有1-11命令

【注:由于时间和篇幅问题,离线命令词识别案例和在线人机交互案例不在此处记录,有需要的uu可以下载相关文档,自行查看】

叁不吾知其亦已兮,苟余情其信芳

麦克风相关ROS接口使用步骤:

拷贝与编译:

将vvui_ros-master包放到任一ROS工作空间的src目录下,根据运行平台修改功能包的CmakeLists.txt文件,地址为/工作空间名/src/vvui_ros-master,修改内容如下,若为NvidiaJetson平台,则修改为lib/arm64

link_directories(lix/x64)

然后切换到该工作空间,直接catkin_make,编译完成后,执行以下命令使工作空间生效:

echo"source~/工作空间名/devel/setup.bash">>~/.bashrcsource~/.bashrc

最后关闭所有终端

udevrules检查:sudoserviceudevrestart#重启udev服务

最后再插拔麦克风即可

肆虽体解吾犹未变兮,岂余心之可惩

首先在[讯飞开放平台](讯飞开放平台-以语音交互为核心的人工智能开放平台(xfyun.cn))注册账号

然后点击右上角“控制台”

进入控制台后,如果是第一次使用,则控制台是空的,点击创建新应用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-shBspENP-1652716821230)(https://gitlab.com/Muscularmonk/project_01/uploads/02b0e8f91058eb7ca45a1142ab87b5fb/5.png)]

提交后可以看到用户应用列表,选择刚创建的应用,进入应用配置界面。接着就可以下载sdk玩了。

【注:由于时间和篇幅问题,离线命令词识别和集成AIUI不在此处记录,有需要的uu可以下载相关文档,自行查看】

末亦余心之所善兮,虽九死其犹未悔常见错误纠错与解决方法找不到麦克风设备系统未检测到麦克风启动后出现报红或segmentfault字样检查是否配置麦克风udev规则启动后出现libcjson.so.1不存在需要安装cjson,且将/usr/local/lib中的libcjson.so.1移动到/usr/lib下23300或bnf_recognise_error离线命令词识别时bnf语法有误,检查标点符号、槽定义等是否有误10407或unfit_appid_and_lib_errorappid与动态库libmsc.so不匹配10102或build_grammer_error离线命令词识别过程中,common.jet资源文件路径有误,建议修改为绝对路径11210appid与离线资源common.jet不匹配11201在线业务超次数或离线资源装机量超限文件无法打开确认音频文件是否有读写权限启动例程时一直显示麦克风未启动检查是否有开启录音后未停止录音的操作。若有,则需手动停止录音或断开与麦克风的连接

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

上一篇

下一篇