博舍

语音识别技术介绍(超级详细) 语音识别技术概述怎么写

语音识别技术介绍(超级详细)

精美而实用的网站,分享优质编程教程,帮助有志青年。千锤百炼,只为大作;精益求精,处处斟酌;这种教程,看一眼就倾心。

关于网站|关于站长|如何完成一部教程|公众号|联系我们|网站地图

Copyright©2012-2022biancheng.net,冀ICP备2022013920号,冀公网安备13110202001352号

语音识别研究综述

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

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)相结合以提升识别性能也是未来研究方向之一.

什么是语音识别技术原理是什么应用领域介绍

语音识别作为解放人类双手的沟通方式,一直是人类与机器进行交流的最佳方式。随着科学技术的不断进步,语音识别技术在生活中的应用越来越广泛,那么,什么是语音识别技术?原理是什么?本文将具体介绍。

1.语音识别技术

语音识别(AutomaticSpeechRecognition,ASR)技术也称自动语音识别技术,是指机器通过识别和理解过程将语音信号转化为文本或指令的技术。语音识别以语音为研究对象,涉及到数字信号处理、计算机、模式识别、语音学、语言学、心理学、生理学、数理统计学等多门学科领域,是一门综合性很强的技术,在军事、交通、医学、工业、商业等领域都有着广泛的应用。语音识别的目标是让机器能够像人一样准确理解语音信号所承载的信息,从而实现人机交互。语音识别系统可以分成三类:孤立词语音识别系统、连接词语音识别系统与连续语音识别系统。

2.语音识别技术的发展

语音识别技术的研究最早开始于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]提出使用受限波尔兹曼机(restrictedBoltzmannmachine,RBM)对神经网络的节点做初始化,即深度置信网络(deepbeliefnetwork,DBN)。DBN解决了深度神经网络训练过程中容易陷入局部最优的问题,自此深度学习的大潮正式拉开。

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

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

3.语音识别技术的工作流程

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

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

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

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

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

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

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

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

4.语音识别的基本原理

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

5.语音识别技术的工作原理

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

在开始语音识别之前,有时需要把首尾端的静音切除,降低对后续步骤造成的干扰。这个静音切除的操作一般称为VAD,需要用到信号处理的一些技术。

要对声音进行分析,需要对声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧。分帧操作一般不是简单的切开,而是使用移动窗函数来实现。

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

至此,声音就成了一个12行(假设声学特征是12维)、N列的一个矩阵,称之为观察序列,这里N为总帧数。

那,怎样把这个矩阵变成文本了。首先要介绍两个概念:

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

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

那,语音识别是怎么工作的呢?

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

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

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

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

那每帧音素对应哪个状态呢?有个容易想到的办法,看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。

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

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

解决这个问题的常用方法就是使用隐马尔可夫模型(HiddenMarkovModel,HMM)。

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

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

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

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

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

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

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

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

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

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

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

6.语音识别技术应用领域

(1)桌面/移动设备应用

语音识别技术在PC机/移动终端上的应用范围较广,目前可以用语音识别来进行身份认证、编辑文本或者语音控制。典型的包括语音输入法、语音助手、音频识别软件等。

(2)嵌入式应用

应用的范畴广,根据市场需求考虑不同的嵌入式硬件平台,目前嵌入式语音识别系统主流是智能手机、车载系统、智能家居、智能终端的集成应用。

(3)电信级系统应用

语音识别技术应用于企业自动语音服务,可以为企业提供--种智能化的并且相对安全的自动服务方式。包括,企业的用户服务中心、电话银行、股票交易、电子商务等应用领城。

(4)Web应用

把语音技术与Web应用结合,例如语音浏览器、语音搜索引擎,网上语音聊天室及语音网游等。

(5)行业特殊应用领域

为安全部门提供声纹识别应用方案,进行自动的身份辨认,在国家安全、侦破等特殊领域,市场专业性强,进入壁垒高,同业竞争者很少。

以上梳理了语音识别技术的定义、原理、发展历程等信息,希望对你有所帮助,当前,随着人机交互技术的发展,语音识别技术有了更广阔的发展空间,是未来科技的一大趋势。如果你想了解更多相关内容,敬请关注三个皮匠报告的行业知识栏目。

