什么是语音识别
如今,许多行业都在运用语音技术来帮助企业和消费者节省时间,甚至是挽救生命。一些示例包括:
汽车:语音识别器通过在车载收音机中启用声控导航系统和搜索功能来改善驾驶员安全性。
科技:虚拟助手越来越多地融入到我们的日常生活当中,尤其是在我们的移动设备上。我们可以在智能手机上(例如通过GoogleAssistant或AppleSiri)使用语音命令来访问虚拟助手以及执行语音搜索等任务,或者通过我们的扬声器、AmazonAlexa或MicrosoftCortana来播放音乐。它们只会继续融入到我们日常使用的产品中,从而推动“物联网”的发展。
医疗保健:医生和护士利用听写应用程序来捕获和记录患者的诊断和治疗记录。
销售:在销售中有多个地方会用到语音识别技术。它可以帮助呼叫中心转录客户与客服之间的数千个电话,从而确定常见的呼叫模式和问题。AI聊天机器人还可以通过网页与客户交谈,回答常见查询并解决基本请求,而无需等待联络中心客服来处理。在这两种情况下,语音识别系统都可以帮助缩短解决消费者问题的时间。
安全:随着技术融入我们的日常生活,安全协议变得越来越重要。基于语音的认证可增加一个可行的安全层。
语音识别技术介绍(超级详细)
精美而实用的网站,分享优质编程教程,帮助有志青年。千锤百炼,只为大作;精益求精,处处斟酌;这种教程,看一眼就倾心。
关于网站|关于站长|如何完成一部教程|公众号|联系我们|网站地图
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)相结合以提升识别性能也是未来研究方向之一.
语音识别技术原理是什么 讯飞语音识别技术特点介绍【详解】
语音识别技术原理简介
自动语音识别技术(AutoSpeechRecognize,简称ASR)所要解决的问题是让计算机能够“听懂”人类的语音,将语音中包含的文字信息“提取”出来。ASR技术在“能听会说”的智能计算机系统中扮演着重要角色,相当于给计算机系统安装上“耳朵”,使其具备“能听”的功能,进而实现信息时代利用“语音”这一最自然、最便捷的手段进行人机通信和交互。
语音识别技术所面临的问题是非常艰巨和困难的。尽管早在二十世纪五十年代,世界各国就开始了对这项技术孜孜不倦的研究,特别是最近二十年,国内外非常多的研究机构和企业都加入到语音识别技术的研究领域,投入了极大的努力,也取得了丰硕的成果,但是直到今天,距离该技术得到完美解决还存在着巨大的差距,不过这并不妨碍不断进步的语音识别系统在许多相对受限的场合下获得成功的应用。
如今,语音识别技术已经发展成为涉及声学、语言学、数字信号处理、统计模式识别等多学科技术的一项综合性技术。基于语音识别技术研发的现代语音识别系统在很多场景下获得了成功的应用,不同任务条件下所采用的技术又会有所不同。下图是在一个相对通用的任务条件下的语音识别系统示意图。语音识别系统构建过程整体上包括两大部分:训练和识别。训练通常是离线完成的,对预先收集好的海量语音、语言数据库进行信号处理和知识挖掘,获取语音识别系统所需要的“声学模型”和“语言模型”;而识别过程通常是在线完成的,对用户实时的语音进行自动识别。识别过程通常又可以分为“前端”和“后端”两大模块:“前端”模块主要的作用是进行端点检测(去除多余的静音和非说话声)、降噪、特征提取等;“后端”模块的作用是利用训练好的“声学模型”和“语言模型”对用户说话的特征向量进行统计模式识别(又称“解码”),得到其包含的文字信息,此外,后端模块还存在一个“自适应”的反馈模块,可以对用户的语音进行自学习,从而对“声学模型”和“语音模型”进行必要的“校正”,进一步提高识别的准确率。
语音识别技术发展历史及现状
语音识别的研究工作大约开始于20世纪50年代,当时AT&TBell实验室基于共振峰提取技术实现了第一个可识别十个英文数字的语音识别系统——Audry系统。
60年代,计算机的应用推动了语音识别的发展。这时期的重要成果是提出了动态时间规划(DP)和线性预测分析技术(LPC),其中后者较好地解决了语音信号产生模型的问题,对语音识别的发展产生了深远影响。
70年代,语音识别领域取得了较大进展。在理论上,LP技术得到进一步发展,动态时间归正技术(DTW)基本成熟,特别是提出了矢量量化(VQ)和隐马尔可夫模型(HMM)理论。在实践上,实现了基于线性预测倒谱和DTW技术的特定人孤立语音识别系统。
80年代,MFCC的参数提取技术和HMM模型的深入使用使得语音识别技术得到进一步的发展,语音识别的问题逐步在理论体系上得到了比较完整和准确的描述,同时在实践上又逐步研发出效率较高的解决算法。
90年代以来,在美国国防部的Darpa测试、Ears计划、近期的Gales计划,以及我国863计划等推动下,一大批高水平的研究机构和企业加入到语音识别的研究领域,极大地推动了语音识别技术的发展和应用。语音识别系统已经从过去的小词汇量、孤立词识别、特定人识别、安静环境等简单任务逐步发展到大词汇量、连续语音、非特定人、噪声环境下的识别任务,从单纯的语音识别任务发展到语音翻译任务,从实验室系统走向商用系统。
讯飞语音识别技术
讯飞语音识别技术的理念是提供信息时代人机沟通的最佳方式。在核心技术研究方面,科大讯飞公司一直秉承着“顶天立地”的方针。“顶天”,就是要求在基础技术上不断创新,不断突破;“立地”,就是技术要和实际应用相结合,最终能够产生经济效益和社会效益。讯飞语音识别技术的研究继承了这样的优良传统,在基础技术方面锐意进取,不断创新,特别是在特征鲁棒性、模型区分性训练、大词汇量语音识别解码技术、语音模糊搜索等方面提出了多项创新性观点,并多次在国内外著名的学术期刊、会议及专刊上进行发表,取得了丰硕的成果。在技术与实际应用相结合方面,也充分考虑了应用系统之间的差异,为客户量身定制,提供了语音命令识别、智能语音搜索、语音检索等技术,并正在开展针对自然连续语流的会议内容转写识别整套解决方案。
下面是科大讯飞对语音识别技术的整体规划:
命令词识别技术—在受限的命令词或者语法范围提供自动语音识别服务,需要很少的计算资源,但是要求用户能够“配合”语音识别系统,尽量说“集内词”。
智能的人机交互技术—结合大词汇量语音识别、自然语言理解、信息检索等技术提供特定领域内相对开放输入的语音识别服务,对用户的限制较为宽松,在所限定的领域内可以以自然语言的方式进行人机交互。
语音转写技术—在无特殊限定的范围内完成对连续自然语音进行内容转写,目前还需要较大的计算资源。
语音搜索技术—语音技术和搜索技术的结合,提供最便捷的信息搜索服务。
语音识别技术基础理解
语音识别是以语音为研究对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语言。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。语音识别是一门涉及面很广的交叉学科,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。语音识别技术正逐步成为计算机信息处理技术中的关键技术,语音技术的应用已经成为一个具有竞争性的新兴高技术产业。
语音识别的基本原理语音识别系统本质上是一种模式识别系统,包括特征提取、模式匹配、参考模式库等三个基本单元,它的基本结构如下图所示:
image.png未知语音经过话筒变换成电信号后加在识别系统的输入端,首先经过预处理,再根据人的语音特点建立语音模型,对输入的语音信号进行分析,并抽取所需的特征,在此基础上建立语音识别所需的模板。而计算机在识别过程中要根据语音识别的模型,将计算机中存放的语音模板与输入的语音信号的特征进行比较,根据一定的搜索和匹配策略,找出一系列最优的与输入语音匹配的模板。然后根据此模板的定义,通过查表就可以给出计算机的识别结果。显然,这种最优的结果与特征的选择、语音模型的好坏、模板是否准确都有直接的关系。
语音识别系统构建过程整体上包括两大部分:训练和识别。训练通常是离线完成的,对预先收集好的海量语音、语言数据库进行信号处理和知识挖掘,获取语音识别系统所需要的“声学模型”和“语言模型”;而识别过程通常是在线完成的,对用户实时的语音进行自动识别。识别过程通常又可以分为“前端”和“后端”两大模块:“前端”模块主要的作用是进行端点检测(去除多余的静音和非说话声)、降噪、特征提取等;“后端”模块的作用是利用训练好的“声学模型”和“语言模型”对用户说话的特征向量进行统计模式识别(又称“解码”),得到其包含的文字信息,此外,后端模块还存在一个“自适应”的反馈模块,可以对用户的语音进行自学习,从而对“声学模型”和“语音模型”进行必要的“校正”,进一步提高识别的准确率。
语音识别是模式识别的一个分支,又从属于信号处理科学领域,同时与语音学、语言学、数理统计及神经生物学等学科有非常密切的关系。语音识别的目的就是让机器“听懂”人类口述的语言,包括了两方面的含义:其一是逐字逐句听懂并转化成书面语言文字;其二是对口述语言中所包含的要求或询问加以理解,做出正确响应,而不拘泥于所有词的正确转换。
自动语音识别技术有三个基本原理:首先语音信号中的语言信息是按照短时幅度谱的时间变化模式来编码;其次语音是可以阅读的,即它的声学信号可以在不考虑说话人试图传达的信息内容的情况下用数十个具有区别性的、离散的符号来表示;第三语音交互是一个认知过程,因而不能与语言的语法、语义和语用结构割裂开来。
声学模型:语音识别系统的模型通常由声学模型和语言模型两部分组成,分别对应于语音到音节概率的计算和音节到字概率的计算。
搜索:连续语音识别中的搜索,就是寻找一个词模型序列以描述输入语音信号,从而得到词解码序列。搜索所依据的是对公式中的声学模型打分和语言模型打分。在实际使用中,往往要依据经验给语言模型加上一个高权重,并设置一个长词惩罚分数。
系统实现:语音识别系统选择识别基元的要求是,有准确的定义,能得到足够数据进行训练,具有一般性。英语通常采用上下文相关的音素建模,汉语的协同发音不如英语严重,可以采用音节建模。系统所需的训练数据大小与模型复杂度有关。模型设计得过于复杂以至于超出了所提供的训练数据的能力,会使得性能急剧下降。
听写机:大词汇量、非特定人、连续语音识别系统通常称为听写机。其架构就是建立在前述声学模型和语言模型基础上的HMM拓扑结构。训练时对每个基元用前向后向算法获得模型参数,识别时,将基元串接成词,词间加上静音模型并引入语言模型作为词间转移概率,形成循环结构,用Viterbi算法进行解码。针对汉语易于分割的特点,先进行分割再对每一段进行解码,是用以提高效率的一个简化方法。
对话系统:用于实现人机口语对话的系统称为对话系统。受目前技术所限,对话系统往往是面向一个狭窄领域、词汇量有限的系统,其题材有旅游查询、订票、数据库检索等等。其前端是一个语音识别器,识别产生的N-best候选或词候选网格,由语法分析器进行分析获取语义信息,再由对话管理器确定应答信息,由语音合成器输出。由于目前的系统往往词汇量有限,也可以用提取关键词的方法来获取语义信息。
语音识别技术原理-工作原理解读首先,我们知道声音实际上是一种波。常见的mp3等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如WindowsPCM文件,也就是俗称的wav文件。wav文件里存储的除了一个文件头以外,就是声音波形的一个个点了。下图是一个波形的示例。
image.png图中,每帧的长度为25毫秒,每两帧之间有25-10=15毫秒的交叠。我们称为以帧长25ms、帧移10ms分帧。
分帧后,语音就变成了很多小段。但波形在时域上几乎没有描述能力,因此必须将波形作变换。常见的一种变换方法是提取MFCC特征,根据人耳的生理特性,把每一帧波形变成一个多维向量,可以简单地理解为这个向量包含了这帧语音的内容信息。这个过程叫做声学特征提取。实际应用中,这一步有很多细节,声学特征也不止有MFCC这一种,具体这里不讲。
至此,声音就成了一个12行(假设声学特征是12维)、N列的一个矩阵,称之为观察序列,这里N为总帧数。观察序列如下图所示,图中,每一帧都用一个12维的向量表示,色块的颜色深浅表示向量值的大小。
image.png消除噪声和不同说话人的发音差异带来的影响接下来就要介绍怎样把这个矩阵变成文本了。首先要介绍两个概念:
音素:单词的发音由音素构成。对英语,一种常用的音素集是卡内基梅隆大学的一套由39个音素构成的音素集,参见TheCMUPronouncingDictionary。汉语一般直接用全部声母和韵母作为音素集,另外汉语识别还分有调无调,不详述。
状态:这里理解成比音素更细致的语音单位就行啦。通常把一个音素划分成3个状态。
语音识别是怎么工作的呢?实际上一点都不神秘,无非是:
第一步,把帧识别成状态(难点)。第二步,把状态组合成音素。第三步,把音素组合成单词。如下图所示:
image.png图中,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。
那每帧音素对应哪个状态呢?有个容易想到的办法,看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。比如下面的示意图,这帧在状态S3上的条件概率最大,因此就猜这帧属于状态S3。
image.png那这些用到的概率从哪里读取呢?有个叫“声学模型”的东西,里面存了一大堆参数,通过这些参数,就可以知道帧和状态对应的概率。获取这一大堆参数的方法叫做“训练”,需要使用巨大数量的语音数据,训练的方法比较繁琐,这里不讲。
但这样做有一个问题:每一帧都会得到一个状态号,最后整个语音就会得到一堆乱七八糟的状态号,相邻两帧间的状态号基本都不相同。假设语音有1000帧,每帧对应1个状态,每3个状态组合成一个音素,那么大概会组合成300个音素,但这段语音其实根本没有这么多音素。如果真这么做,得到的状态号可能根本无法组合成音素。实际上,相邻帧的状态应该大多数都是相同的才合理,因为每帧很短。
解决这个问题的常用方法就是使用隐马尔可夫模型(HiddenMarkovModel,HMM)。这东西听起来好像很高深的样子,实际上用起来很简单:
第一步,构建一个状态网络。第二步,从状态网络中寻找与声音最匹配的路径。这样就把结果限制在预先设定的网络中,避免了刚才说到的问题,当然也带来一个局限,比如你设定的网络里只包含了“今天晴天”和“今天下雨”两个句子的状态路径,那么不管说些什么,识别出的结果必然是这两个句子中的一句。
那如果想识别任意文本呢?把这个网络搭得足够大,包含任意文本的路径就可以了。但这个网络越大,想要达到比较好的识别准确率就越难。所以要根据实际任务的需求,合理选择网络大小和结构。
搭建状态网络,是由单词级网络展开成音素网络,再展开成状态网络。语音识别过程其实就是在状态网络中搜索一条最佳路径,语音对应这条路径的概率最大,这称之为“解码”。路径搜索的算法是一种动态规划剪枝的算法,称之为Viterbi算法,用于寻找全局最优路径。
image.png这里所说的累积概率,由三部分构成,分别是:
观察概率:每帧和每个状态对应的概率转移概率:每个状态转移到自身或转移到下个状态的概率语言概率:根据语言统计规律得到的概率其中,前两种概率从声学模型中获取,最后一种概率从语言模型中获取。语言模型是使用大量的文本训练出来的,可以利用某门语言本身的统计规律来帮助提升识别正确率。语言模型很重要,如果不使用语言模型,当状态网络较大时,识别出的结果基本是一团乱麻。
这样基本上语音识别过程就完成了,这就是语音识别技术的原理。
语音识别技术原理-语音识别系统的工作流程一般来说,一套完整的语音识别系统其工作过程分为7步:
①对语音信号进行分析和处理,除去冗余信息。②提取影响语音识别的关键信息和表达语言含义的特征信息。③紧扣特征信息,用最小单元识别字词。④按照不同语言的各自语法,依照先后次序识别字词。⑤把前后意思当作辅助识别条件,有利于分析和识别。⑥按照语义分析,给关键信息划分段落,取出所识别出的字词并连接起来,同时根据语句意思调整句子构成。⑦结合语义,仔细分析上下文的相互联系,对当前正在处理的语句进行适当修正。音识别系统基本原理框图
image.png语音识别系统基本原理结构如图所示。语音识别原理有三点:①对语音信号中的语言信息编码是按照幅度谱的时间变化来进行;②由于语音是可以阅读的,也就是说声学信号可以在不考虑说话人说话传达的信息内容的前提下用多个具有区别性的、离散的符号来表示;③语音的交互是一个认知过程,所以绝对不能与语法、语义和用语规范等方面分裂开来。
预处理,其中就包括对语音信号进行采样、克服混叠滤波、去除部分由个体发音的差异和环境引起的噪声影响,此外还会考虑到语音识别基本单元的选取和端点检测问题。反复训练是在识别之前通过让说话人多次重复语音,从原始语音信号样本中去除冗余信息,保留关键信息,再按照一定规则对数据加以整理,构成模式库。再者是模式匹配,它是整个语音识别系统的核心部分,是根据一定规则以及计算输入特征与库存模式之间的相似度,进而判断出输入语音的意思。
前端处理,先对原始语音信号进行处理,再进行特征提取,消除噪声和不同说话人的发音差异带来的影响,使处理后的信号能够更完整地反映语音的本质特征提取,消除噪声和不同说话人的发音差异带来的影响,使处理后的信号能够更完整地反映语音的本质特征。
用深度学习进行语音识别机器学习并不总是一个黑盒如果你知道神经机器翻译是如何工作的,那么你可能会猜到,我们可以简单地将声音送入神经网络中,并训练使之生成文本:
image.png一个大问题是语速不同。一个人可能很快地说出「hello!」而另一个人可能会非常缓慢地说「heeeelllllllllllllooooo!」。这产生了一个更长的声音文件,也产生了更多的数据。这两个声音文件都应该被识别为完全相同的文本「hello!」而事实证明,把各种长度的音频文件自动对齐到一个固定长度的文本是很难的一件事情。
为了解决这个问题,我们必须使用一些特殊的技巧,并进行一些深度神经网络以外的特殊处理。让我们看看它是如何工作的吧!
将声音转换成比特(Bit)声音是作为波(wave)的形式传播的。我们如何将声波转换成数字呢?让我们使用我说的「hello」这个声音片段举个例子:
image.png我说「hello」的波形
声波是一维的,它在每个时刻都有一个基于其高度的值(声波其实是二维的,有时间,还有振幅(即这个基于高度的值))。让我们把声波的一小部分放大看看:
image.png为了将这个声波转换成数字,我们只记录声波在等距点的高度:
image.png给声波采样
这被称为采样(sampling)。我们每秒读取数千次,并把声波在该时间点的高度用一个数字记录下来。这基本上就是一个未压缩的.wav音频文件。
「CD音质」的音频是以44.1khz(每秒44100个读数)进行采样的。但对于语音识别,16khz(每秒16000个采样)的采样率就足以覆盖人类语音的频率范围了。
让我们把「Hello」的声波每秒采样16000次。这是前100个采样:
image.png每个数字表示声波在一秒钟的16000分之一处的振幅。
数字采样小助手因为声波采样只是间歇性的读取,你可能认为它只是对原始声波进行粗略的近似估计。我们的读数之间有间距,所以我们必然会丢失数据,对吧?
image.png数字采样能否完美重现原始声波?那些间距怎么办?但是,由于采样定理,我们知道我们可以利用数学,从间隔的采样中完美重建原始声波——只要我们的采样频率比期望得到的最高频率快至少两倍就行。我提这一点,是因为几乎每个人都会犯这个错误,并误认为使用更高的采样率总是会获得更好的音频质量。其实并不是。
预处理我们的采样声音数据我们现在有一个数列,其中每个数字代表1/16000秒的声波振幅。
我们可以把这些数字输入到神经网络中,但是试图直接分析这些采样来进行语音识别仍然很困难。相反,我们可以通过对音频数据进行一些预处理来使问题变得更容易。
让我们开始吧,首先将我们的采样音频分成每份20毫秒长的音频块。这是我们第一个20毫秒的音频(即我们的前320个采样):
image.png将这些数字绘制为简单的折线图,我们就得到了这20毫秒内原始声波的大致形状:
image.png虽然这段录音只有****1/50****秒的长度,但即使是这样短暂的录音,也是由不同频率的声音复杂地组合在一起的。其中有一些低音,一些中音,甚至有几处高音。但总的来说,就是这些不同频率的声音混合在一起,才组成了人类的语音。为了使这个数据更容易被神经网络处理,我们将把这个复杂的声波分解成一个个组成部分。我们将分离低音部分,再分离下一个最低音的部分,以此类推。然后将(从低到高)每个频段(frequencyband)中的能量相加,我们就为各个类别的音频片段创建了一个指纹(fingerprint)。想象你有一段某人在钢琴上演奏C大调和弦的录音。这个声音是由三个音符组合而成的:C、E和G。它们混合在一起组成了一个复杂的声音。我们想把这个复杂的声音分解成单独的音符,以此来分辨C、E和G。这和语音识别是一样的道理。我们需要傅里叶变换**(FourierTransform)来做到这一点。它将复杂的声波分解为简单的声波。一旦我们有了这些单独的声波,我们就将每一份频段所包含的能量加在一起。最终得到的结果便是从低音(即低音音符)到高音,每个频率范围的重要程度。以每50hz为一个频段的话,我们这20毫秒的音频所含有的能量从低频到高频就可以表示为下面的列表:
image.png列表中的每个数字表示那份50Hz的频段所含的能量
不过,把它们画成这样的图表会更加清晰
image.png你可以看到,在我们的20毫秒声音片段中有很多低频能量,然而在更高的频率中并没有太多的能量。这是典型「男性」的声音。
如果我们对每20毫秒的音频块重复这个过程,我们最终会得到一个频谱图(每一列从左到右都是一个20毫秒的块):
image.png「hello」声音剪辑的完整声谱
频谱图很酷,因为你可以在音频数据中实实在在地看到音符和其他音高模式。对于神经网络来说,相比于原始声波,从这种数据中寻找规律要容易得多。因此,这就是我们将要实际输入到神经网络中去的数据表示方式。
从短声音识别字符现在我们有了格式易于处理的音频,我们将把它输入到深度神经网络中去。神经网络的输入将会是20毫秒的音频块。对于每个小的音频切片(audioslice),神经网络都将尝试找出当前正在说的声音所对应的字母。
image.png我们将使用一个循环神经网络——即一个拥有记忆,能影响未来预测的神经网络。这是因为它预测的每个字母都应该能够影响它对下一个字母的预测。例如,如果我们到目前为止已经说了「HEL」,那么很有可能我们接下来会说「LO」来完成「Hello」。我们不太可能会说「XYZ」之类根本读不出来的东西。因此,具有先前预测的记忆有助于神经网络对未来进行更准确的预测。
当通过神经网络跑完我们的整个音频剪辑(一次一块)之后,我们将最终得到一份映射(mapping),其中标明了每个音频块和其最有可能对应的字母。这是我说那句「Hello」所对应的映射的大致图案:
image.png我们的神经网络正在预测我说的那个词很有可能是「HHHEE_LL_LLLOOO」。但它同时认为我说的也可能是「HHHUU_LL_LLLOOO」,或者甚至是「AAAUU_LL_LLLOOO」。
我们可以遵循一些步骤来整理这个输出。首先,我们将用单个字符替换任何重复的字符:
·HHHEE_LL_LLLOOO变为HE_L_LO·HHHUU_LL_LLLOOO变为HU_L_LO·AAAUU_LL_LLLOOO变为AU_L_LO然后,我们将删除所有空白:
·HE_L_LO变为HELLO·HU_L_LO变为HULLO·AU_L_LO变为AULLO这让我们得到三种可能的转写——「Hello」、「Hullo」和「Aullo」。如果你大声说出这些词,所有这些声音都类似于「Hello」。因为神经网络每次只预测一个字符,所以它会得出一些纯粹表示发音的转写。例如,如果你说「Hewouldnotgo」,它可能会给出一个「Hewudnetgo」的转写。
在我们可能的转写「Hello」、「Hullo」和「Aullo」中,显然「Hello」将更频繁地出现在文本数据库中(更不用说在我们原始的基于音频的训练数据中了),因此它可能就是正解。所以我们会选择「Hello」作为我们的最终结果,而不是其他的转写。
参考:https://zhuanlan.zhihu.com/p/24703268http://dataunion.org/28416.html
语音识别算法有哪些
语音识别算法有哪些本文列举了几种不同的语音识别算法。
第一种:基于动态时间规整(DynamicTimeWarping)的算法
在连续语音识别中仍然是主流方法。
该方法的运算量较大,但技术上较简单,识别正确率高。
在小词汇量、孤立字(词)识别系统中,也已有许多改进的DTW算法被提出。例如,利用频率尺度的DTW算法进行孤立字(词)识别的方法。
第二种:基于参数模型的隐马尔可夫模型(HMM)的方法
该算法主要用于大词汇量的语音识别系统,它需要较多的模型训练数据,较长的训练和识别时间,而且还需要较大的内存空间。
一般连续隐马尔可夫模型要比离散隐马尔可夫模型计算量大,但识别率要高。
第三种:基于非参数模型的矢量量化(VQ)的方法
该方法所需的模型训练数据,训练和识别时间,工作存储空间都很小。
但是VQ算法对于大词汇量语音识别的识别性能不如HMM好。
在孤立字(词)语音识别系统中得到了很好的应用。
另外,还有基于人工神经网络(ANN)的算法和混合算法,如ANN/HMM法,FSVQ/HMM法等。
更多语音识别算法如下:
卷积神经网络
深度学习神经网络
BP神经网络
RBF神经网络
模糊聚类神经网络
改进的T-S模糊神经网络
循环神经网络
小波神经网络
混沌神经网络
小波混沌神经网络
神经网络和遗传算法
动态优化神经网络
K均值和神经网络集成
HMM与自组织神经网络的结合
正交基函数对向传播过程神经网络
HMM和新型前馈型神经网络
特征空间随机映射
SVM多类分类算法
特征参数归一化
多频带谱减法
独立感知理论
分段模糊聚类算法VQ-HMM
优化的竞争算法
双高斯GMM特征参数
MFCC和GMM
MFCCs和PNN
SBC和SMM
MEL倒谱系数和矢量量化
DTW
LPCC和MFCC
隐马尔科夫模型HMM
语音识别特征提取方法语音识别对特征参数有如下要求:
1.能将语音信号转换为计算机能够处理的语音特征向量
2.能够符合或类似人耳的听觉感知特性
3.在一定程度上能够增强语音信号、抑制非语音信号
常用特征提取方法有如下几种:
(1)线性预测分析(LinearPredictionCoefficients,LPC)
拟人类的发声原理,通过分析声道短管级联的模型得到的。假设系统的传递函数跟全极点的数字滤波器是相似的,通常用12-16个极点就可以描述语音信号的特征。所以对于n时刻的语音信号,我们可以用之前时刻的信号的线性组合近似的模拟。然后计算语音信号的采样值和线性预测的采样值。并让这两者之间达到均方的误差(MSE)最小,就可以得到LPC。
(2)感知线性预测系数(PerceptualLinearPredictive,PLP)
一种基于听觉模型的特征参数。该参数是一种等效于LPC的特征,也是全极点模型预测多项式的一组系数。不同之处是PLP是基于人耳听觉,通过计算应用到频谱分析中,将输入语音信号经过人耳听觉模型处理,替代LPC所用的时域信号,这样的优点是有利于抗噪语音特征的提取。
(3)Tandem特征和Bottleneck特征
这是两种利用神经网络提取的两类特征。Tandem特征是神经网络输出层节点对应类别的后验概率向量降维并与MFCC或者PLP等特征拼接得到。Bottleneck特征是用一种特殊结构的神经网络提取,这种神经网络的其中一个隐含层节点数目比其他隐含层小的多,所以被称之为Bottleneck(瓶颈)层,输出的特征就是Bottleneck特征。
(4)基于滤波器组的Fbank特征(Filterbank)
亦称MFSC,Fbank特征的提取方法就是相当于MFCC去掉最后一步的离散余弦变换,跟MFCC特征相比,Fbank特征保留了更多的原始语音数据。
(5)线性预测倒谱系数(LinearPredictiveCepstralCoefficient,LPCC)
基于声道模型的重要特征参数。LPCC是丢弃了信号生成过程中的激励信息。之后用十多个倒谱系数可以代表共振峰的特性。所以可以在语音识别中取得很好的性能。
(6)梅尔频率倒谱系数(MelFrequencyCepstrumCoefficient,MFCC)
基于人耳听觉特性,梅尔频率倒谱频带划分是在Mel刻度上等距划分的,频率的尺度值与实际频率的对数分布关系更符合人耳的听觉特性,所以可以使得语音信号有着更好的表示。1980年由Davis和Mermelstein搞出来的。从那时起。在语音识别领域,MFCC可谓是鹤立鸡群,一枝独秀。
Q:MFCC为何一枝独秀
人通过声道产生声音,声道的shape决定了发出怎样的声音。声道的shape包括舌头,牙齿等。如果我们可以准确的知道这个形状,那么我们就可以对产生的音素phoneme进行准确的描述。声道的形状在语音短时功率谱的包络中显示出来。而MFCC就是一种准确描述这个包络的一种特征。
声谱图
处理语音信号,如何去描述它很重要,因为不同的描述方式放映它不同的信息,而声谱图的描述方式是最利于观测和理解的。
由上图可知,这段语音被分为很多帧,每帧语音都对应于一个频谱(通过短时FFT计算),频谱表示频率与能量的关系。在实际使用中,频谱图有三种,即线性振幅谱、对数振幅谱、自功率谱(对数振幅谱中各谱线的振幅都作了对数计算,所以其纵坐标的单位是dB(分贝)。这个变换的目的是使那些振幅较低的成分相对高振幅成分得以拉高,以便观察掩盖在低幅噪声中的周期信号)。
先将其中一帧语音的频谱通过坐标表示出来,如上图(a)。旋转90度,得到图(b)。把这些幅度映射到一个灰度级表示,得到了图(c)。这样操作的原因是为了增加时间维度,,得到一个随着时间变化的频谱图,这个就是描述语音信号的声谱图(spectrogram)。这样就可以显示一段语音而不是一帧语音的频谱,而且可以直观的看到静态和动态的信息。
倒谱分析(CepstrumAnalysis)
下面是一个语音的频谱图。峰值就表示语音的主要频率成分,我们把这些峰值称为共振峰(formants),而共振峰就是携带了声音的辨识属性,用它就可以识别不同的声音。因此,需要把它提取出来。要提取的不仅是共振峰的位置,还得提取它们转变的过程。所以我们提取的是频谱的包络(SpectralEnvelope)。这包络就是一条连接这些共振峰点的平滑曲线。
由上图可以看出,原始的频谱由两部分组成:包络和频谱的细节。因此需要把这两部分分离开,就可以得到包络了。按照下图的方式进行分解,在给定logX[k]的基础上,求得logH[k]和logE[k]满足logX[k]=logH[k]+logE[k]。
由上面这个图我们可以看到,包络主要是低频成分,而高频主要是频谱的细节。把它俩叠加起来就是原来的频谱信号了。即,h[k]是x[k]的低频部分,因此将x[k]通过一个低通滤波器就可以得到h[k]了,也就是频谱的包络。
以上解卷过程的专业术语叫做同态信号处理,(另一种方法为基于线性变换)。语音本身可以看成是声道冲击信息(包括话者个性信息、语义信息,表现为频谱低频成分)经过声门激励的一个响应函数,在时域上表现为卷积形式。为将二者分离开来,求得声道共振特征和基音周期,需要把这种非线性问题转化为线性问题。第一步通过FFT将其变成了乘性信号(时域的卷积相当于频域的乘积);第二步通过取对数将乘性信号转化为加性信号;第三步进行逆变换,使其恢复为卷性信号。此时,虽然前后均是时域序列,但它们所处的离散时域显然不同,所以后者称为倒谱频域。计算过程如下图所示。
更多精彩阅读:语音识别的两个方法_语音识别的应用有哪些语音识别的优缺点_语音识别功能介绍怎么实现语音识别_手机语音识别怎么设置语音识别设置能删除吗_语音识别系统工作流程