IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> ROS机器人语音模块 -> 正文阅读

[人工智能]ROS机器人语音模块

ROS机器人语音模块


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

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

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

麦克风阵列简介:

1

  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))注册账号

3

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

4

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

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

6

提交后可以看到用户应用列表,选择刚创建的应用,进入应用配置界面。接着就可以下载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_errorappid与动态库 libmsc.so 不匹配
10102或build_grammer_error离线命令词识别过程中,common.jet 资源文件路径有误,建议修改为绝对路径
11210appid与离线资源 common.jet 不匹配
11201在线业务超次数或离线资源装机量超限
文件无法打开确认音频文件是否有读写权限
启动例程时一直显示麦克风未启动检查是否有开启录音后未停止录音的操作。若有,则需手动停止录音或断开与麦克风的连接
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 11:56:10  更:2022-05-19 11:57:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:24:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码