目录
系统方案总述
a. 步骤
b. 系统的设计
c . QA模型流程图
d. 体系结构和各个部分细分,
一. 语音识别:
语言识别模型
各个步骤详述
总结:
二.问答系统:
分类体系
三种形式:
技术架构图
模型逻辑图如下:
三. 语音合成:
基本原理
1.波形合成法
2.参数合成法
3.规则合成法
总的流程
系统方案总述
a. 步骤
主系统大概分为三个大的部分,各个部分描述如下,
- 第一步,语音识别步骤,首先录入用户语言并进行识别,
- 第二步 ,问答系统步骤,对识别出来的文本句子放入的问答系统中,提取答案,另外涉及到数据库的构建QA对的生成,模糊匹配问题,以及实时检索问题。
- 第三步,语音合成步骤,将生成的答案,由文本转为语言形式展示给用户
总系统如图所示:
b. 系统的设计
通常分为任务型、闲聊型和解决型三种,三者的设计分别针对不同的应用场景。
- A):任务型机器人主要用于完成用户的某些特定任务,比如:查天气咨询,查时间。
- B):闲聊机器人主要用于深入的和用户进行无目的交流;
- C):解决型机器人(客服机器人)用于解决用户的问题,比如:查询书籍作者,剩余可借图书个数
c . QA模型流程图
问题解析:主要包括分词、词性标注、句法分析、命名实体识别、问题分类、问题扩展等。
分词:中英文分词存在很大的区别,英文单词之间是以空格作为自然分界符的,而中文是以字为基本的书写单位,词语之间没有明显的区分标记。分词中最常见的是基于规则的词典匹配的方法,当出现歧义分词时,也有最大切分(向前、向后、前后结合)、最少切分、全切分等策略,但都存在一定不足。在受限领域的分词,都需要构造自身的领域词典, 来提高分词的准确率。
词性标注:stanford-postagger中文词性标注较好
语法分析:句法分析是指对自然语言的语法结构进行形式化定义,可以划分为短语结构语法与依存语法。
命名实体识别:命名实体识别的任务就是识别出待处理文本中三大类(实体类、时间类和数字类)、七小类(人名、机构名、地名、时间、日期、货币和百分比)命名实体。
问题分类:借助语义词典如WordNet(22) 、HowNet(23)等对问题上下位词、同义词进行扩充。问题分类主要有基于模式规则匹配的方法和基于统计学习的方法,其中机器学习的方法占据主导。基于模式匹配优点是无需语料库,也没有人工标注的错误率和工作量,同时还可以保证不错的效果。但由于中文表述形式的灵活性,许多问句甚至不含疑问词,所以规则方法适用性不强。
在中文领域:
1. 一种特征提取的新方法,此方法依赖于句法分析结果,通过把主干词和疑问词及其附属成分作为BN 的特征输入。
2. 用HowNet 语义词典,把疑问句、句法结构、疑问意向词在知网中的首义原作为特征输入, 采用EM 分类器。
3. 提取问题疑问词、关键核心词的主要义原、核心关键词的首义原、问句主谓宾的主要义原、命名实体、名词单复数等六种特征,采用SVM 分类器对事实疑问句进行不同特征组合的分类对比。
问题扩展:目前有两种主流的方式,一是通过搜索引擎等外部文本扩展,或者借助知识库如WordNet或Wikipedia等, 挖掘词之间的内在联系。
问题在经过上面的处理过后,如何表示?
问题解析过程在基于知识库的问答系统中尤为重要,其主流方法有两类,一类是基于符号的表示方法,另一类基于深度学习的分布式表示方法。
基于符号的表示方法把问题问句表示为形式化的查询形式, 如逻辑表达式、Lambda、 Calculus、DCS-TREE或Fun-QL等形式,之后再转化为对应的查询语言如SQL、SPARQL、Prolog、FunQL等。
信息检索:信息检索则以问题解析模块的结果作为输入,从底层知识库中返回一系列相关的排序文档。检索常用的模型有布尔模型、向量空间模型以及概率模型。
1. 布尔模型是一种简单检索模型,基于集合论和布尔代数。其查询由联接符AND、OR 和NOT 构成,通过对每个关键词对应的倒排索引取交集、并集或补集,返回若干相关文档给用户2. 向量空间模型是现在的文本检索系统以及网络搜索引擎的基础, 它把文档以及用户的查询都表示成向量空间中的点,用它们之间夹角的余弦值作为相似性度量。
举例:若文档有K 个词, 表示K个词在文档j中的权重。假设文档集合大小为N,fij为词i在某篇文档j中的次数。
3. 概率检索模型通常利用关键词作为线索,通过统计得到每个关键词在相关的文档集中出现和不出现的概率以及其在与该查询不相关的文档集中出现和不出现的概率,最终根据这些概率值,计算问句和文档的相似度。
原理:R:相关文档集NR:不相关文档集q:用户查询dj:文档j
PRP(probability ranking principle):概率排序原理,利用概率模型来估计每篇文档和需求相关概率,然后对结果进行排序。
贝叶斯最优决策原理,基于最小损失风险作出决策,返回相关的可能性大于不相关的可能性的文档;
条件概率的公式:P(AB)=P(A)P(B|A)=P(B)P(A|B)
由条件概率公式推导出贝叶斯公式:P(B|A)=P(A|B)P(B)/P(A)
d. 体系结构和各个部分细分,
细致划分上技术上可以分为四大块,如上图所示:智能语音(语音识别+语音合成)、自然语言处理(语义理解+语言生成)、对话状态管理、问答语料库。
一. 语音识别:
语音是一个连续的音频流,它是由大部分的稳定态和部分动态改变的状态混合构成。
一个单词的发声(波形)实际上取决于很多因素,而不仅仅是音素,例如音素上下文、说话者、语音风格等语言识别模型
如上图所示,语音识别的大致过程可以分为以下几步:
- 语音输入——这个过程可以通过电脑上的声卡来获取麦克风中输入的音频信号,或者直接读取电脑中已经存在的音频文件;
- 音频信号特征提取——在得到音频信号之后,需要对音频信号进行预处理,然后对预处理之后的音频信号进程特征提取,MFCC是最常用的声学特征;
- 声学模型处理——把语音的声学特征分类对应到音素或字词这样的单元;
- 语言模型处理——用语言模型接着把字词解码成一个完整的句子,于是就得到了最终的语音识别结果。
- 语音输出
各个步骤详述
1语言输入
语音信号的输入方法可以有两种:
1.1、通过电脑上的声卡读取麦克风中输入的语音信号,实现实时语音信号采集;
1.2、读取电脑本地中的.wav或.mp4文件获取语音信号。
2 音频信号特征提取
2.1 语音信号分帧处理
语音信号处理常常要达到的一个目标,就是弄清楚语音中各个频率成分的分布。做这件事情的数学工具是傅里叶变换,而傅里叶变换要求输入信号是平稳的。语音在宏观上来看是不平稳的——嘴巴动一动,信号的特征就变了。但是从微观上来看,在比较短的时间内,嘴巴动得是没有那么快的,语音信号就可以看成平稳的,就可以截取出来做傅里叶变换了。因此,我们需要对语音信号进行分帧处理,截取出来的一小段信号就叫一帧。
2.2 声学特征MFCC提取
包括 梅尔频率和倒谱分析
梅尔刻度是一种基于人耳对等距的音高(pitch)变化的感官判断而定的非线性频率刻度。梅尔刻度的滤波器组在低频部分的分辨率高,跟人耳的听觉特性是相符的,这也是梅尔刻度的物理意义所在。倒谱分析
倒谱的含义是:对时域信号做傅里叶变换,然后取log,然后再进行反傅里叶变换。可以分为复倒谱、实倒谱和功率倒谱,我们用的是功率倒谱。 倒谱分析可用于将信号分解,两个信号的卷积转化为两个信号的相加。
2.3声学模型整合
语音识别中的声学模型将声学和发音学的知识进行整合,以特征提取模块提取的特征为输入,生成声学模型得分。个人理解是,将前面得到的声学特征转化为发音中的音符。目前使用比较多的声学模型是具有记忆功能的RNN或LSTM网络。现有的声学模型一般可分为:
2.3.1、混合声学
混合高斯-隐马尔科夫模型 GMM-HMM
深度神经网络-隐马尔科夫模型 DNN-HMM
深度循环神经网络-隐马尔科夫模型 RNN-HMM
深度卷积神经网络-隐马尔科夫模型 CNN-HMM
2.3.2、端到端的声学模型
连接时序分类-长短时记忆模型 CTC-LSTM
注意力模型 Attention
3语音模型
语言模型是用来计算一个句子出现概率的概率模型。它主要用于决定哪个词序列的可能性更大,或者在出现了几个词的情况下预测下一个即将出现的词语的内容。换一个说法说,语言模型是用来约束单词搜索的。它定义了哪些词能跟在上一个已经识别的词的后面(匹配是一个顺序的处理过程),这样就可以为匹配过程排除一些不可能的单词。
语言模型分为三个层次:字典知识,语法知识,句法知识。总结:
难点分析:
1、口音和噪声
语音识别中最明显的一个缺陷就是对口音和背景噪声的处理。
2、语义错误
通常语音识别系统的实际目标并不是误字率。我们更关心的是语义错误率,就是被误解的那部分话语。
3、单通道和多人会话
一个好的会话语音识别器必须能够根据谁在说话对音频进行划分,还应该能弄清重叠的会话(声源分离)。
4、其他领域变化
如:来自声环境变化的混响、硬件造成的伪影、音频的编解码器和压缩伪影、采样率的变化、会话者的年龄不同。
5、上下文相关联判断识别
人类聊天容易基于上下文做判断,机器目前很难做到。
二.问答系统:
不同类型的问答系统对于数据处理的方法存在不同。例如,相对于面向FAQ的问答系统的问句检索直接得到候选答案,面向开放领域的问答系统首先需要根据问题分析的结果进行相关文档、文本片段信息的检索,然后进行候选答案的抽取。虽然不同类型的问答系统对于系统模块的功能分工和具体实现存在差异,但依据数据流在问答系统中的处理流程,一般问答系统的处理框架中都包括问句理解、信息检索、答案生成三个功能组成部分。
首先,问答系统首先接收用户提出的问题(即用户输入的问句)。 然后,根据用户输入的问句,从常用问题库(即FAQ库)中查找并建立与用户问题比较相似的候选问题集。 接着,对候选问题集中的句子与用户输入的问句进行相似度计算,从候选问题集中寻找与用户输入的问句最相似的问句。 如果在候选问题集中找到了与用户输入的问句相似的问句(即该问句和用户输入的问句的相似度大于某个阈值),就直接把和该问句对应的答案返还给用户;如果没有找到与用户输入的问句相似的问句(即候选问题集中所有问句和用户输入的问句的相似度都小于某个阀值),那么就利用其他的方法,比如答案抽取、信息检索等,来寻找答案,并且将这个新的问题和其对应的答案加入FAQ库,对FAQ库进行更新。
分类体系
基于智能对话机器人的交互特点、功能特点和关键技术,我们把智能对话机器人划分为上图中的几个类别,
三种形式:
- 基于分析
- 基于检索、
- 基于生成。
基于分析是比如一个单轮对话针对一个分类问题,或者是一个结构预测的问题,那么检索就是一个匹配问题,生成就是一个翻译的问题。这三种不同的方法它背后的区别就是这个有没有显式的语义表达。
- 基于分析的方法它是有显式的内部表达,基于检索和生成,就是部分有或者没有显性的这个内部的表示,这是这三个不同的方法的特点。
- 基于检索的方法在聊天机器人中用的多,而问答系统中也是如此,只是将对话局限在问答中。
- 基于生成的方法。在深度学习出来之前,这是有难度的,现在有深度学习基于生成对话的技术,其原理上是把问句,转化成内部表示,再把内部表示为答句。在生成器和分析器中用了大量的训练语料,基于神经网络来训练表示实现。
技术架构图
- 提问处理模块:负责对用户的提问进行处理;生成查询关键词(提问关键词,扩展关键词,...);确定提问答案类型(PER, LOC, ORG, TIM, NUM, ...)以及提问的句法、语义表示等等。
- 检索模块:根据提问处理模块生成的查询关键词,使用传统检索方式,检索出和提问相关的信息;返回的信息可以是段落、也可以是句群或者句子。
- 答案抽取模块:从检索模块检索出的相关段落、或句群、或句子中抽取出和提问答案类型一致的实体,根据某种原则对候选答案进行打分,把概率最大的候选答案返回给用户
模型逻辑图如下:
由多层的不同类型的神经网络堆叠而成,如下图,各个层有自己的功能,数据
三. 语音合成:
语音由一连串的音所组成,这些音及其相互间的过渡就是代表信息的符号。这些符号的排列由语音的规则所控制。对这些规则及其在人类通信中的含义的研究属于语言学的范畴。 语音合成的研究已有多年的历史,现在研究出的语音合成方法的分类,从技术方式讲,可分为波形合成法、参数合成法、和规则合成方法;从合成策略上讲可分为频谱逼近和波形逼近。
基本原理
如下图所示,一个典型的语音合成系统主要包括训练和后端两个部分。前端部分主要是对输入文本的分析,从输入的文本提取后端建模需要的信息。例如:分词(判断句子中的单词边界),词性标注(名词,动词,形容词等),韵律结构预测(是否韵律短语边界),多音字消岐等等。的部分读入前端文本分析结果,并且对语音部分结合文本信息进行建模。在合成过程中,后端会利用输入的文本信息和训练好的声学模型,生成出语音信号,进行输出。
1.波形合成法
波形合成法一般有两种形式,一种是波形编码合成,它类似于语音编码中的波形编解码方法,该方法直接把要合成的语音发音波形进行存储,或者进行波形编码压缩后存储,合成重放时再解码组合输出。另一种是波形编辑合成,它把波形编辑技术用于语音合成,通过选取音库中采取自然语言的合成单元的波形,对这些波形进行编辑拼接后输出。它采用语音编码技术,存储适当的语音单元,合成时,经解码、波形编辑拼接、平滑处理等输出所需的短语、语句或段落。波形语音合成法是一种相对简单的TTS语音技术,通常只能合成有限词汇的语音段。目前许多专门用途的语音芯片或语音IC,都采用这种方式,如自动报时、报站或报警等。
2.参数合成法
参数合成法也称为分析合成法,是一种比较复杂的方法。声学模型的过程为:首先录制声音,这些声音涵盖了人发音过程中所有可能出现的读音;提取出这些声音的声学参数,并整合成一个完整的音库。在发音过程中,首先根据需要发的音,从音库中选择合适的声学参数,然后根据韵律模型中得到的韵律参数,通过语音合成算法产生TTS语音。
参数语音合成方法的优点是其音库一般较小,并且整个系统能适应的韵律特征的范围较宽,这类合成器比特率低,音质适中;缺点是参数合成技术的算法复杂,参数多,并且在压缩比较大时,信息丢失亦大,合成出的语音总是不够自然、清晰。为了改善音质,近几年发展了混合编码技术,主要是为了改善激励信号的质量,这样,虽然比特率有所增大,但音质得到了提高。
3.规则合成法
这是一种高级的合成方法。规则合成方法通过语音学规则产生语音。合成的词汇表不是事先确定,系统中存储的是最小的语音单位的声学参数,以及由音素组成音节、由音节组成词、由词组成句子和控制音调、轻重音等韵律的各种规则。给出待合成的文本数据后,合成系统利用规则自动地将他们转换成连续的语音声波。这种方法可以合成无限词汇的语句。这种算法中,用于波形拼接和韵律控制的、较有代表性的算法是基音同步叠加技术(PSOLA),该方法既能保持所发音的主要音段特征,又能在拼接时灵活调整其基频、时长和强度等超音段特征。其核心思想是,直接对存储于音库的语音运用PSOLA算法来进行拼接,从而整合成完整的语音。有别于传统概念上只是将不同的语音单元进行简单拼接的波形编辑合成,规则合成系统首先要在大量语音库中,选择最合适的语音单元来用于拼接,并在选音过程中往往采用多种复杂的技术,最后在拼接时,要使用如PSOLA算法等,对其合成语音的韵律特征进行修改,从而使合成的语音能达到很高的音质。
总的流程
包括训练模块和合成模块,训练模块用于学习语料库和文本库的内容,学习数据中包含的语言特征,合成模块将文字模拟成声音,利用训练模块得到的模型转换成符合逻辑的语言。