本文由@2200发布于三个皮匠报告网站,未经授权禁止转载。

推荐阅读:

语音识别ai应用场景哪些?ai语音识别技术难点分析

什么是语音合成?包括哪些技术?应用领域介绍

什么是智能语音交互技术?应用于哪些领域?优缺点介绍

2022年中国智能语音发展情况分析,top10企业排名一览

本文标签语音识别技术  语音识别技术原理  语音识别技术应用领域  语音识别技术发展  

语音识别(一)——概述

语音识别(一)——概述2018-04-16概述历史相关任务学校书籍教程blog项目HTKCMUSphinxSPTKJuliusHTSPraat公司数据集概述

虽然现在的语音识别中,DL已经应用的非常广泛了,但是语音识别终究还是有一些领域知识的,将之归类为DL或者ML,似乎都不妥当。特形成本系列文章,用以描述automaticspeechrecognition的领域知识和传统方法。

说起来还是要感谢DL,不然按照传统的行业划分,几乎不会有人同时研究CV和ASR。DL的出现,实际上大大降低了算法的领域迁移成本,领域知识的重要性相对下降了。

历史

早在电子计算机出现之前,人们就有了让机器识别语音的梦想。1920年生产的“RadioRex”玩具狗可能是世界上最早的语音识别器,当有人喊“Rex”的时候,这只狗能够从底座上弹出来。

但实际上它所用到的技术并不是真正的语音识别,而是通过一个弹簧,这个弹簧在接收到500赫兹的声音时会自动释放,而500赫兹恰好是人们喊出“Rex”中元音的第一个共振峰。

参考:

https://zhuanlan.zhihu.com/p/82872145

语音识别技术简史

https://mp.weixin.qq.com/s/0yZ_8uGDXyxZKAEEdmkebA

完整声学极简史

相关任务

语音相关的任务主要有:

Automaticspeechrecognition(ASR):将一个speech序列映射为一个character序列。

Speechtotexttranslation(ST):将source语言上的一个speech序列映射为target语言上的一个character序列。

Texttospeech(TTS):将一个character序列映射为一个speech序列。

Speechenhancement(SE):将一个noisy的speech序列映射为一个clean的speech序列。

Speechseparation(SS):分离不同说话人的speech,或者分离人声和背景声音。

Speech-to-speechtranslation(S2ST)

学校

ASR领域最牛的高校主要是美国的CMU、JohnsHopkinsUniversity、英国的CambridgeUniversity和日本的东京大学。

书籍

《SpeechandLanguageProcessing:Anintroductiontonaturallanguageprocessing,computationallinguistics,andspeechrecognition》,DanielJurafsky&JamesH.Martin著。

DanielJurafsky,1962年生,UCB本科(1983)+博士(1992)。斯坦福大学教授。个人主页:https://web.stanford.edu/~jurafsky/

JamesH.Martin,哥伦比亚大学本科+UCB博士。UniversityofColoradoBoulder教授。个人主页:http://www.cs.colorado.edu/~martin/

这本书比较老了(1999年),但毕竟是本1000页左右的书,传统方法该说的基本都说了。主要问题在于NLP和语义学的内容较多,相对来说ASR的内容就少了些。

这本书在2008年出了第2版(改动较小),如今第3版也在酝酿中,草稿可在如下网页获得:

https://web.stanford.edu/~jurafsky/slp3/

新版大幅增加了深度学习的内容。

《SpokenLanguageProcessing-AGuidetoTheory,AlgorithmandSystemDevelopment》,黄学东等著。

这本书基本上是ASR传统方法的大全了,无论理论还是工程实践都有相当大的篇幅,但也有些老了(2001年)。

《解析深度学习:语音识别实践》,俞栋、邓力著。

这本书算是中文写的比较好的教程了,而且DL的篇幅很大,内容非常新。(2016年)

教程

http://tts.speech.cs.cmu.edu/courses/11492/schedule.html

