博舍

语音识别技术构架 语音识别技术包含的流程

语音识别技术构架

转自:https://coffee.pmcaff.com/article/1055672606603392/pmcaff?utm_source=forum&from=search

很好的一篇文章,没有任何公式,但是把语音识别的技术框架说的很清楚,适合刚接触语音识别的小伙伴看一下。我转来备份一下。

语音交互将会成为新的入口,也是各大公司务必争夺的资源之一,资源是指数据,不是技术,因为技术会开放,而有价值的有标注的数据才是制胜法宝。所以,pm们需要了解语音识别技术的基础,总有一天你会用到,并且这一天不会太远。我会从以下几个方面介绍语音识别:

语音识别基础.png

 

 

一、语音识别的基础概念

1.概念

自动语音识别(AutomaticSpeechRecognition,ASR)技术是一种将人的语音转换为文本的技术。

这项技术被当做是可以使人与人、人与机器更顺畅交流的桥梁,已经在研究领域活跃了50多年。

2.发展

ASR在近几年的流行,与以下几个关键领域的进步有关:

摩尔定律持续有效使得多核处理器、通用计算图形处理器GPGPU、CPU/GPU集群等技术,为训练复杂模型提供了可能,显著降低了ASR系统的错误率。大数据时代借助互联网和云计算,获得了真实使用场景的大数据训练模型,使得ASR系统更具鲁棒性(健壮性、稳定性)。移动智能时代移动设备、可穿戴设备、智能家居设备、车载信息娱乐系统,变得越来越流行,语音交互成为新的入口。

3.研究领域分类

根据在不同限制条件下的研究任务,产生了不同的研究领域。如图:

研究领域分类

 

4.语音识别任务分类

根据不同任务,语音识别可分为4类:

任务分类

 

5.应用

语音交互作为新的入口,主要应用于上图中的两大类:帮助人与人的交流和人与机器的交流。

帮助人与人的交流HHC应用场景如,如翻译系统,微信沟通中的语音转文字,语音输入等功能。

语音到语音(speech-to-speech,S2S)翻译系统,可以整合到像Skype这样的交流工具中,实现自由的远程交流。

S2S组成模块主要是,语音识别-->机器翻译-->文字转语音,可以看到,语音识别是整个流水线中的第一环。

帮助人与机器的交流HMC应用场景如,语音搜索VS,个人数码助理PDA,游戏,车载信息娱乐系统等。

 

6.对话系统

要注意的是,我们上面所说的应用场景和系统讨论,都是基于【语音对话系统】的举例。

语音识别技术只是其中关键的一环,想要组建一个完整的语音对话系统,还需要其他技术。

语音对话系统:(包含以下系统的一个或多个)1)语音识别系统:语音-->文字2)语义理解系统:提取用户说话的语音信息3)文字转语音系统:文字-->语音4)对话管理系统:1)+2)+3)完成实际应用场景的沟通

语音对话系统

二、语音识别系统

语音识别问题,其实是一个模式识别的问题。给你一段声波,机器判别是a还是b。

这个过程有两大块,一个是生成机器能理解的声音向量。第二个是通过模型算法识别这些声音向量,最终给出识别结果。

每一块中间都有很多细小的步骤,我们后面会提到。

1.系统架构概述

下图是语音识别系统的组成结构,主要分4部分:信号处理和特征提取、声学模型(AM)、语言模型(LM)和解码搜索部分。

语音识别系统的架构

 

左半部分可以看做是前端,用于处理音频流,从而分隔可能发声的声音片段,并将它们转换成一系列数值。

声学模型就是识别这些数值,给出识别结果。后面我们会详细解释。

右半边看做是后端,是一个专用的搜索引擎,它获取前端产生的输出,在以下三个数据库进行搜索:一个发音模型,一个语言模型,一个词典。

【发音模型】表示一种语言的发音声音,可通过训练来识别某个特定用户的语音模式和发音环境的特征。【语言模型】表示一种语言的单词如何合并。【词典】列出该语言的大量单词,以及关于每个单词如何发音的信息。

 

a)信号处理和特征提取:以音频信号为输入,通过消除噪声和信道失真对语音进行增强,将信号从时域转化到频域,并为后面的声学模型提取合适的有代表性的特征向量。

b)声学模型:将声学和发音学的知识进行整合,以特征提取部分生成的特征为输入,并为可变长特征序列生成声学模型分数。

c)语言模型:语言模型估计通过训练语料学习词与词之间的相互关系,来估计假设词序列的可能性,又叫语言模型分数。如果了解领域或任务相关的先验知识,语言模型的分数通常可以估计的更准确。

d)解码搜索:综合声学模型分数与语言模型分数的结果,将总体输出分数最高的词序列当做识别结果。

2.语音识别技术详解

看完上面的架构图,你应该有个大致的印象,知道整个语音识别是怎么回事儿了。下面我们详细说一些重要的过程。

2.1语音识别单元

我们的语音内容,由基本的语音单元组成。选择要识别的语音单元是语音识别研究的第一步。

就是说,你要识别的结果是以什么为基础单位的?是单词还是元音字母?

语音识别单元有单词(句)、音节和音素三种,具体选择哪一种,根据具体任务来定,如词汇量大小、训练语音数据的多少。

语音识别单元

【音素】:在汉语里,最小的语音单位是音素,是从音色的角度分出来的。

【音节】:一个音素单独存在或几个音素结合起来,叫做音节。可以从听觉上区分,汉语一般是一字一音节,少数的有两字一音节(如“花儿”)和两音节一字。

语音识别单元

2.2信号的数字化和预处理

接下来就要将收集到的语音转化为一系列的数值,这样机器才可以理解。

1)数字化

声音是作为波的形式传播的。将声波转换成数字包括两个步骤:采样和量化。

为了将声波转换成数字,我们只记录声波在等距点的高度,这被称为采样(sampling)。

采样定理(Nyquisttheorem)规定,从间隔的采样中完美重建原始声波——只要我们的采样频率比期望得到的最高频率快至少两倍就行。

 

 

经过采样,我们获取了一系列的数字,这些数字才可以在机器上进行建模或计算。

我们每秒读取数千次,并把声波在该时间点的高度用一个数字记录下来。把每一秒钟所采样的数目称为采样频率或采率,单位为HZ(赫兹)。

「CD音质」的音频是以44.1khz(每秒44100个读数)进行采样的。但对于语音识别,16khz(每秒16000个采样)的采样率就足以覆盖人类语音的频率范围了。

 

2)采样信号预处理

这里的预处理主要指,分帧处理。因为语音信号是不平稳的、时长变化的,如下图:

我们把它分隔为一小段一小段(10毫秒-40毫秒)的短语音,我们认为这样的小片段是平稳的,称之为【帧】。

在每个帧上进行信号分析,称为语音的短时分析。

 

图中,每帧的长度为25毫秒,每两帧之间有25-10=15毫秒的交叠。我们称为帧长25ms、帧移10ms的分帧。

帧移的事情就不详细解释了,它是为了保证语音信息的完整性。感兴趣的同学可以查一下,加窗/窗函数。

那为什么需要平缓的分帧呢?因为我们需要做傅里叶变化,它适用于分析平稳的信号。(想弄明白傅里叶变换的,之后可以参考文章末尾的链接)

人类是根据振动频率判断声音的,而以时间为横轴(时域)的波形图没有振幅描述,我们需要做傅里叶变换,将它变成以频率为横轴(频域)的振幅描述。

2.3特征提取

特征提取就是从语音波形中提取出能反映语音特征的重要信息,去掉相对无关的信息(如背景噪声),并把这些信息转换为一组离散的参数矢量。

1)特征提取

如何提取呢?我们经过采样,预处理,将这些数字绘制为简单的折线图,如下所示,我们得到了20毫秒内原始声波的大致形状:

