ROS机器人语音模块

文章目录

  • ROS机器人语音模块
    • 零 乘骐骥以驰骋兮,来吾道夫先路
    • 壹 路漫漫其修远兮,吾将上下而求索
    • 贰 苟余情其信姱以练要兮,长顑颔亦何伤
    • 叁 不吾知其亦已兮,苟余情其信芳
    • 肆 虽体解吾犹未变兮,岂余心之可惩
    • 末 亦余心之所善兮,虽九死其犹未悔

近期我参加了第十七届全国大学生智能汽车竞赛讯飞-家庭服务机器人挑战赛,目前我们队已经完成了场地搭建、环境配置,各传感器的功能也已验证完毕,接下来就是视觉代码编写以及ROS相关功能实现,其中就包括机器人语音功能,另外,互联网+比赛的机器人也需要实现语音功能。因此,实现ROS机器人语音功能的任务就落在了我的肩上。

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

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

麦克风阵列简介:

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

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

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

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

Linux-SDK:

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

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

  1. 将sdk拷贝到系统任一目录,切换到该目录,可以看到 sdk-vvui 以及 ros 中对应的功能包集vvui_ros-master。初次使用且未配置本麦克风的udev规则,则先完成如下操作:(注:xf_mic.rules位于根目录)
sudo cp xf_mic.rules /etc/udev/rules.d # ①
sudo service udev restart              # ②重启udev服务# ③重启设备或插拔麦克风设备
  1. 该SDK文件中 config 存放配置文件,其中 call.bnf 是用户自定义的离线命令词语法文件,可根据场景进行更改,且需要根据 bnf 语法规则来定义关键语料,需要先构建语法,再指定使用的语法

  2. SDK集成方式:

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

tar xvf vvui.tar.gz
sudo apt-get install libasound2-dev # 安装必要的声卡库
sudo apt-get install sox            # 安装必要的音频播放库
sudo apt-get install mplayer        # 安装必要的音频播放库
# 将麦克风阵列通过USB口插到主机上,然后打开终端,执行以下命令
lsusb # 查看是否检测到设备,若检测到VID:PID为10d6:b003的设备,则读取成功

贰 苟余情其信姱以练要兮,长顑颔亦何伤

基础功能测试:

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

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

cd x64 && sudo cp lib* /usr/lib

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

cd arm64 && sudo cp lib* /usr/lib

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

cd arm32 && sudo cp lib* /usr/lib
  1. 生成可执行文件:
cd vvui/sample/mic_demo_sample

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

sh ./x64bit_make.sh

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

sh ./arm64_make.sh

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

sh ./arm32_make.sh
  1. 测试:
cd ../../bin
sudo ./mic_demo_sample

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

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

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

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

  1. 拷贝与编译:

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

link_directories(lix/x64
)

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

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

最后关闭所有终端

  1. udev rules 检查:
sudo service udev restart # 重启udev服务

最后再插拔麦克风即可

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

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

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

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

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

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

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

末 亦余心之所善兮,虽九死其犹未悔

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