SpeechProcessing。CMU的这个教程主要包含ASR(AutomaticSpeechRecognition)、TTS(TextToSpeech)和SDS(SpokenDialogSystems)等三方面的内容。

AlanWBlack,苏格兰计算机科学家。CoventryUniversity本科(1984)+UniversityofEdinburgh硕博(1984,1993)。CMU教授。语音处理专家。个人主页:http://www.cs.cmu.edu/~awb/他的主页上有好多Speech、NLP方面的教程。他本人长得太像Java之父JamesGosling了。

http://web.stanford.edu/class/cs224s/index.html

CS224S/LINGUIST285-SpokenLanguageProcessing。Stanford的教程相对比较新,DL涉及的比较多。

http://www.inf.ed.ac.uk/teaching/courses/asr/index.html

AutomaticSpeechRecognition。这个课程至少从2012年就开始了,每年都有更新。

http://speech.ee.ntu.edu.tw/DSP2018Spring/

国立台湾大学李琳山教授的课程。

李琳山,国立台湾大学本科(1974)+Stanford博士(1977)。国立台湾大学教授。

http://www.cs.cmu.edu/afs/cs/user/bhiksha/WWW/courses/11-756.asr/spring2014/

Theoryandpracticeofspeechrecognitionsystems。CMU的BhikshaRaj教授的课程,只有ASR的内容。

顺便说一句,BhikshaRaj的主页上还有好多其他课程。

https://cs.nyu.edu/~eugenew/asr13/

这是MIT博士EugeneWeinstein在NYU当助教的时候(2013年)开的课程。

http://berlin.csie.ntnu.edu.tw/Courses/Speech%20Processing/Speech%20Processing_Main_2016S.htm

SpeechProcessing。国立台湾师范大学的陈柏琳教授的课程。陈教授教学多年,主页上还有好多其他课程。

https://www.isip.piconepress.com/courses/msstate/ece_8463/lectures/current/index.html

MississippiStateUniversity:ECE8463:fundamentalsofspeechrecognition

https://www.isip.piconepress.com/courses/msstate/ece_7000_speech/index.html

ECE8000:specialtopicsinspeechrecognition

https://www.isip.piconepress.com/courses/msstate/ece_8990_info/index.html

ECE8990:InformationTheory。这门课偏重数学理论,包括Entropy、MarkovProcesses、KolmogorovComplexity等内容,适合用于补数学基础。

http://courses.cs.tamu.edu/rgutier/csce630_f14/

CSCE630:SpeechProcessing

http://courses.cs.tamu.edu/rgutier/cpsc689_s07/

CPSC689-604:SpecialtopicsinSpeechandFaceRecognition

https://mp.weixin.qq.com/s/oaOkla9gnUKr2C6PSjE2BA

语音识别中的End-to-End模型教程(附178页PDF全文下载)

https://mp.weixin.qq.com/s/i7JaDoU2L7uRYsw8FTR3jA

语音研究进阶指南

blog

http://www.cnblogs.com/welen/

https://blog.csdn.net/weiqiwu1986

上面两个都是welen的blog,而且内容貌似还不重复。。。

http://blog.csdn.net/xmdxcsj

一个语音识别的blog

https://blog.csdn.net/shichaog

一个语音识别+Kaldi的blog

https://blog.csdn.net/quhediegooo/

一个语音识别的blog

https://blog.csdn.net/dearwind153/article/category/6506891

这哥们的blog很杂,这是语音相关的专栏

http://www.cnblogs.com/JarvanWang/

一个语音识别+Kaldi的blog

https://www.zhihu.com/question/65516424

语音识别kaldi该如何学习?

http://vsooda.github.io/archive/

一个语音识别+DL的blog

https://zhuanlan.zhihu.com/codingmath

一个语音识别的blog

https://blog.csdn.net/jojozhangju

一个Kaldi+声源定位的blog

项目

https://en.wikipedia.org/wiki/List_of_speech_recognition_software

Listofspeechrecognitionsoftware

https://mp.weixin.qq.com/s/LsVhMaHrh8JgfpDra6KSPw

横向对比5大开源语音识别工具包

https://github.com/lingochamp/kaldi-ctc

英语流利说开源的kaldi-ctc