这样的波形图对机器来说没有任何描述信息。这个波形图背后是很多不同频率的波叠加产生的。(准确的讲,它在时域上没有描述能力)

我们希望一段声纹能够给出一个人的特性,比如什么时候高,什么时候低,什么时候频率比较密集,什么时候比较平缓等等。

 

就是我们上面所说的,用傅里叶变化来完成时域到频域的转换。

这就需要对每一帧做傅里叶变化,用特征参数MFCC得到每一帧的频谱(这个过程就是特征提取,结果用多维向量表示),最后可以总结为一个频谱图(语谱图)。

如下图所示,是“hello”的频谱图,很酷是吧~横轴是时间,纵轴是频率。颜色越亮,表示强度越大。

 

2)常用的特性参数

特性提取时,我们有常用的特征参数作为提取模板,主要有两种:

线性预测系数(LPC)

LPC的基本思想是,当前时刻的信号可以用若干个历史时刻的信号的线性组合来估计。通过使实际语音的采样值和线性预测采样值之间达到均方差最小,即可得到一组线性预测系数。

求解LPC系数可以采用自相关法(德宾durbin法)、协方差法、格型法等快速算法。

倒谱系数

利用同态处理方法,对语音信号求离散傅立叶变换后取对数,再求反变换就可得到倒谱系数。

其中,LPC倒谱(LPCCEP)是建立在LPC谱上的。而梅尔倒谱系数(MelFrequencyCepstrumCoefficient,MFCC)则是基于MEL谱的。不同于LPC等通过对人的发声机理的研究而得到的声学特征,MFCC是受人的听觉系统研究成果推动而导出的声学特征。

简单的说,经过梅尔倒谱分析,得到的参数更符合人耳的听觉特性。

 

3)短语音识别为单词

有了上面的特征提取,每一帧都可以表述为一个多维向量,接下来就是把向量识别为文本。

这里我们需要多介绍一个概念,叫【状态】。你可以理解为,是比音素更细致的语音单位。通常把一个音素划分成3个状态。

如上图所示,识别过程无非是:1)把帧识别成状态(难点)。2)把状态组合成音素。3)把音素组合成单词。

那每个音素应该对应哪种状态呢?这就需要用到声学模型了。

2.4声学模型

声学模型是识别系统的底层模型,其目的是提供一种计算语音的特征矢量序列和每个发音模板之间的距离的方法。

也就是说,提取到的语音特性,与某个发音之间的差距越小,越有可能是这个发音。

或者说,某帧对应哪个状态的概率最大,那这帧就属于哪个状态。这个可以用GMM(混合高斯模型,就是一种概率分布)或DNN(深度神经网络)来识别。

但这样识别出来的结果会比较乱,因为一个人讲话的速度不一样,每一帧识别出的结果可能是:....HHH_EE_LL__LLLL__OOO.....,如下图:

 

这个问题可以用DTW(动态时间规整)或HMM(隐马尔科夫模型)或CTC(改进的RNN模型)来对齐识别结果,知道单词从哪里开始,从哪里结束,哪些内容是重复的没有必要的。

 

1)常用的声学建模方法包含以下三种:

基于模式匹配的动态时间规整法(DTW);隐马尔可夫模型法(HMM);基于人工神经网络识别法(ANN);

在过去,主流的语音识别系统通常使用梅尔倒谱系数(Mel-FrequencyCepstralCoefficient,MFCC)或者线性感知预测(PerceptualLinearPrediction,PLP)作为特征,使用混合高斯模型-隐马尔科夫模型(GMM-HMM)作为声学模型。

近些年,分层鉴别模型比如DNN,变得可行起来,比如上下文相关的深度神经网络-隐马尔可夫模型(context-dependentDNN-HMM,CD-DNN-HMM)就比传统的GMM-HMM表现要好得多。

如下图,你可以清晰的看到被替换的部分。

 

2)主要问题:

我们要了解的是,声学模型存在2个问题:1.特征向量序列的可变长;每个人说同一个单词的时间长度都不一样,声学模型要能从不同的时间长度的语音信号中识别出是同一个单词。

解决方法就是DTW(动态时间规整)、HMM(隐马尔可夫模型)。2.音频信号的丰富变化性;如说话人的性别,健康状况,紧张程度,说话风格、语速,环境噪音,周围人声,信道扭曲,方言差异,非母语口音等。

3)HMM声学建模:

对语音识别系统而言,HMM的输出值通常就是各个帧的声学特征。为了降低模型的复杂度,通常HMM模型有两个假设前提,一是内部状态的转移只与上一状态有关,一是输出值只与当前状态或当前状态转移有关。除了这两个假设外,HMM模型还存在着一些理论上的假设,其中之一就是,它假设语音是一个严格的马尔科夫过程。

2.5语言模型

如何将识别出的单词,组成有逻辑的句子,如何识别出正确的有歧义的单词,这些就用到语言模型了。

由于语音信号的时变性、噪声和其它一些不稳定因素,单纯靠声学模型无法达到较高的语音识别的准确率。在人类语言中,每一句话的单词直接有密切的联系,这些单词层面的信息可以减少声学模型上的搜索范围,有效地提高识别的准确性,要完成这项任务语言模型是必不可少的,它提供了语言中词之间的上下文信息以及语义信息。

随着统计语言处理方法的发展,统计语言模型成为语音识别中语言处理的主流技术,其中统计语言模型有很多种,如N-Gram语言模型、马尔可夫N元模型(MarkovN-gram)、指数模型(ExponentialModels)、决策树模型(DecisionTreeModels)等。而N元语言模型是最常被使用的统计语言模型,特别是二元语言模型(bigram)、三元语言模型(trigram)。

2.6字典

字典是存放所有单词的发音的词典,它的作用是用来连接声学模型和语言模型的。

识别出音素,利用字典,就可以查出单词了。

例如,一个句子可以分成若干个单词相连接,每个单词通过查询发音词典得到该单词发音的音素序列。相邻单词的转移概率可以通过语言模型获得,音素的概率模型可以通过声学模型获得。从而生成了这句话的一个概率模型。

2.7解码器

解码器的作用就是将上述训练好的模型按照一定的规则组合起来,将新输入的语音识别出来。

 

三、语音识别评估标准

在语音识别中,常用的评估标准为词错误率(WordErrorRate,WER)。

我们上面讲了帧向量识别为单词,需要用声学模型。因为识别出来的整个词序列是混乱的,需要进行替换、删除、插入某些词,使得次序列有序完整。

WER就是反映上述过程的标准,能直接反映识别系统声学模型的性能,也是其他评估指标如句错误率SER的基础。

传统的词错误率评估算法在语音识别中存在三种典型的词错误:1)替换错误(Substitution)在识别结果中,正确的词被错误的词代替;2)删除错误(Deletion)在识别结果中,丢失了正确的词;3)插入错误(Insertion)在识别结果中,增加了一个多余的词;

所以,词错误率为:

S为替代错误词数,D为删除错误词数,I为插入错误词数。T为参照句子中的所有词数。需要注意的是,因为有插入词,所以WER有可能大于100%。

 

 

以上。

 

--- 

 

参考文章:

《实用语音识别基础》王炳锡,2005《解析深度学习-语音识别实践》邓力,2016

浅析语音识别技术的工作原理及发展

浅析语音识别技术的工作原理及发展

语音是人类最自然的交互方式。计算机发明之后,让机器能够“听懂”人类的语言,理解语言中的内在含义,并能做出正确的回答就成为了人们追求的目标。我们都希望像科幻电影中那些智能先进的机器人助手一样,在与人进行语音交流时,让它听明白你在说什么。语音识别技术将人类这一曾经的梦想变成了现实。语音识别就好比“机器的听觉系统”,该技术让机器通过识别和理解,把语音信号转变为相应的文本或命令。

 

