SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术

Wesley13
• 阅读 613

摘要

这一章将进入机器人语音交互的学习,让机器人能跟人进行语音对话交流。这是一件很酷的事情,本章将涉及到语音识别、语音合成、自然语言处理方面的知识。本章内容:

1.语音交互相关技术

2.机器人语音交互实现

3.自然语言处理云计算引擎



1.语音交互相关技术

要机器人能完成跟人对话,涉及到语音识别、语音合成、自然语言处理等技术。简单点说,语音识别就是将人的声音转换成文字便于机器人计算与理解;语音合成就是将机器人要说的文字内容转换为声音;自然语言处理相当于机器人的大脑,负责回答提问。整个语音交互的过程,如图1。

SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术

(图1)语音交互过程

1.1.语音识别

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

SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术

(图2)语音识别

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

1.2.语音合成

语音合成是语音识别的逆过程,也称为文字转语音(TTS),它是将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的汉语或其他口语输出的技术。如图3。

SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术

(图3)语音合成

TTS过程包括这些步骤:语言处理,在文语转换系统中起着重要的作用,主要模拟人对自然语言的理解过程,文本规整、词的切分、语法分析和语义分析,使计算机对输入的文本能完全理解,并给出后两部分所需要的各种发音提示;韵律处理,为合成语音规划出音段特征,如音高、音长和音强等,使合成语音能正确表达语意,听起来更加自然;声学处理,根据前两部分处理结果的要求输出语音,即合成语音。

1.3.自然语言处理

有了语音识别和语音合成,要让机器人能智能的对答如流的和人交谈,还需要赋予机器人以灵魂。自然语言处理技术(NLP)就是来赋予聊天机器人内在灵魂的。

NLP是计算机领域与人工智能领域中的一个重要分支。由于数据的大幅度增强、计算力的大幅度提升、深度学习实现端到端的训练,深度学习引领人工智能进入有一个高潮。人们也逐渐开始将如日中天的深度学习方法引入到NLP领域,在机器翻译、问答系统、自动摘要等方向取得成功。经过互联网的发展,很多应用积累了足够多的数据可以用于学习。当数据量增大之后,以支持向量机(SVM)、条件随机场(CRF)为代表的传统浅层模型,由于模型过浅,无法对海量数据中的高维非线性映射做建模,所以不能带来性能的提升。然而,以CNN、RNN为代表的深度模型,可以随着模型复杂度的增大而增强,更好贴近数据的本质映射关系。一方面,深度学习的word2vec的出现,使得我们可以将词表示为更加低维的向量空间。另一方面,深度学习模型非常灵活,使得之前的很多任务,可以使用端到端的方式进行训练。

SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术

(图4)基于深度学习的自然语言处理过程

为了让大家更好的理解基于深度学习的自然语言处理过程,举一个比较通用的模型,如图4。问题句子通过Seq2Seq循环神经网络进行预处理和编码,然后进入答案搜索,接着通过DQN强化学习网络对问答策略进程学习。这样,随着时间的推移,问答系统回答问题的水平会越来越高,就达到了不断在线学习的目的了。

后记

------SLAM+语音机器人DIY系列【目录】快速导览------

第1章:Linux基础

1.Linux简介

2.安装Linux发行版ubuntu系统

3.Linux命令行基础操作

第2章:ROS入门

1.ROS是什么

2.ROS系统整体架构

3.在ubuntu16.04中安装ROS kinetic

4.如何编写ROS的第一个程序hello_world

5.编写简单的消息发布器和订阅器

6.编写简单的service和client

7.理解tf的原理

8.理解roslaunch在大型项目中的作用

9.熟练使用rviz

10.在实际机器人上运行ROS高级功能预览

第3章:感知与大脑

1.ydlidar-x4激光雷达

2.带自校准九轴数据融合IMU惯性传感器

3.轮式里程计与运动控制

4.音响麦克风与摄像头

5.机器人大脑嵌入式主板性能对比

6.做一个能走路和对话的机器人

第4章:差分底盘设计

1.stm32主控硬件设计

2.stm32主控软件设计

3.底盘通信协议

4.底盘ROS驱动开发

5.底盘PID控制参数整定

6.底盘里程计标

第5章:树莓派3开发环境搭建

1.安装系统ubuntu_mate_16.04

2.安装ros-kinetic

3.装机后一些实用软件安装和系统设置

4.PC端与robot端ROS网络通信

5.Android手机端与robot端ROS网络通信

6.树莓派USB与tty串口号绑定

7.开机自启动ROS节点

第6章:SLAM建图与自主避障导航

1.在机器人上使用传感器

2.google-cartographer机器人SLAM建图

3.ros-navigation机器人自主避障导航

4.多目标点导航及任务调度

5.机器人巡航与现场监控

第7章:语音交互与自然语言处理

1.语音交互相关技术

2.机器人语音交互实现

3.自然语言处理云计算引擎

第8章:高阶拓展

1.miiboo机器人安卓手机APP开发

2.centos7下部署Django(nginx+uwsgi+django+python3)

----------------文章将持续更新,敬请关注-----------------

如果大家对博文的相关类容感兴趣,或有什么技术疑问,欢迎加入下面的《SLAM+语音机器人DIY》QQ技术交流群,一起讨论学习^_^

SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术

关于我们:

视频教程:

SLAM+语音机器人DIY系列:(七)语音交互与自然语言处理——1.语音交互相关技术

https://www.bilibili.com/video/av61448040

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
2020智源
!(https://pic3.zhimg.com/80/v2af9f6637b50b09be60b00a42f3812d5e_1440w.jpg)人机对话系统是自然语言理解领域重要的研究方向之一,图灵测试的核心就是人机多轮交互。目前的人机对话系统局限于语音和文本的交互方式,然而近些年随着语音助手、虚拟数字人、智能服务机器人的普及应用,兼备“视听说”
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这