《鸿蒙机器人编程》7-实践课 - 语音交互、识别与合成-实训指南_第1页
《鸿蒙机器人编程》7-实践课 - 语音交互、识别与合成-实训指南_第2页
《鸿蒙机器人编程》7-实践课 - 语音交互、识别与合成-实训指南_第3页
《鸿蒙机器人编程》7-实践课 - 语音交互、识别与合成-实训指南_第4页
《鸿蒙机器人编程》7-实践课 - 语音交互、识别与合成-实训指南_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE17实践课-语音交互、识别与合成课程内容: 语音是人类日常交流最主要的方式(没有之一),也是人机交互最自然的方式之一。语音识别(ASR)和语音合成(TTS)技术的出现,让人机接口更加自然,但由于技术(识别率不够高)和人们习惯上的原因,其普及应用经历了很长时间,由于近年人工智能与云计算的技术兴起,ASR这项技术正在如火似涂地发展、普及。语音识别(ASR)和语音合成(TTS)技术的出现,让人机接口更加自然,但由于技术(识别率不够高)和人们习惯上的原因,其普及应用经历了很长时间,由于近年人工智能与云计算的技术兴起,ASR这项技术正在如火似涂地发展、普及。本节主要对ASR于TTS进行介学习。教学目标:掌握ASR与TTS基本概念掌握离线语音识别及在线语音识别掌握离线语音合成及在线语音合成掌握语音控制Spark机器人运动一.ASR与TTS基本概念ASR,英文的全称是AutomatedSpeechRecognition,即自动语音识别技术。语音识别系统的性能大致取决于以下4类因素:1.识别词汇表的大小和语音的复杂性;2.语音信号的质量;3.单个说话人还是多说话人;4.硬件TTS,英文全称是TextToSpeech,即文字语音转换,又称为计算机语音合成。语音合成系统包括三个主要的组成部分:文本分析模块、韵律生成模块和声学模块。TTS技术已经相对成熟。二.语音识别1.Pocketsphinx库介绍spark的离线语音识别使用的是pocketsphinx,但其只支持英文,若想要支持中文还得选本土化的语音引擎。本土化的语音引擎最近比较火热的有迅飞、百度、阿里、云知声等。ROS中自带的语音合成的功能包是sound_play。下面分别介绍pocketsphinx功能包、sound_play功能包。Sphinx-2采用半连续隐含马尔可夫模型(SCHMM)建模,采用的技术相对落后,使得识别精度要低于其它的译码器。PocketSphinx是一个计算量和体积都很小的嵌入式语音识别引擎。在Sphinx-2的基础上针对嵌入式系统的需求修改、优化而来,是第一个开源面向嵌入式的中等词汇量连续语音识别项目。识别精度和Sphinx-2差不多。Sphinx-3是CMU高水平的大词汇量语音识别系统,采用连续隐含马尔可夫模型CHMM建模。支持多种模式操作,高精度模式扁平译码器,由Sphinx3的最初版本优化而来;快速搜索模式树译码器。目前将这两种译码器融合在一起使用。Sphinx-4是由Java语言编写的大词汇量语音识别系统,采用连续的隐含马尔可夫模型建模,和以前的版本相比,它在模块化、灵活性和算法方面做了改进,采用新的搜索策略,支持各种不同的语法和语言模型、听觉模型和特征流,创新的算法允许多种信息源合并成一种更符合实际语义的优雅的知识规则。由于完全采用JAVA语言开发,具有高度的可移植性,允许多线程技术和高度灵活的多线程接口。ROS功能包中使用的是PocketSphinx。PocketSphinx语音识别是离线识别方式,将一些常用的词汇放到一个文件中,作为识别的文本库,然后分段识别语音信号,最后在库中搜索对应的文本信息。2.安装PocketSphinx安装自带主机的spark本身已经安装好pocketsphinx库,如果是自己的笔记本,请从\h/NXROBO/spark.git下载源码,并运行源码里的onekey.sh,按照提示安装spark依赖,当然你也可以选择如下步骤手动安装:安装系统依赖库:$Sudoaptinstall-yswigportaudio19-dev更新pip:$sudoeasy_install-Upip使用pip安装相应的库:$sudopip3installpocketsphinxwebrtcvadpyaudio3.麦克风测试首先,插入你的麦克风设备,然后在系统设置里测试麦克风是否有语音输入。如果使用的是spark自带的小主机,可以使用NUC提供的阵列麦克风。尝试对机器人说话,看inputlevel是否有变化。如果识效果不好,可以通过调节Volume来优化。基于PocketSphinx的语音识别程序local_ars.py(路径:spark_noetic/src/spark_app/spark_voice/local_ars.py)4.进入spark_noetic工作空间并启动程序:$cdspark_noetic$roscore&rosrunspark_voicelocal_asr.py现在说几条短语,"turnleft","forward","stop"。我们也可以直接看ROS最后发布的结果消息:rostopicecho/voice/stt5.词汇库这个语音识别是一种离线识别的方法,将一些常用的词汇放到一个文件中,作为识别的文本库,然后分段识别语音信号,最后在库中搜索对应的文本信息。如果想看语音识别库中有哪些文本信息,可以通过下面的指令进行查询:roscdspark_voice/scripts/lib/pocketsphinx-data/morecmd.txt6.训练自己的声学模型一般这种离线语音识别效果不太好,我们需要训练自己的声学模型提高识别准确度,同时也可以自己向语音库中添加其他的文本识别信息,由于篇幅的原因,这里不作过多的介绍,大家可以访问\hhttps://cmusphinx.github.io/wiki/tutorial/进行学习。7.在线语音识别更通用的做法是选择在线语音识别,这样可以大大提高语音识别的准确率。注意使用此功能需要互联网支持。一般语音识别服务的提供商都有非常完善的各种编程语言的SDK调用说明,支持各种程序设计语言。下面以百度的在线语音识别baidu_asr.py(路径:spark_noetic/src/spark_app/spark_voice/baidu_ars.py)为例,给大家简答的介绍一下:8.语音控制语音控制的流程一般是由语音识别节点(比如baidu_asr.py)识别语音内容,通过topic发送到voice/stt,然后编写一个机器人控制节点接收这个消息进行相应的处理,在spark中,这个节点为voice_nav.py,大家也可更改这个代码增加更多的控制指令:voice_nav.py在接收到语音识别结果后,会解析结果并转换成标准的Twist消息,并通过topic发送到cmd_vel,机器人底盘或者仿真程序通过监听这个topic实现移动控制:$roslaunchspark_voicebaidu_nav.launchcamera_type_tel:=d435或者:$roslaunchspark_voicevoice_nav.launchcamera_type_tel:=d435对机器人说“前进”或者“forward”,即可看到机器人开始移动。9.语音合成现在机器人已经可以按照我们说的话行动了,要是机器人可以和我们对话就更好了。ROS中已经集成了这样的包,下面就来尝试一下。首先安装相应的包sudoaptinstallros-noetic-sound-play语音测试及说话:roslaunchsound_playtest.launchrosrunsound_playsay.py"howareyou"有没有听见声音?ROS通过识别我们输入的文本,让机器人读了出来。发出这个声音的人叫做kal_diphone,如果不喜欢,我们也可以换一个人来读:sudoaptinstallfestvox-donrosrunsound_playsay.py"Welcometothesparkworkshop"voice_don_diphone以下命令列出所有目前在您的系统上安装的所有的英语声音:ls/usr/share/festival/voices/english以下命令列出所有可用的声音列表,运行以下命令:sudoapt-cachesearch--names-onlyfestvox-*因为我们的spark是没有安装音箱的,大家可以外接音箱或者耳机的方式来实现这个功能。同时更多的用法请参考\h/sound_play。如外接音响或耳机后,spark无声音,可参考以下方式:$sudoaptinstallpavucontrol$pavucontrol切换到“配置”选项卡,选择“AnalogStereoDuplex”切换到输出设备,选择headphones10.小结主

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论