语音识别技术,也被称为自动语音识别Automatic SpeechRecogniTIon,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。语音识别就好比“机器的听觉系统”,它让机器通过识别和理解,把语音信号转变为相应的文本或命令。

语音识别是一门涉及面很广的交叉学科,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。语音识别技术正逐步成为计算机信息处理技术中的关键技术。

语音识别技术的发展

语音识别技术的研究最早开始于20世纪50年代,1952年贝尔实验室研发出了10个孤立数字的识别系统。从20世纪60年代开始,美国卡耐基梅隆大学的Reddy等开展了连续语音识别的研究,但是这段时间发展很缓慢。1969年贝尔实验室的 PierceJ甚至在一封公开信中将语音识别比作近几年不可能实现的事情。

20世纪80年代开始,以隐马尔可夫模型(hiddenMarkovmodel,HMM)方法为代表的基于统计模型方法逐渐在语音识别研究中占据了主导地位。HMM模型能够很好地描述语音信号的短时平稳特性,并且将声学、语言学、句法等知识集成到统一框架中。此后,HMM的研究和应用逐渐成为了主流。例如,第一个“非特定人连续语音识别系统”是当时还在卡耐基梅隆大学读书的李开复研发的SPHINX系统,其核心框架就是GMM-HMM框架,其中GMM(Gaussianmixturemodel,高斯混合模型)用来对语音的观察概率进行建模,HMM则对语音的时序进行建模。

20世纪80年代后期,深度神经网络(deepneuralnetwork,DNN)的前身——人工神经网络(artificialneuralnetwork,ANN)也成为了语音识别研究的一个方向。但这种浅层神经网络在语音识别任务上的效果一般,表现并不如GMM-HMM模型。

20世纪90年代开始,语音识别掀起了第一次研究和产业应用的小高潮,主要得益于基于GMM-HMM声学模型的区分性训练准则和模型自适应方法的提出。这时期剑桥发布的HTK开源工具包大幅度降低了语音识别研究的门槛。此后将近10年的时间里,语音识别的研究进展一直比较有限,基于GMM-HMM框架的语音识别系统整体效果还远远达不到实用化水平,语音识别的研究和应用陷入了瓶颈。

2006年Hinton]提出使用受限波尔兹曼机(restricted Boltzmannmachine,RBM)对神经网络的节点做初始化,即深度置信网络(deepbeliefnetwork,DBN)。DBN解决了深度神经网络训练过程中容易陷入局部最优的问题,自此深度学习的大潮正式拉开。

2009年,Hinton和他的学生MohamedD将DBN应用在语音识别声学建模中,并且在TIMIT这样的小词汇量连续语音识别数据库上获得成功。

2011年DNN在大词汇量连续语音识别上获得成功,语音识别效果取得了近10年来最大的突破。从此,基于深度神经网络的建模方式正式取代GMM-HMM,成为主流的语音识别建模方式。

语音识别的基本原理

所谓语音识别,就是将一段语音信号转换成相对应的文本信息,系统主要包含特征提取、声学模型,语言模型以及字典与解码四大部分,其中为了更有效地提取特征往往还需要对所采集到的声音信号进行滤波、分帧等预处理工作,把要分析的信号从原始信号中提取出来;之后,特征提取工作将声音信号从时域转换到频域,为声学模型提供合适的特征向量;声学模型中再根据声学特性计算每一个特征向量在声学特征上的得分;而语言模型则根据语言学相关的理论,计算该声音信号对应可能词组序列的概率;最后根据已有的字典,对词组序列进行解码,得到最后可能的文本表示。

声学信号预处理

作为语音识别的前提与基础,语音信号的预处理过程至关重要。在最终进行模板匹配的时候,是将输入语音信号的特征参数同模板库中的特征参数进行对比,因此,只有在预处理阶段得到能够表征语音信号本质特征的特征参数,才能够将这些特征参数进行匹配进行识别率高的语音识别。

首先需要对声音信号进行滤波与采样,此过程主要是为了排除非人体发声以外频率的信号与50Hz电流频率的干扰,该过程一般是用一个带通滤波器、设定上下戒指频率进行滤波,再将原有离散信号进行量化处理实现的;之后需要平滑信号的高频与低频部分的衔接段,从而可以在同一信噪比条件下对频谱进行求解,使得分析更为方便快捷;分帧加窗操作是为了将原有频域随时间变化的信号具有短时平稳特性,即将连续的信号用不同长度的采集窗口分成一个个独立的频域稳定的部分以便于分析,此过程主要是采用预加重技术;最后还需要进行端点检测工作,也就是对输入语音信号的起止点进行正确判断,这主要是通过短时能量(同一帧内信号变化的幅度)与短时平均过零率(同一帧内采样信号经过零的次数)来进行大致的判定。

声学特征提取

完成信号的预处理之后,随后进行的就是整个过程中极为关键的特征提取的操作。将原始波形进行识别并不能取得很好的识别效果,频域变换后提取的特征参数用于识别,而能用于语音识别的特征参数必须满足以下几点:

1、特征参数能够尽量描述语音的根本特征;

2、尽量降低参数分量之间的耦合,对数据进行压缩;

3、应使计算特征参数的过程更加简便,使算法更加高效。基音周期、共振峰值等参数都可以作为表征语音特性的特征参数。

目前主流研究机构最常用到的特征参数有:线性预测倒谱系数(LPCC)和Mel倒谱系数(MFCC)。两种特征参数在倒谱域上对语音信号进行操作,前者以发声模型作为出发点,利用LPC技术求倒谱系数。后者则模拟听觉模型,把语音经过滤波器组模型的输出做为声学特征,然后利用离散傅里叶变换(DFT)进行变换。

所谓基音周期,是指声带振动频率(基频)的振动周期,因其能够有效表征语音信号特征,因此从最初的语音识别研究开始,基音周期检测就是一个至关重要的研究点;所谓共振峰,是指语音信号中能量集中的区域,因其表征了声道的物理特征,并且是发音音质的主要决定条件,因此同样是十分重要的特征参数。此外,目前也有许多研究者开始将深度学习中一些方法应用在特征提取中,取得了较快的进展。

声学模型

声学模型是语音识别系统中非常重要的一个组件,对不同基本单元的区分能力直接关系到识别结果的好坏。语音识别本质上一个模式识别的过程,而模式识别的核心是分类器和分类决策的问题。

通常,在孤立词、中小词汇量识别中使用动态时间规整(DTW)分类器会有良好的识别效果,并且识别速度快,系统开销小,是语音识别中很成功的匹配算法。但是,在大词汇量、非特定人语音识别的时候,DTW识别效果就会急剧下降,这时候使用隐马尔科夫模型(HMM)进行训练识别效果就会有明显提升,由于在传统语音识别中一般采用连续的高斯混合模型GMM来对状态输出密度函数进行刻画,因此又称为GMM-HMM构架。

同时,随着深度学习的发展,通过深度神经网络来完成声学建模,形成所谓的DNN-HMM构架来取代传统的GMM-HMM构架,在语音识别上也取得了很好的效果。

高斯混合模型

对于一个随机向量x,如果它的联合概率密度函数符合公式2-9,则称它服从高斯分布,并记为x∼N(µ,Σ)。

其中,µ为分布的期望,Σ为分布的协方差矩阵。高斯分布有很强的近似真实世界数据的能力,同时又易于计算,因此被广泛地应用在各个学科之中。但是,仍然有很多类型的数据不好被一个高斯分布所描述。这时候我们可以使用多个高斯分布的混合分布来描述这些数据,由多个分量分别负责不同潜在的数据来源。此时,随机变量符合密度函数。

其中,M为分量的个数,通常由问题规模来确定。