ROS机器人语音模块相关推荐

  1. ROS机器人RIKIBOT硬件介绍

    2.1 ROS机器人RIKIBOT硬件介绍 2.1.1硬件框架 RIKIBOT ROS机器人硬件采用Jetson nano和STM32F1驱动板组成双系统通信框架,具体组成参考下图: 2.1.2 主控 ...

  2. ROS 机器人操作系统进阶实战

    ROS(Robot Operating System) 是一个开源的机器人操作系统,目的是提供开发平台.工具及生态给开发人员,可以让开发人员快速开发.本课程通过精心设计的案例,分析技术要点.理解运行原 ...

  3. 设置ROS机器人避免行走到地图未知区域

    设置ROS机器人避免行走到地图未知区域 1. 设置allow_unknown 2. 设置move_base 3. 设置costmap 1. 设置allow_unknown 在 move_base 的配 ...

  4. ROS中阶笔记(十):ROS机器人综合应用

    ROS中阶笔记(十):ROS机器人综合应用 文章目录 1 ROS机器人综合应用 1.1 PR2 1.2 PR2实践 1.3 TurtleBot 1.3.1 TurtleBot2实践 1.3.2 Tur ...

  5. APP 控制 ROS 机器人 群组

    ROS 机器人控制APP 最近利用网上各种开源的资源整合出了一个ROS机器人控制APP,如大家有兴趣可以到我的个人网站去下载http://www.diegorobot.com/wp/?page_id= ...

  6. ros机器人写字,svg图片绘制,二三阶贝塞尔计算公式转代码

    ros机器人写字,svg图片绘制,二三阶贝塞尔 # ------------------------- 绘制二阶贝塞尔 -------------------------#def QuadraticB ...

  7. ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料

    ROSCon 2016视频和幻灯片发布 By Tully Foote on 十月19,2016 7:28 AM 全部PPT下载地址:http://pan.baidu.com/s/1gf2sn2F RO ...

  8. ROS机器人开机自启动设置

    ROS机器人开机自启动设置 亲测可行!!! 设备以及系统 TX2.ubuntu16.04+ROS Kinetic,其他也可参考,基本没啥区别 源由 调试过ROS机器人的同学都知道,反复调试.反复启动l ...

  9. ROS机器人入门课程《ROS理论与实践》零基础教程(推荐课程)

    ROS的入门,对于纯小白的我来说很是痛苦,尤其是听完古月老师的21讲之后,更是浇灭了学习的兴趣,当时还在考虑要不要他的买课,还是算了,反正也听不懂,,,!!! 在一番挣扎之后,发现了赵虚左老师的课程, ...

  10. 冰达ROS机器人使用-实现slam建模、自主导航、避障

    冰达ROS机器人使用-实现slam建模.自主导航.避障 一.使用前准备工作 1.在windows中下载好远程连接工具:xshell.puty1 2.机器人有两种模式: 模式 说明 AP模式 机器人自己 ...

最新文章

  1. python绘制散点图-Python:matplotlib绘制散点图
  2. Linux centos7 下 svn 服务器搭建
  3. 彻底搞清楚浏览器渲染过程
  4. 数据埋点太难!知乎的做法有何可借鉴之处?
  5. SkyDrive Explorer 把微软25GB网络硬盘搬进“我的电脑”
  6. [转载] Python: fnmatch模块 (Unix B-Shell通配符的文件名匹配)
  7. Clojure 学习入门(13)- binding
  8. access建立两个字段唯一索引_面试官:谈谈你对mysql索引的认识?
  9. 用于小儿肺炎检测的无代码AI
  10. 黑色的php编辑器,五款常用的免费php编辑器推荐
  11. 转:战略思维的五个要素,你都具备了吗?
  12. SQL——汇总分组排序
  13. 为什么手机网速太慢_为什么苹果手机的网速变慢了_苹果手机上网速度慢的解决方法-系统城...
  14. Qt-利用fmod库显示声音波形
  15. A股上市公司财报披露时间
  16. 手把手教你看懂电脑硬件测试软件CPU-Z(二)
  17. Linux僵尸进程分析清除
  18. 茶云导航网站源码v1.2 PHP带后台管理
  19. Drupal9笔记之block权限踩坑
  20. NXP(imx8qxp)上android11的EG25-G(4G)模块调试记录

热门文章

  1. (XWZ)的Python学习笔记Ⅱ------面向对象编程
  2. 小程序input textarea 禁止粘贴实现
  3. 软件工程实训有必要吗_软件工程专业有没有必要考研?
  4. javascript创建表格
  5. mysql var和varp的区别_var方差(var和方差的区别)
  6. windows7下制作苹果U盘启动盘
  7. 单片机实验计数显示器C语言代码,单片机实验1-计数显示器.doc
  8. Android Studio连接MySQL:问题解决:虚拟机无法连接本地SQL,coon总为空
  9. 关于惠普打印机可以打印但是无法扫描的问题
  10. (最详细)小米手机4c的USB调试模式在哪里开启的教程