目录
一、简介
二、环境版本
三、学习目标
四、知识储备
五、任务实施
六、任务拓展
七、课堂小结
八、课后练习
一、简介
大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人ROS开发),在前面课程中,我们学习了语音模块的ROS驱动使用,本节课讲解如何编程实现机械臂语音交互控制。
机械臂语音交互控制
二、环境版本
主机系统版本:Windwos10 64位处理器型号:Intel-i7虚拟机版本:VMware Workstation 16 Pro虚拟机系统:Ubuntu 18.04.6 LTSROS版本:Melodic三、学习目标
四、知识储备
首先学习常见语音术语。
(1)音素(phone | phonetics)
音素是根据语音的自然属性划分出来的最小语音单位,依据音节里的发音动作来分析,一个动作构成一个音素。音素分为元音与辅音两大类。如汉语音节啊(ā)只有一个音素,爱(ài)有两个音素,代(dài)有三个音素等。
(2)声学模型
声学模型教会机器“哪个字词发什么音”。
是将声学和发音学(phonetics)的知识进行整合,以特征提取部分生成的特征作为输入,并为可变长特征序列生成声学模型分数。
(3)语言模型
声学模型教会机器“什么样的文字组合是合理的、更常见的”,语言模型通过从训练语料(通常是文本形式)学习词之间的相互关系,来估计假设词序列的可能性,又叫语言模型分数。
(4)语音识别(ASR:Automatic Speech Recognition)将声音转换成文本。
(5)语音合成(TTS:text-to-speech)
将文字转换成声音。
(6)语义理解(NLU:NaturalLanguageUnderstanding)
识别说话人的意图。
2.自然语言处理(NLP)
就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。
3.自然语言处理的核心任务及步骤
(1)自然语言理解 – NLU
自然语言理解就是希望机器像人一样,具备正常人的语言理解能力。
(2)自然语言生成 – NLG
自然语言生成是为了跨越人类和机器之间的沟通鸿沟,将非语言格式的数据转换成人类可以理解的语言格式,如文章、报告等。
五、任务实施
本课程通过给麦克风阵列语音模块下达语音输入指令后进行语音识别,识别成功后通过自然语言理解触发对应的机械臂控制指令,通过MoveIt!框架控制机械臂运动。
本课程使用百度的在线语音API实现语音识别和语音合成。
1.创建百度语音应用
申请百度语音识别接入的开发者账号,目的是为了获取App ID,API Key,Secret Key。
2.配置语音模块ROS功能包
本课程使用《麦克风阵列语音模块ROS驱动》微课ROS功能包。
打开终端执行如下命令修改百度语音API鉴权信息:
修改以下三行,替换为上一步申请的鉴权信息后保存退出。
3.编译机械臂语音交互功能包
4.启动机械臂RViz和Gazebo仿真节点
5.语音交互控制
(1)启动百度语音交互功能包节点
将麦克风阵列语音模块通过USB数据线与电脑Ubuntu系统环境相连接,确保能正常使用。
在终端界面按下Ctrl+Shift+T新开一Tab页面,执行如下命令启动:
等待一段时间初始化语音设备,当终端打印如下信息后则说明百度语音交互ROS节点启动完毕:
(2)启动机械臂语音交互ROS节点程序
在终端界面按下Ctrl+Shift+T新开一Tab页面,执行如下命令启动:
启动完成后打印如下信息,并通过语音模块的喇叭播放如下提示内容。
(3)语音交互控制
接下来按照提示给语音模块下达对应指令,当ROS节点程序识别到指令后在终端打印提示信息并执行,当执行完成后打印结果并通过语音模块喇叭播放执行结果。
六、任务拓展
通过提供的麦克风阵列语音模块ROS驱动包编写ROS应用实现声源定位与机械臂跟随功能。
七、课堂小结
1.语音模块ROS节点使用百度提供的在线语音识别与合成服务,用户需自行注册获取免费试用资源,并创建语音应用获取授权密钥信息。
2.为提高程序意图理解的准确率,可以增加相似语音的关键词或者使用开源语义理解引擎。
八、课后练习
使用百度语音服务编写ROS程序实现机械臂语音交互控制。
如果觉得《遨博协作机器人ROS开发 - 机械臂语音交互控制》对你有帮助,请点赞、收藏,并留下你的观点哦!