我们称认为数据服从混合高斯分布所使用的模型为高斯混合模型。高斯混合模型被广泛的应用在很多语音识别系统的声学模型中。考虑到在语音识别中向量的维数相对较大,所以我们通常会假设混合高斯分布中的协方差矩阵Σm为对角矩阵。这样既大大减少了参数的数量,同时可以提高计算的效率。

使用高斯混合模型对短时特征向量建模有以下几个好处:首先,高斯混合模型的具有很强的建模能力,只要分量总数足够多,高斯混合模型就可以以任意精度来逼近一个概率分布函数;另外,使用EM算法可以很容易地使模型在训练数据上收敛。对于计算速度和过拟合等问题,人们还研究出了参数绑定的GMM和子空间高斯混合模型(subspaceGMM)来解决。除了使用EM算法作最大似然估计以外,我们还可以使用和词或音素错误率直接相关的区分性的误差函数来训练高斯混合模型,能够极大地提高系统性能。因此,直到在声学模型中使用深度神经网络的技术出现之前,高斯混合模型一直是短时特征向量建模的不二选择。

但是,高斯混合模型同样具有一个严重的缺点:高斯混合模型对于靠近向量空间上一个非线性流形(manifold)上的数据建模能力非常差。例如,假设一些数据分布在一个球面两侧,且距离球面非常近。如果使用一个合适的分类模型,我们可能只需要很少的参数就可以将球面两侧的数据区分开。但是,如果使用高斯混合模型描绘他们的实际分布情况,我们需要非常多的高斯分布分量才能足够精确地刻画。这驱使我们寻找一个能够更有效利用语音信息进行分类的模型。

隐马尔科夫模型

我们现在考虑一个离散的随机序列,若转移概率符合马尔可夫性质,即将来状态和过去状态独立,则称其为一条马尔可夫链(MarkovChain)。若转移概率和时间无关,则称其为齐次(homogeneous)马尔可夫链。马尔可夫链的输出和预先定义好的状态一一对应,对于任意给定的状态,输出是可观测的,没有随机性。如果我们对输出进行扩展,使马尔可夫链的每个状态输出为一个概率分布函数。这样的话马尔可夫链的状态不能被直接观测到,只能通过受状态变化影响的符合概率分布的其他变量来推测。我们称以这种以隐马尔可夫序列假设来建模数据的模型为隐马尔可夫模型。

对应到语音识别系统中,我们使用隐马尔可夫模型来刻画一个音素内部子状态变化,来解决特征序列到多个语音基本单元之间对应关系的问题。

在语音识别任务中使用隐马尔可夫模型需要计算模型在一段语音片段上的可能性。而在训练的时候,我们需要使用Baum-Welch算法[23]学习隐马尔可夫模型参数,进行最大似然估计(MaximumLikelihoodEstimation,MLE)。Baum-Welch算法是EM(Expectation-Maximization)算法的一种特例,利用前后项概率信息迭代地依次进行计算条件期望的E步骤和最大化条件期望的M步骤。

语言模型

语言模型主要是刻画人类语言表达的方式习惯,着重描述了词与词在排列结构上的内在联系。在语音识别解码的过程中,在词内转移参考发声词典、词间转移参考语言模型,好的语言模型不仅能够提高解码效率,还能在一定程度上提高识别率。语言模型分为规则模型和统计模型两类,统计语言模型用概率统计的方法来刻画语言单位内在的统计规律,其设计简单实用而且取得了很好的效果,已经被广泛用于语音识别、机器翻译、情感识别等领域。

最简单又却又最常用的语言模型是N元语言模型(N-gramLanguageModel,N-gramLM)。N元语言模型假设当前在给定上文环境下,当前词的概率只与前N-1个词相关。于是词序列w1,...,wm的概率P(w1,...,wm)可以近似为

为了得到公式中的每一个词在给定上文下的概率,我们需要一定数量的该语言文本来估算。可以直接使用包含上文的词对在全部上文词对中的比例来计算该概率,即

对于在文本中未出现的词对,我们需要使用平滑方法来进行近似,如Good-Turing估计或Kneser-Ney平滑等。

解码与字典

解码器是识别阶段的核心组件,通过训练好的模型对语音进行解码,获得最可能的词序列,或者根据识别中间结果生成识别网格(lattice)以供后续组件处理。解码器部分的核心算法是动态规划算法Viterbi。由于解码空间非常巨大,通常我们在实际应用中会使用限定搜索宽度的令牌传递方法(tokenpassing)。

传统解码器会完全动态生成解码图(decodegraph),如著名语音识别工具HTK(HMMToolKit)中的HVite和HDecode等。这样的实现内存占用较小,但考虑到各个组件的复杂性,整个系统的流程繁琐,不方便高效地将语言模型和声学模型结合起来,同时更加难以扩展。现在主流的解码器实现会一定程度上使用预生成的有限状态变换器(FiniteStateTransducer,FST)作为预加载的静态解码图。这里我们可以将语言模型(G),词汇表(L),上下文相关信息(C),隐马尔可夫模型(H)四个部分分别构建为标准的有限状态变换器,再通过标准的有限状态变换器操作将他们组合起来,构建一个从上下文相关音素子状态到词的变换器。这样的实现方法额外使用了一些内存空间,但让解码器的指令序列变得更加整齐,使得一个高效的解码器的构建更加容易。同时,我们可以对预先构建的有限状态变换器进行预优化,合并和剪掉不必要的部分,使得搜索空间变得更加合理

语音识别技术的工作原理

首先,我们知道声音实际上是一种波。常见的mp3等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如WindowsPCM文件,也就是俗称的wav文件。wav文件里存储的除了一个文件头以外,就是声音波形的一个个点了。下图是一个波形的示例。

图中,每帧的长度为25毫秒,每两帧之间有25-10=15毫秒的交叠。我们称为以帧长25ms、帧移10ms分帧。

分帧后,语音就变成了很多小段。但波形在时域上几乎没有描述能力,因此必须将波形作变换。常见的一种变换方法是提取MFCC特征,根据人耳的生理特性,把每一帧波形变成一个多维向量,可以简单地理解为这个向量包含了这帧语音的内容信息。这个过程叫做声学特征提取。

至此,声音就成了一个12行(假设声学特征是12维)、N列的一个矩阵,称之为观察序列,这里N为总帧数。观察序列如下图所示,图中,每一帧都用一个12维的向量表示,色块的颜色深浅表示向量值的大小。

接下来就要介绍怎样把这个矩阵变成文本了。首先要介绍两个概念:

音素:单词的发音由音素构成。对英语,一种常用的音素集是卡内基梅隆大学的一套由39个音素构成的音素集。汉语一般直接用全部声母和韵母作为音素集,另外汉语识别还分有调无调,不详述。

状态:这里理解成比音素更细致的语音单位就行啦。通常把一个音素划分成3个状态。

语音识别是怎么工作的呢?实际上一点都不神秘,无非是:

第一步,把帧识别成状态。

第二步,把状态组合成音素。

第三步,把音素组合成单词。

如下图所示:

图中,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。

那每帧音素对应哪个状态呢?有个容易想到的办法,看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。比如下面的示意图,这帧在状态S3上的条件概率最大,因此就猜这帧属于状态S3。

那这些用到的概率从哪里读取呢?有个叫“声学模型”的东西,里面存了一大堆参数,通过这些参数,就可以知道帧和状态对应的概率。获取这一大堆参数的方法叫做“训练”,需要使用巨大数量的语音数据。

但这样做有一个问题:每一帧都会得到一个状态号,最后整个语音就会得到一堆乱七八糟的状态号,相邻两帧间的状态号基本都不相同。假设语音有1000帧,每帧对应1个状态,每3个状态组合成一个音素,那么大概会组合成300个音素,但这段语音其实根本没有这么多音素。如果真这么做,得到的状态号可能根本无法组合成音素。实际上,相邻帧的状态应该大多数都是相同的才合理,因为每帧很短。