https://zhuanlan.zhihu.com/p/23177950

kaldi-ctc:CTCEnd-to-EndASR

https://mp.weixin.qq.com/s/VkKFQ0fOOHJw0p7Z4EDugQ

绝佳的ASR学习方案:这是一套开源的中文语音识别系统

HTK

HiddenMarkovModelToolkit是CambridgeUniversity开发的语音识别的工具包。它是GMM-HMM时代最为流行的语音识别工具,但近来流行度不如Kaldi。

官网:

http://htk.eng.cam.ac.uk/

HTKBook不仅是使用手册,也是一本介绍原理的书。

http://speech.ee.ntu.edu.tw/homework/DSP_HW2-1/htkbook.pdf

CMUSphinx

CMUSphinx是李开复的博士课题项目,后来成为了CMU的长期项目。洪小文、黄学东也先后参与过。该项目比较早的将HMM应用于语音识别,这在当时算是一个重大创新。

李开复,1961年生,ColumbiaUniversity本科(1983)+CMU博士(1988)。先后供职于Apple、SGI、Microsoft、Google。现为创新工场董事长。

洪小文,1963年生,台湾大学本科+CMU博士。先后供职于Apple、Microsoft,现为微软亚洲研究院院长。

黄学东,1962年生,湖南大学本科(1982)+清华大学硕士(1984)+UniversityofEdinburgh博士(1989)。现为微软首席语音科学家。

RajReddy,1937年生,印度裔美国计算机科学家。印度UniversityofMadras本科(1958)+澳大利亚UniversityofNewSouthWales硕士(1960)+StanfordUniversity博士。CMU教授,首位亚裔图灵奖得主(1994)。他还是印度RajivGandhiUniversityofKnowledgeTechnologies创始人和InternationalInstituteofInformationTechnology,Hyderabad主席。他是李开复、洪小文的博士导师,黄学东的博士后导师。

官网:

https://cmusphinx.github.io/

注意:还有一个类似Elasticsearch的文本搜索引擎也叫Sphinx。它的官网是:

http://sphinxsearch.com/

SPTK

TheSpeechSignalProcessingToolkit是日本的几个科学家开发的语音识别工具库。

官网:

http://sp-tk.sourceforge.net/

Julius

Julius是另一个日本人开发的语音识别工具库。

官网:

http://julius.osdn.jp/en_index.php

HTS

HMM/DNN-basedSpeechSynthesisSystem也是日本人开发的工具库,主要用于语音合成。

官网:

http://hts.sp.nitech.ac.jp

Praat

Praat是一款跨平台的多功能语音学专业软件,由UniversityofAmsterdam的PaulBoersma和DavidWeenink开发。主要用于对数字化的语音信号进行分析、标注、处理及合成等实验,同时生成各种语图和文字报表。

官网:

http://www.fon.hum.uva.nl/praat/

公司

http://www.aispeech.com/

思必驰

http://www.soundai.com/

声智科技。偏重于语音信号处理。

https://zhuanlan.zhihu.com/chenxl

声智科技创始人陈孝良的专栏

数据集

http://www.speech.cs.cmu.edu/databases/an4/

TheCMUAudioDatabases。这个数据集非常老了(1991年),只有64M。

http://download.tensorflow.org/data/speech_commands_v0.01.tar.gz

TensorFlow提供的SpeechCommandsDatasets

还有相关的工具:

https://github.com/petewarden/extract_loudest_section

抽取一段wav文件中声音最大的那部分

https://www.kaggle.com/davids1992/speech-representation-and-data-exploration/notebook

包含对SpeechCommandsDatasets的数据处理过程的blog

Google的声音理解团队发布了由200万个人标记的10秒YouTube视频音轨组成的数据集,标签来自600多个音频事件类,数据集命名为Audioset。

https://zhuanlan.zhihu.com/p/157842463

深入解读VGGish

https://mp.weixin.qq.com/s/6D3y-cNT_rJUesCbSW0snw

基于VGGish的声音类别分类在语音机器人的应用实践

您的打赏,是对我的鼓励

请访问这里提交评论

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

上一篇

下一篇