关于语音交互,你不得不知的技术知识

发布时间:2024-03-29 点击:143
要更好的了解语音交互,那么就不得不了解背后的技术知识,国庆花了几天大致看完了宗成庆的《统计自然语言处理》,这本书主要讲的是语言交互里最关键的部分,即natural languge processing。为了自我梳理,把本书和看的吴军的《数学之美》 一起汇总了下,整理出来给需要的童鞋。
本文分四个部分,相对比较长,而且又是技术的,可能会比较难看进去,但是….要坚持。
一,语音交互的系统构成
二,语音交互面临的困难
三,自然语言处理的关键技术
四,具体场景语音交互实现的技术原理
一,语音交互的构成
语音交互一般包括三个模块:
语音识别 asr(automatic speech recognition),主要工作是将声音信息转化为文字。
自然语言处理 nlp(natural language processing),主要工作是理解人们想要表达的意思,并给出合理的反馈。
语音合成tts( text to speech),主要工作是指将文字转化为声音
《统计自然语言处理》给了更细致和完整的的人机对话系统组成结构,主要包括如下6个技术模块:
1,语音识别模块(speech recognizer)
实现用户输入语音到文字的识别转换,识别结果一般以得分最高的前n(n≥1)个句子或词格(word lattice)形式输出。(把用户说的语音转成文字)
2,语言解析模块 (language parser)
对语音识别结果进行分析理解,获得给定输入的内部表示。(即把用户说的转成机器理解的语言)
3,问题求解模块(problem resolving)
依据语言解析器的分析结果进行问题的推理或查询,求解用户问题的答案。 (即解决用户问题的模块,比如调用的百度搜索)
4,对话管理模块(dialogue management)
是系统的核心,一个理想的对话管理器应该能够基于对话历史调度人机交互机制,辅助语言解析器对语音识别结果进行正确的理解,为问题求解提供帮助,并指导语言的生成过程。可以说,对话管理机制是人机对话系统的中心枢纽。( 能够记录历史对话数据,通过训练能够给到用户更好的回答)
5,语言生成模块(language generator)
根据解析模块得到的内部表示,在对话管理机制的作用下生成自然语言句子。 (把回答的机器语言再转换成 口语语言)
6,语音合成模块(speech synthesizer)
将生成模块生成的句子转换成语音输出。(把口语语言再转化成语音)
二,语音交互的面临的困难
下图是知乎问题 为什么 siri 听懂了我的话,还是不能做出有效的回答或准确的操作?的内容,很好的例证了语音交互里的最大的问题在于 语义理解,即准确的理解用户的对话目的。siri可以很好的识别语音,即能知道用户说的是“ 明天早上9点帮我预约出租车去公司“,但是却不能理解你的对话目的,到底是要设定预约提醒日历,还是要提前预约出租车。
而造成siri不能理解用户的原因是,1,原本的对话有多个含义,2, 原本的对话里 滴滴打车对于siri来说是未知语言。(当时内置系统并没有对接滴滴)
因此语音交互最终需要解决的关键问题是歧义消解(disambiguation)问题,和未知语言现象的处理问题。
理解了这个背景,我们在和siri对话或者设计语音交互的功能时就能理解它们为什么不能做出有效的回答。下面一篇讲的就是怎么做语义理解。
三,自然语言处理的关键技术
怎么让机器去理解 “ 明天早上9点帮我预约出租车去公司“ 这句话, 就像对于一个2年纪小孩子,它可能听得懂但是看不懂,那么我们是不是先要要教她这句话是这样读:
“ 明天/早上/9点/帮/我/预约/出租车/去/公司”——即 中文分词
然后教她意思是 “明天早上9点/帮我/预约出租车/去公司”——即 句法结构
然后告诉她这里的“预约”不是预约提醒,即语义分析
最后 “刚说的明天早上9点帮我预约出租车去公司。 但是我现在不需要了”—是转折,即篇章分析
1,中文分词
词是对话最小单元,因此理解一句话的前提是能够知道对话里用了哪些词。
比如:“上海大学城书店在哪里”,就需要拆分成“上海/大学城/书店/在/哪里”,而不是: “上海大学/城/书店/在/哪里”
下面是《数学之美》吴军讲的 分词的统一方法,他讲的比较直接好了解,就直接截图了。
不同应用的 分词颗粒度大小是不同的,早期谷歌的分词采用basic technology公司的通用分词器,分词结果没有针对搜索进行优化,后期还专门为搜索设计和实现了自己的分词系统。
2, 句法分析(syntactic parsing)
文中的解释是句法分析是自然语言处理中的关键技术之一,其基本任务是确定句子的句法结构。 其实说简单点, 我的理解是,中文分词是把一句话拆分成 word1, word2, word3,那么句法分析就是把一句拆分成 主语,谓语,宾语….。
通过句法分析,能够更快的理解一句话,比如在理解英文对话的时候,虽然有些形容词看不懂,但是我们找到动词和主语或宾语后,能够大致知道这句话的意思。
基于概率上下文无关文法(probabilistic (或stochastic)context-free grammar, pcfg或scfg)的短语结构分析方法可以说是目前最成功的语法驱动的统计句法分析方法,有兴趣的可以深入了解下。
3,语义分析
语义分析主要是词义消歧和语义角色标注。
词义消歧主要是因为一词多义非常普遍,如,英语中的单词bank的含义可以是“银行”,也可以是“河岸”,到底是哪个需要根据上下文环境,自动排除歧义。
比如 “ take me to the bank in the north “ 到底是去北边的银行还是去北边的河岸。
词义消歧方法分为有监督的消歧方法(supervised disambiguation)和无监督的消歧方法(unsupervised disambiguation)。在有监督的消歧方法中,可以根据训练数据得知一个多义词所处的不同上下文与特定词义的对应关系,那么,多义词的词义识别问题实际上就是该词的上下文分类问题,一旦确定了上下文所属的类别,也就确定了该词的词义类型。
在无监督的词义消歧中,由于训练数据未经标注,因此,首先需要利用聚类算法对同一个多义词的所有上下文进行等价类划分,如果一个词的上下文出现在多个等价类中,那么,该词被认为是多义词。然后,在词义识别时,将该词的上下文与其各个词义对应上下文的等价类进行比较,通过上下文对应等价类的确定来断定词的语义。
4,篇章分析
篇章在英文中常用“discourse”表示,在汉语里常有篇章、语篇或者话语之说。篇章分析的最终目的是从整体上理解篇章,最重要的任务之一是分析篇章结构。
在对话的过程中我们很少长篇大论,但是在多轮对话时,一整段对话其实是一个篇章。所以需要理解每句话之间或者说篇章的结构。
比如:“ 帮我定个明天早上7点的闹钟“ “ 算了,太早了,帮我改成8点“ 那么通过理解两句话的结构,我们知道需要去取消之前7点的闹钟,并设置一个8点的闹钟。
四,人机对话系统的实现技术
下面是《统计自然语言处理》里介绍的一种口语解析方法——基于规则和hmm的统计解析方法,文章并没有说这是人机对话系统的标准实现技术,而且表示这种做法有一定缺陷。 我们只需要了解这种根据词汇分类,语义组块分析后生成机器能够理解的对话分析机制。
基于规则和hmm的统计口语解析方法是
由词汇分类模块对其词汇进行词义分类,即把句子中的每一个词映射到相应的词义类中。语义组块分析器从句子对应的词义类序列中分析出语义组块,组块分析器输出的是一个语义组块序列。统计解析模块从语义组块序列分析出句子if表示的主要框架。语义组块解释模块把各个语义组块解释为相应的if表达式片段。 经过对上述两部分的合并,得到最终的if(interchange format)表达式(国际语音翻译先进研究联盟c-star采用的一种称作中间转换格式的语义表示形式,以有利于多语言互译)。
1,if表达式格式:
speaker:speech-act[ concept]*[(argument=value[,argument=value]*)]
例:明天我想预订一个单人间。
if:c:give-information reservation room(room-spec=(room-type=single, quantity=1), reservation-spec=(time=(relative-time=tomorrow)))
该if的含义为:说话人为“c”,该句子的意

SEO优化 网站首页设计优化时SEO应注意的六点基本操作
都什么时代,谁还去看网站?这是我听过最好的答案
CGI脚本如何生成网页
月付虚拟主机
香港云服务器和裸机租用的区别
免费 虚拟主机哪个好用
越来越好用,有道词典新增迷你窗口!
公司云服务器买哪个好用