解决这个问题的常用方法就是使用隐马尔可夫模型(HiddenMarkovModel,HMM)。这东西听起来好像很高深的样子,实际上用起来很简单:

第一步,构建一个状态网络。

第二步,从状态网络中寻找与声音最匹配的路径。

这样就把结果限制在预先设定的网络中,避免了刚才说到的问题,当然也带来一个局限,比如你设定的网络里只包含了“今天晴天”和“今天下雨”两个句子的状态路径,那么不管说些什么,识别出的结果必然是这两个句子中的一句。

那如果想识别任意文本呢?把这个网络搭得足够大,包含任意文本的路径就可以了。但这个网络越大,想要达到比较好的识别准确率就越难。所以要根据实际任务的需求,合理选择网络大小和结构。

搭建状态网络,是由单词级网络展开成音素网络,再展开成状态网络。语音识别过程其实就是在状态网络中搜索一条最佳路径,语音对应这条路径的概率最大,这称之为“解码”。路径搜索的算法是一种动态规划剪枝的算法,称之为Viterbi算法,用于寻找全局最优路径。

这里所说的累积概率,由三部分构成,分别是:

观察概率:每帧和每个状态对应的概率

转移概率:每个状态转移到自身或转移到下个状态的概率

语言概率:根据语言统计规律得到的概率

其中,前两种概率从声学模型中获取,最后一种概率从语言模型中获取。语言模型是使用大量的文本训练出来的,可以利用某门语言本身的统计规律来帮助提升识别正确率。语言模型很重要,如果不使用语言模型,当状态网络较大时,识别出的结果基本是一团乱麻。

这样基本上语音识别过程就完成了,这就是语音识别技术的工作原理。

语音识别技术的工作流程

一般来说,一套完整的语音识别系统其工作过程分为7步:

1、对语音信号进行分析和处理,除去冗余信息。

2、提取影响语音识别的关键信息和表达语言含义的特征信息。

3、紧扣特征信息,用最小单元识别字词。

4、按照不同语言的各自语法,依照先后次序识别字词。

5、把前后意思当作辅助识别条件,有利于分析和识别。

6、按照语义分析,给关键信息划分段落,取出所识别出的字词并连接起来,同时根据语句意思调整句子构成。

7、结合语义,仔细分析上下文的相互联系,对当前正在处理的语句进行适当修正。

语音识别原理有三点:

1、对语音信号中的语言信息编码是按照幅度谱的时间变化来进行;

2、由于语音是可以阅读的,也就是说声学信号可以在不考虑说话人说话传达的信息内容的前提下用多个具有区别性的、离散的符号来表示;

3、语音的交互是一个认知过程,所以绝对不能与语法、语义和用语规范等方面分裂开来。

预处理,其中就包括对语音信号进行采样、克服混叠滤波、去除部分由个体发音的差异和环境引起的噪声影响,此外还会考虑到语音识别基本单元的选取和端点检测问题。反复训练是在识别之前通过让说话人多次重复语音,从原始语音信号样本中去除冗余信息,保留关键信息,再按照一定规则对数据加以整理,构成模式库。再者是模式匹配,它是整个语音识别系统的核心部分,是根据一定规则以及计算输入特征与库存模式之间的相似度,进而判断出输入语音的意思。

前端处理,先对原始语音信号进行处理,再进行特征提取,消除噪声和不同说话人的发音差异带来的影响,使处理后的信号能够更完整地反映语音的本质特征提取,消除噪声和不同说话人的发音差异带来的影响,使处理后的信号能够更完整地反映语音的本质特征。

原文标题:语音识别技术概述

文章出处:【微信号:WW_CGQJS,微信公众号:传感器技术】欢迎添加关注!文章转载请注明出处。

语音识别研究综述

语言是人类最原始直接的一种交流方式,通俗易懂、便于理解.随着科技的发展,语言交流不再只存在于人与人之间,如何让机器“听懂”人类的语言并做出反应成为人工智能的重要课题,语音智能交互技术应运而生.作为其中重要一环的语音识别技术近年来不断发展,走出了实验室,随着人工智能进入人们的日常生活中.当今市场上语音识别技术相关的软件、商品涉及人类生活的方方面面,语音识别的实用性已经得到充分的印证.如今语音识别技术已经成为人类社会智能化的关键一步,能够极大提高人们生活的便捷度.

1语音识别技术的发展历程

语音识别技术始于20世纪50年代,贝尔实验室研发了10个孤立数字的语音识别系统,此后,语音识别相关研究大致经历了3个发展阶段.第1阶段,从20世纪50年代到90年代,语音识别仍处于探索阶段.这一阶段主要通过模板匹配—即将待识别的语音特征与训练中的模板进行匹配—进行语音识别.典型的方法包括动态时间规整(dynamictimewarping,DTW)技术和矢量量化(vectorquantification,VQ).DTW依靠动态规划(dynamicprogramming,DP)技术解决了语音输入输出不定长的问题;VQ则是对词库中的字、词等单元形成矢量量化的码本作为模板,再用输入的语音特征矢量与模板进行匹配.总体而言,这一阶段主要实现了小词汇量、孤立词的语音识别.20世纪80年代至21世纪初为第2阶段,这一阶段的语音识别主要以隐马尔科夫模型(hiddenMarkovmodel,HMM)为基础的概率统计模型为主,识别的准确率和稳定性都得到极大提升.该阶段的经典成果包括1990年李开复等研发的SPHINX系统[1],该系统以GMM-HMM(Gaussianmixturemodel-hiddenMarkovmodel)为核心框架,是有史以来第一个高性能的非特定人、大词汇量、连续语音识别系统.GMM-HMM结构在相当长时间内一直占据语音识别系统的主流地位,并且至今仍然是学习、理解语音识别技术的基石.此外,剑桥推出了以HMM为基础的语音识别工具包HTK(hiddenMarkovmodeltoolkit)[2].21世纪至今是语音识别的第3阶段.这一阶段的语音识别建立在深度学习基础上,得益于神经网络对非线性模型和大数据的处理能力,取得了大量成果.2009年Mohamed等[3]提出深度置信网络(deepbeliefnetwork,DBN)与HMM相结合的声学模型在小词汇量连续语音识别中取得成功.2012年深度神经网络与HMM相结合的声学模型DNN-HMM在大词汇量连续语音识别(largevocabularycontinuousspeechrecognition,LVCSR)中取得成功[4],掀起利用深度学习进行语音识别的浪潮.此后,以卷积神经网络(convolutionalneuralnetwork,CNN)、循环神经网络(recurrentneuralnetwork,RNN)等常见网络为基础的混合识别系统和端到端识别系统都获得了不错的识别结果和系统稳定性.迄今为止,以神经网络为基础的语音识别系统仍旧是国内外学者的研究热点.

我国的语音识别则起步于国家的“863计划”和“973计划”,中科院声学所等研究所以及顶尖高校尝试实现长时语音的汉语识别工作,如今中文语音识别技术已经达到了国际水准.2015年清华大学建立了第一个开源的中文语音数据库THCHS-30[5].2016年上海交通大学提出的非常深卷积网络(verydeepconvolutionalneuralnetworks,VDCNN)[6]提高了噪声语音识别的性能,并在此基础上进一步提出了非常深卷积残差网络(verydeepconvolutionalresidualnetwork,VDCRN)[7].百度于2014年、2016年依次推出了DeepSpeech[8]及其改进版本[9],并在2017年提出ColdFusion[10]以便于更好地利用语言学信息进行语音识别,该系统以LSTM-CTC(longshort-termmemory-connectionisttemporalclassification)的端到端模型为基础,在不同的噪声环境下实现了英语和普通话的语音识别.2018年科大讯飞提出的深度全序列卷积神经网络(deepfull-sequenceconvolutionneuralnetworks,DFCNN)[11]直接对语音信号进行建模,该模型采用的大量叠加卷积层能够储存更多历史信息,获得了良好的识别效果.同年,阿里巴巴提出低帧率深度前馈记忆网络(lowerframerate-deepfeedforwardsequentialmemorynetworks,LFR-DFSMN)[12],将低帧率算法和DFSMN算法相结合,使错误率降低了20%,解码速度却提升了近3倍.

