SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术
摘要
这一章将进入机器人语音交互的学习,让机器人能跟人进行语音对话交流。这是一件很酷的事情,本章将涉及到语音识别、语音合成、自然语言处理方面的知识。本章内容:
1.语音交互相关技术
要机器人能完成跟人对话,涉及到语音识别、语音合成、自然语言处理等技术。简单点说,语音识别就是将人的声音转换成文字便于机器人计算与理解;语音合成就是将机器人要说的文字内容转换为声音;自然语言处理相当于机器人的大脑,负责回答提问。整个语音交互的过程,如图1。

(图1)语音交互过程
1.1.语音识别
语音识别技术,也被称为自动语音识别Automatic Speech Recognition(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列,如图2。

(图2)语音识别
语音识别技术所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。语音识别技术的最重大突破是隐马尔科夫模型Hidden Markov Model的应用。从Baum提出相关数学推理,经过Labiner等人的研究,卡内基梅隆大学的李开复最终实现了第一个基于隐马尔科夫模型的非特定人大词汇量连续语音识别系统Sphinx。此后严格来说语音识别技术并没有脱离HMM框架。当然神经网络方法是一种新的语音识别方法,人工神经网络本质上是一个自适应非线性动力学系统,模拟了人类神经活动的原理,具有自适应性、并行性、鲁棒性、容错性和学习特性,其强的分类能力和输入-输出映射能力在语音识别中都很有吸引力。但由于存在训练、识别时间太长的缺点,目前仍处于实验探索阶段。
1.2.语音合成
语音合成是语音识别的逆过程,也称为文字转语音(TTS),它是将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的汉语或其他口语输出的技术。如图3。

(图3)语音合成
TTS过程包括这些步骤:语言处理,在文语转换系统中起着重要的作用,主要模拟人对自然语言的理解过程,文本规整、词的切分、语法分析和语义分析,使计算机对输入的文本能完全理解,并给出后两部分所需要的各种发音提示;韵律处理,为合成语音规划出音段特征,如音高、音长和音强等,使合成语音能正确表达语意,听起来更加自然;声学处理,根据前两部分处理结果的要求输出语音,即合成语音。
1.3.自然语言处理
有了语音识别和语音合成,要让机器人能智能的对答如流的和人交谈,还需要赋予机器人以灵魂。自然语言处理技术(NLP)就是来赋予聊天机器人内在灵魂的。
NLP是计算机领域与人工智能领域中的一个重要分支。由于数据的大幅度增强、计算力的大幅度提升、深度学习实现端到端的训练,深度学习引领人工智能进入有一个高潮。人们也逐渐开始将如日中天的深度学习方法引入到NLP领域,在机器翻译、问答系统、自动摘要等方向取得成功。经过互联网的发展,很多应用积累了足够多的数据可以用于学习。当数据量增大之后,以支持向量机(SVM)、条件随机场(CRF)为代表的传统浅层模型,由于模型过浅,无法对海量数据中的高维非线性映射做建模,所以不能带来性能的提升。然而,以CNN、RNN为代表的深度模型,可以随着模型复杂度的增大而增强,更好贴近数据的本质映射关系。一方面,深度学习的word2vec的出现,使得我们可以将词表示为更加低维的向量空间。另一方面,深度学习模型非常灵活,使得之前的很多任务,可以使用端到端的方式进行训练。

(图4)基于深度学习的自然语言处理过程
为了让大家更好的理解基于深度学习的自然语言处理过程,举一个比较通用的模型,如图4。问题句子通过Seq2Seq循环神经网络进行预处理和编码,然后进入答案搜索,接着通过DQN强化学习网络对问答策略进程学习。这样,随着时间的推移,问答系统回答问题的水平会越来越高,就达到了不断在线学习的目的了。
后记
------SLAM+语音机器人DIY系列【目录】快速导览------
第1章:Linux基础
第2章:ROS入门
第3章:感知与大脑
第4章:差分底盘设计
第5章:树莓派3开发环境搭建
第6章:SLAM建图与自主避障导航
2.google-cartographer机器人SLAM建图
第7章:语音交互与自然语言处理
第8章:高阶拓展
2.centos7下部署Django(nginx+uwsgi+django+python3)
----------------文章将持续更新,敬请关注-----------------
如果大家对博文的相关类容感兴趣,或有什么技术疑问,欢迎加入下面的《SLAM+语音机器人DIY》QQ技术交流群,一起讨论学习^_^

SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术的更多相关文章
- SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图
摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命.本章将围绕机器人SLAM建图.导航避障 ...
- SLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——1.安装系统ubuntu_mate_16.04
摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认识.接下来就正式进入机器人大脑(嵌入式主板:树莓派3)的开发.本章将从树莓派3的开发环境搭建入手,为后续ros开 ...
- SLAM+语音机器人DIY系列:(一)Linux基础——1.Linux简介
摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...
- SLAM+语音机器人DIY系列:(一)Linux基础——2.安装Linux发行版ubuntu系统
摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...
- SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作
摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...
- SLAM+语音机器人DIY系列:(二)ROS入门——1.ROS是什么
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- SLAM+语音机器人DIY系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- SLAM+语音机器人DIY系列:(二)ROS入门——4.如何编写ROS的第一个程序hello_world
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
随机推荐
- BZOJ_2662_[BeiJing wc2012]冻结_分层图最短路
BZOJ_2662_[BeiJing wc2012]冻结_分层图最短路 Description “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切, ...
- C/C++反三角函数使用注意
最近写的东西用到了数学库中的acos函数,但是代码在运行的时候有时候会出莫名其妙的错误,比如返回值是个特别大的数. 最后在debug 的时候发现acos返回的数据很奇怪,但是传入的参数明明没有问题,可 ...
- 文本离散表示(三):TF-IDF结合n-gram进行关键词提取和文本相似度分析
这是文本离散表示的第二篇实战文章,要做的是运用TF-IDF算法结合n-gram,求几篇文档的TF-IDF矩阵,然后提取出各篇文档的关键词,并计算各篇文档之间的余弦距离,分析其相似度. TF-IDF与n ...
- java到底是引用传递还是值传递?
今天我们来讲讲一个在学习中容易误解的问题,面试中也偶尔问到,java方法调用时到底是值传递还是引用传递? 首先,请大家来做一个判断题,下面的3个问题是否描述正确 1. java基本数据类型传递是值传递 ...
- 入门系列之在Ubuntu 16.04使用Buildbot建立持续集成系统
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由angel_郁发表于云+社区专栏 介绍 Buildbot是一个基于Python的持续集成系统,用于自动化软件构建,测试和发布过程. 在 ...
- Bootstrap3级联多选下拉框
<!DOCTYPE html> <html> <head> <title>Bootstrap3级联多选下拉框</title> <met ...
- 联发科Helio P90,MT6779VWB芯片处理器
联发科(p90)MT6779VWB芯片是一个集成了蓝牙.fm.wlan和gps模块的高度集成的基带平台,包括调制解调器和应用处理子系统.支持LTE/LTE-A和C2K智能手机应用程序.该芯片集成了两个 ...
- android---动画入门(一)
android 动画分为两类,View Animation(视图动画)和property Animation(属性动画),View Animation(视图动画)包含了Tween Animation和 ...
- 《SQL CookBook 》笔记-准备工作
目录 准备 1.建立员工表--EMP 2.建立部门表--DEPT 3.EMP表和DEPT表插入数据 4.建立透视表T1,并插入数据 5.建立透视表T10,并插入数据 第二章 shanzm 准备 1.建 ...
- elasticsearch常用命令备注
1.检查集群健康状态 curl 'localhost:9200/_cat/health?v' 2.检查节点健康状态 curl 'localhost:9200/_cat/nodes?v' 3.新增一条索 ...