总体而言,当前主流语音识别技术主要在大词汇量连续语音数据集上,基于深度神经网络进行模型构建和训练,面向不同应用场景需求和数据特点对现有的神经网络不断改进,相比于传统的统计方法取得了极大的性能提升.

2语音识别基础2.1语音识别概念

语音识别是利用机器对语音信号进行识别和理解并将其转换成相应文本和命令的技术,涉及到心理学、信号处理、统计学、数学和计算机等多门学科.其本质是一种模式识别,通过对未知语音和已知语音的比较,匹配出最优的识别结果.

根据面向的应用场景不同,语音识别存在许多不同的类型:从对说话人的要求考虑可分为特定人和非特定人系统;从识别内容考虑可分为孤立词识别和连续语音识别、命令及小词汇量识别和大词汇量识别、规范语言识别和口语识别;从识别的速度考虑还可分为听写和自然语速的识别等[13].

2.2传统语音识别基本原理

通常,语音识别过程大致分为两步:第1步,首先对语音信号提取特定的声学特征,然后对声学特征进行“学习”或者说是“训练”,即建立识别基本单元的声学模型和进行语言文法分析的语言模型;第2步是“识别”,根据识别系统的类型选择能够满足要求的识别方法,采用语音分析方法分析出这种识别方法所要求的语音特征参数,按照一定的准则和测度与系统模型进行比较,通过判决得出识别结果.

设一段语音信号经过特征提取得到特征向量序列为X=[x1,x2,…,xN],其中xi是一帧的特征向量,i=1,2,…,N,N为特征向量的数目.该段语音对应的文本序列设为W=[w1,w2,…,wM],其中wi为基本组成单元,如音素、单词、字符,i=1,2,…,M,M为文本序列的维度.从贝叶斯角度,语音识别的目标就是从所有可能产生特征向量X的文本序列中找到概率最大的W*,可以用公式表示为式(1)优化问题:

$egin{split}{W^*}=&argmathop{max}limits_WPleft({Wleft|X ight.} ight)=argmathop{max}limits_Wfrac{{Pleft({Xleft|W ight.} ight)Pleft(W ight)}}{{Pleft(X ight)}}\&proptoargmathop{max}limits_WPleft({Xleft|W ight.} ight)Pleft(W ight)end{split}$(1)

由式(1)可知,要找到最可能的文本序列必须使两个概率P(X|W)和P(W)的乘积最大,其中P(X|W)为条件概率,由声学模型决定;P(W)为先验概率,由语言模型决定.声学模型和语言模型对语音信号的表示越精准,得到的语音系统效果越准确.

从语音识别系统的构成来讲,一套完整的语音识别系统包括预处理、特征提取、声学模型、语言模型以及搜索算法等模块,其结构示意图如图1所示.其中较为重要的特征提取、声学模型和语言模型将在第2.2节中详细阐述.

图1Fig.1图1语音识别系统结构图

预处理包括预滤波、采样、模/数转换、预加重、分帧加窗、端点检测等操作.其中,信号分帧是将信号数字化后的语音信号分成短时信号作为识别的基本单位.这主要是因为语音信号是非平稳信号,且具有时变特性,不易分析;但其通常在短时间范围(一般为10–30ms)内其特性基本不变,具有短时平稳性,可以用来分析其特征参数.

搜索模块是指在训练好声学模型和语言模型后,根据字典搜索最优路径,即最可能的输出词序列.传统的语音识别解码建立在加权有限状态转换器(weightedfinitestatetransducer,WFST)所构成的动态网络上,将HMM状态、词典和语法等结合起来.目前端到端模型中主流的搜索算法为BeamSearch等.

2.2.1特征提取

通常,在进行语音识别之前,需要根据语音信号波形提取有效的声学特征.特征提取的性能对后续语音识别系统的准确性极其关键,因此需要具有一定的鲁棒性和区分性.目前语音识别系统常用的声学特征有梅尔频率倒谱系数(Mel-frequencycepstrumcoefficient,MFCC)、感知线性预测系数(perceptuallinearpredictivecepstrumcoefficient,PLP)、线性预测倒谱系数(linearpredictioncepstralcoefficient,LPCC)、梅尔滤波器组系数(Melfilterbank,Fbank)等.

MFCC是最为经典的语音特征,其提取过程如图2所示.MFCC的提取模仿了人耳的听觉系统,计算简单,低频部分也有良好的频率分辨能力,在噪声环境下具有一定的鲁棒性.因此,现阶段语音识别系统大多仍采用MFCC作为特征参数,并取得了不错的识别效果.

图2Fig.2图2MFCC的特征提取过程2.2.2声学模型

声学模型是对等式(1)中的P(X|W)进行建模,在语音特征与音素之间建立映射关系,即给定模型后产生语音波形的概率,其输入是语音信号经过特征提取后得到的特征向量序列.声学模型整个语音识别系统中最重要的部分,只有学好了发音,才能顺利和发音词典、语言模型相结合得到较好的识别性能.

GMM-HMM是最为常见的一种声学模型,该模型利用HMM对时间序列的建模能力,描述语音如何从一个短时平稳段过渡到下一个短时平稳段;此外,HMM的隐藏状态和观测状态的数目互不相干,可以解决语音识别中输入输出不等长的问题.该声学模型中的每个HMM都涉及到3个参数:初始状态概率、状态转移概率和观测概率,其中观测概率依赖于特征向量的概率分布,采用高斯混合模型GMM进行建模.

GMM-HMM声学模型在语音识别领域有很重要的地位,其结构简单且区分度训练成熟,训练速度也相对较快.然而该模型中的GMM忽略时序信息,每帧之间相对孤立,对上下文信息利用并不充分.且随着数据量的上升,GMM需要优化的参数急剧增加,这给声学模型带来了很大的计算负担,浅层模型也难以学习非线性的特征变换.

深度学习的兴起为声学建模提供了新途径,学者们用深度神经网络(deepneuralnetwork,DNN)代替GMM估计HMM的观测概率,得到了DNN-HMM语音识别系统,其结构如图3所示.DNN-HMM采用DNN的每个输出节点来估计给定声学特征的条件下HMM某个状态的后验概率.DNN模型的训练阶段大致分为两个步骤:第1步是预训练,利用无监督学习的算法训练受限波尔兹曼机(restrictedBoltzmannmachine,RBM),RBM算法通过逐层训练并堆叠成深层置信网络(deepbeliefnetworks,DBN);第2步是区分性调整,在DBN的最后一层上面增加一层Softmax层,将其用于初始化DNN的模型参数,然后使用带标注的数据,利用传统神经网络的学习算法(如BP算法)学习DNN的模型参数.相比于GMM-HMM,DNN-HMM具有更好的泛化能力,擅长举一反三,帧与帧之间可以进行拼接输入,特征参数也更加多样化,且对所有状态只需训练一个神经网络.文献[4]证实了神经网络在大词汇量语音识别领域的出色表现.

图3Fig.3图3基于DNN-HMM的语音识别系统框架

通过将DNN取代GMM对HMM观测概率进行声学建模,DNN-HMM相比GMM-HMM在语音识别性能方面有很大提升;然而,DNN对于时序信息的上下文建模能力以及灵活性等方面仍有欠缺.针对这一问题,对上下文信息利用能力更强的循环神经网络RNN[14]和卷积神经网络CNN[15]被引入声学建模中.在RNN的网络结构中,当前时刻的输出依赖记忆与当前时刻的输入,这对于语音信号的上下文相关性建模非常有优势.然而,RNN存在因梯度消失和梯度爆炸而难以训练的问题,于是研究人员引入门控机制,得到梯度传播更加稳定的长短时记忆(longshort-termmemory,LSTM)网络.LSTM-RNN对语音的上下文信息的利用率更高,识别的准确率与鲁棒性也均有提升,这些在文献[16]中能得到证实.CNN的优势在于卷积的不变性和池化技术,对上下文信息有建模能力,对噪声具有鲁棒性,并且可以减少计算量.时延神经网络(timedelayneuralnetwork,TDNN)是CNN对大词汇量连续语音识别的成功应用[17].CLDNN(CNN-LSTM-DNN)综合了三者的优点,实验结果也证明了三者的结合得到了正向的收益[18].

总体而言,近年来语音识别中对声学模型的研究仍集中在神经网络,针对不同的应用场景和需求对上述经典网络结构进行综合和改进[19-21],以期训练更复杂、更强大的声学模型.

2.2.3语言模型

语言模型是用来预测字符(词)序列产生的概率,判断一个语言序列是否为正常语句,也就是解决如何计算等式(1)中的P(W).传统的语言模型n-gram[22]是一种具有强马尔科夫独立性假设的模型,它认为任意一个词出现的概率仅与前面有限的n–1个字出现的概率有关,其公式表达如下:

$egin{split}Pleft(W ight)=&prodlimits_{i=1}^m{P({w_i}|{w_1},{w_2},cdots,{w_{i-1}})}\&proptoprodlimits_{i=1}^m{P({w_i}|{w_{i-n+1}},cdots,{w_{i-1}})}end{split}$(2)$egin{split}&Pleft({{w_i}|{w_{i-n+1}},{w_{i-n+2}},cdots,{w_{i-1}}} ight)=hfill\&frac{{countleft({{w_{i-n+1}},{w_{i-n+2}},cdots,{w_{i-1}},{w_i}} ight)}}{{countleft({{w_{i-n+1}},{w_{i-n+2}},cdots,{w_{i-1}}} ight)}}hfillend{split}$(3)

然而,由于训练语料数据不足或者词组使用频率过低等常见因素,测试集中可能会出现训练集中未出现过的词或某个子序列未在训练集中出现,这将导致n-gram语言模型计算出的概率为零,这种情况被称为未登录词(out-of-vocabulary,OOV)问题.为缓解这个问题,通常采用一些平滑技术,常见的平滑处理有Discounting、Interpolation和Backing-off等.n-gram模型的优势在于其参数易训练,可解释性极强,且完全包含了前n–1个词的全部信息,能够节省解码时间;但难以避免维数灾难的问题,此外n-gram模型泛化能力弱,容易出现OOV问题,缺乏长期依赖.

随着深度学习的发展,语言模型的研究也开始引入深度神经网络.从n-gram模型可以看出当前的词组出现依赖于前方的信息,因此很适合用循环神经网络进行建模.Bengio等将神经网络用于语言模型建模[23],提出用词向量的概念,用连续变量代替离散变量,利用神经网络去建模当前词出现的概率与其前n–1个词之间的约束关系.这种模型能够降低模型参数的数量,具有一定的泛化能力,能够较好地解决数据稀疏带来的问题,但其对取得长距离信息仍束手无策.为进一步解决问题,RNN被用于语言模型建模[24].RNNLM中隐含层的循环能够获得更多上下文信息,通过在整个训练集上优化交叉熵来训练模型,使得网络能够尽可能建模出自然语言序列与后续词之间的内在联系.其优势在于相同的网络结构和超参数可以处理任意长度的历史信息,能够利用神经网络的表征学习能力,极大程度避免了未登录问题;但无法任意修改神经网络中的参数,不利于新词的添加和修改,且实时性不高.

语言模型的性能通常采用困惑度(perplexity,PPL)进行评价.PPL定义为序列的概率几何平均数的倒数,其公式定义如下:

$egin{split}&Pleft({{w_i}|{w_{i-n+1}},{w_{i-n+2}},cdots,{w_{i-1}}} ight)hfill\&=frac{{countleft({{w_{i-n+1}},{w_{i-n+2}},cdots,{w_{i-1}},{w_i}} ight)}}{{countleft({{w_{i-n+1}},{w_{i-n+2}},cdots,{w_{i-1}}} ight)}}hfillend{split}$(4)

PPL越小表示在给定历史上出现下一个预测词的概率越高,该模型的效果越好.

2.3端到端语音识别

传统的语音识别由多个模块组成,彼此独立训练,但各个子模块的训练目标不一致,容易产生误差累积,使得子模块的最优解并不一定是全局最优解.针对这个问题,学者们提出了端到端的语音识别系统,直接对等式(1)中的概率P(W|X)进行建模,将输入的语音波形(或特征矢量序列)直接转换成单词、字符序列.端到端的语音识别将声学模型、语言模型、发音词典等模块被容纳至一个系统,通过训练直接优化最终目标,如词错误率(worderrorrate,WER)、字错误率(charactererrorrate,CER),极大地简化了整个建模过程.目前端到端的语音识别方法主要有基于连接时序分类(connectionisttemporalclassification,CTC)[25]和基于注意力机制(attentionmodel)[26]两类方法及其改进方法.

CTC引入空白符号(blank)解决输入输出序列不等长的问题,主要思想是最大化所有可能对应的序列概率之和,无需考虑语音帧和字符的对齐关系,只需要输入和输出就可以训练.CTC实质是一种损失函数,常与LSTM联合使用.基于CTC的模型结构简单,可读性较强,但对发音词典和语言模型的依赖性较强,且需要做独立性假设.RNN-Transducer模型[27]是对CTC的一种改进,加入一个语言模型预测网络,并和CTC网络通过一层全连接层得到新的输出,这样解决了CTC输出需做条件独立性假设的问题,能够对历史输出和历史语音特征进行信息累积,更好地利用语言学信息提高识别准确率.

基于注意力机制的端到端模型最开始被用于机器翻译,能够自动实现两种语言的不同长度单词序列之间的转换.该模型主要由编码网络、解码网络和注意力子网络组成.编码网络将语音特征序列经过深层神经网络映射成高维特征序列,注意力网络分配权重系数,解码网络负责输出预测的概率分布.该模型不需要先验对齐信息,也不用音素序列间的独立性假设,不需要发音词典等人工知识,可以真正实现端到端的建模.2016年谷歌提出了一个Listen-Attend-Spell(LAS)模型[28],其结构框图如图4所示.LAS模型真正实现了端到端,所有组件联合训练,也无独立性假设要求.但LAS模型需要对整个输入序列之后进行识别,因此实时性较差,之后也有许多学者对该模型不断改进[29-31].

图4Fig.4图4LAS模型框架图

目前端到端的语音识别系统仍是语音识别领域的研究热点,基于CTC[32-34]、attention机制[35]以及两者结合的系统[36,37]都取得了非常不错的成果.其中Transformer-Transducer模型[38]将RNN-T模型中的RNN替换为Transformer提升了计算效率,还控制attention模块上下文时间片的宽度,满足流式语音识别的需求.2020年谷歌提出的ContextNet模型[39],采用Squeeze-and-Excitation模块获取全局信息,并通过渐进降采样和模型缩放在减小模型参数和保持识别准确率之间取得平衡.在Transformer模型捕捉长距离交互的基础上加入了CNN擅长的局部提取特征得到Conformer模型[40],实现以更少的参数达到更好的精度.实际上端到端的语音识别系统在很多场景的识别效果已经超出传统结构下的识别系统,但距其落地得到广泛商业应用仍有一段路要走.

3语音识别的难点与热点

语音识别作为人机交互的关键技术一直是科技应用领域的研究热点.目前,语音识别技术从理论研究到产品的开发都已取得了很多的成果,然而,相关研究及应用落地仍然面临很大挑战,具体可归纳为以下几方面:

鲁棒性语音识别:目前,理想条件下(低噪声加近场)的语音识别准确率已经达到一定程度.然而,在实际一些复杂语音环境下,如声源远场等情景,低信噪比、房间混响、回声干扰以及多声源信号干扰等因素,使得语音识别任务面临很大挑战.因此,针对复杂环境研究鲁棒语音识别是目前语音识别领域的研究难点和热点.当前,针对复杂环境下的语音识别研究大致可以分为4个方向:(1)在语音识别前端,利用信号处理技术提高信号质量:采用麦克风阵列技术采集远场声源信号,然后通过声源定位[41]、回声消除[42]、声源分离或语音增强[43]等提高语音信号质量.例如,文献[44]在基于深度学习的自适应声学回声消除(acousticechocancellation,AEC)中加入了背景关注模块以适应部署环境的变化,以提高语音信号质量;文献[45]以深度聚类为框架提出了结合频谱和空间信息的盲源分离方法;文献[46]利用以基于生成式对抗网络(generativeadversialnetworks,GAN)为基础框架的增强网络进行噪声抑制,从而提高目标语音信号质量;(2)寻找新的鲁棒性特征,尽可能消除非目标语音信号的影响:例如,伽马通滤波器倒谱系数(Gammatonefrequencycepstrumcoefficient,GFCC)[47]等听觉特征参数更适合拟合人耳基底膜的选择性,符合人耳听觉特征;或者,采用自动编码器[48]、迁移学习[49]等多种方式提取更鲁棒的特征;(3)模型的改进与自适应[50]:上海交通大学提出的VDCNN[6]以及VDCRN[7]通过加深卷积层提升算法的鲁棒性,文献[51]利用GAN中生成器与判别器的相互博弈和瓶颈特征构建声学模型,文献[52]采用teacher-studentlearning的方式以干净语音训练的声学模型作为教师模型训练噪声环境下的学生模型;(4)多模态数据融合[53]:当在高噪声环境或多说话人造成语音重叠的情况下,目标语音信号容易被噪声或其他非目标声源(干扰信号)“淹没”,这时仅凭拾音设备捕捉的“语音”信号往往无法获得良好的识别性能;这时,将语音信号和其他信号如声带的振动信号[54]、嘴部的图像信号[55]等进行融合,更好地提升识别系统的鲁棒性.例如,文献[56]以RNN-T为框架,提出多模态注意力机制对音频和视频信息进行融合,以提高识别性能;文献[57]同样基于RNN-T,但利用vision-to-phonememodel(V2P)提取视觉特征,连同音频特征以相同的帧频输入至编码器,取得了良好的识别性能.

低资源语音识别:这是对各种小语种语言识别研究的统称.小语种不同于方言,有独立完整的发音体系,各异性较强但数据资源匮乏,难以适应以汉语、英语为主的语音识别系统,声学建模需要利用不充分的数据资源训练得到尽可能多的声学特征.解决这一问题的基本思路可以概括为从主流语言的丰富资源中提取共性训练出可以公用的模型,在此基础上训练小语种模型.文献[58]为解决共享隐藏层中会学到不必要的特定信息这一问题,提出了一个共享层和特有层平行的模型,它通过对抗性学习确保模型能够学习更多不同语种间的不变特征.然而,小语种种类繁多,为了单独一种建立识别系统耗费过多资源并不划算,因此现在主要研究多语种融合的语音识别系统[59,60].

语音的模糊性:各种语言中都存在相似发音的词语,不同的讲话者存在不同的发音习惯以及口音、方言等问题,母语者和非母语者说同一种语言也存在不同的口音,难以针对单独的口音构建模型.针对多口音建模[61]的问题,现有的方法一般可以分为与口音无关和与口音相关两大类,其中与口音无关的模型普遍表现更好一些.文献[62]尝试通过特定口音模型的集合建立统一的多口音识别模型;文献[63]通过多任务学习将声学模型和口音识别分类器联合;文献[64]则基于GAN构建了预训练网络从声学特征中区分出不变的口音.

低计算资源:精度高效果好的神经网络模型往往需要大量的计算资源且规模巨大,但移动设备(如手机、智能家居等)计算能力和内存有限,难以支撑,因此需要对模型进行压缩及加速.目前针对深度学习模型采用的压缩方法有网络剪枝、参数量化、知识蒸馏等.文献[65]采用网络剪枝的方法构建了动态稀疏神经网络(dynamicsparsityneuralnetworks,DSNN),提供不同稀疏级别的网络模型,通过动态调整以适应不同资源和能量约束的多种硬件类型的能力.文献[66]通过量化网络参数减少内存占用并加快计算速度.知识蒸馏能够将复杂模型的知识迁入小模型,已应用于对语音识别系统的语言模型[67]、声学模型[68]和端到端模型[29,69,70]等进行压缩.文献[71]利用知识蒸馏将视听两模态的识别系统迁移至单听觉模型,缩小了模型规模,加快了训练速度,却并不影响精度.

4总结与展望4.1总结

本文主要对语音识别的发展、系统结构研究、热点及难点进行了阐述.目前主流的语音识别方法大多基于深度神经网络.这些方法大体分为两类:一类是采用一定的神经网络取代传统语音识别方法中的个别模块,如特征提取、声学模型或语言模型等;另一类是基于神经网络实现端到端的语音识别.相比于传统的识别方法,基于深度神经网络的语音识别方法在性能上有了显著的提升.在低噪音加近场等理想环境下,当前的语音识别技术研究已经达到了商业需求.然而,在实际应用中存在各种复杂情况,如声源远场、小语种识别、说话人口音、专业语言场景等,这些情况使得复杂场景下的语音识别应用落地仍面临挑战.此外,尽管当前深度学习在语音识别的应用确实提高了识别率等性能,但效果好的模型往往规模复杂且庞大、需要的数据资源较为冗余,不适合用于移动设备(如手机、智能穿戴设备等);此外,小语种、多口音、不同方言等的识别性能仍然差强人意.总之,当前语音识别领域已取得丰富的研究成果,但仍有很长一段路要走.

4.2展望

在未来很长一段时间内,基于深度神经网络的语音识别仍是主流;面向不同应用场景,根据语音信号特点对现有神经网络结构进行改进仍是未来研究重点.大体上,未来语音识别领域的研究方向可大致归纳如下.

(1)模型压缩与加速.尽管当前深度学习在语音识别的应用确实提高了识别率等性能,但效果好的模型往往规模复杂且庞大、需要的数据资源较为冗余,不适合用于移动设备(如手机、智能穿戴设备等),因此对基于深度神经网络的语音识别系统进行网络模型压缩和加速,将是未来语音识别的研究方向之一.

(2)数据迁移.在面对小样本数据或复杂问题时,迁移学习是一种有效的方式.在语音识别领域中,采用迁移学习的方式对小语种、方言口音或含噪语音进行识别也是未来的研究方向之一.

(3)多模态数据融合.对于一些复杂的语音场景(高噪声、混响、多源干扰等),可以利用语音信号和其他信号(如图像信号、振动信号等)进行融合,以提高语音识别性能,也是未来研究研究方向之一.

(4)多技术融合,提高认知智能.当前大多数语音识别算法只关注识别文字内容的正确性;然而,许多智能语音交互的应用(如QA问答、多轮对话等)还涉及到语义的理解.因此,将语音识别技术结合其他技术[72-75]如自然语言处理(naturallanguageprocessing,NLP)相结合以提升识别性能也是未来研究方向之一.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