cn

数据解决方案

请输入姓名

手机号码格式错误

请输入联系电话

请输入公司名称

请输入正确的工作邮箱

请输入数据需求

提交成功!感谢您支持数据堂。

填写格式错误请重新填写

确定

数据需求不能小于5个字且不能为纯数字

https://www.datatang.com

https://www.datatang.ai

m.datatang.ai

深度学习与语音识别

作者:数据堂 发布时间:2023-03-30

语音识别技术(ASR)经历了一段很漫长的发展时间。


从上个世纪70年代开始就已经有很多人开始系统的探索如何用计算机进行语音识别了。直到2000年前后,较为完整的句子语音识别才在实验室条件下有了较成熟的实现。然而较低的准确率导致其无法运用到实际生产环境中去。直到2010年左右,通过引入深度神经网络和计算力强大的GPU服务器,语音识别终于能在实验室环境下媲美人类的识别准确率,初步具备了在生产环境中应用的可能性。

 

本期技术分享将相对系统的介绍语音识别的基本原理和多种深度模型是如何运用在语音识别当中的。也会对现在语音识别技术所面临的问题加以阐述。


语音识别技术的基本原理


语音识别可以转化这样一个问题:对于特定音频序列,其对应的文字序列是什么呢?

 

让我们省略复杂的数学推算,直接从结果出发。上述这个问题其实只涉及到两件事,一个是语音对应的文字是什么?另一个是这段文字看起来像不像正常人说话?当两个问题都满足的时候,那我们就能够得到所需要的文字结果了。

 

相对应的,语音识别系统将解决第一个问题的模型叫语音模型,解决第二问题的模型叫做语言模型。

对于不采用深度神经网络的传统语音识别系统通常会将两个模型分开来做,比如分别采用隐马尔科夫模型和高斯混合模型来实现两个系统等等。网上这方面的资料不胜枚举,这里不再详述。从结果上来讲,这种传统语音识别模型在实验室条件下能表现还算不错,但很难达到人类识别标准,而在生产环境下就更难以应用了。

 

我们将重点放到深度神经网络的应用上。一个简单粗暴的思路就是用神经网络代替上述语音模型或者语言模型。这种思路在不改变现有的整体框架下,可以有效地提升识别准确率。

 

更进一步的,我们能不能用神经网络直接从头到尾的给出结果,而不区分语音模型和语言模型?答案是肯定的,这就是语音识别的端对端模型了。即输入语音,输出文字全部由神经网络处理,其中的训练过程也完全支持从语音到文字的端到端训练。这样,将最繁重的工作全部交给计算机,只要有足够的时间和充足的数据,训练结果将可以达到非常好的水平。目前主流语音识别公司,包括微软、谷歌、百度、阿里、科大讯飞都可以在实验室条件下实现95%以上准确率的识别水平。

 

深度神经网络+语音识别:CTC算法


在语音识别方面,深度学习有两个部分可以进行改善,第一个是损失函数算法,这个算法评价的是文字序列是否能够和原始语音相匹配;第二个部分是模型结构,目前有基于卷积神经网络(CNN),循环神经网络(RNN)等多种模型实现的语音识别系统。

 

首先我们先聊聊评价算法CTC。在传统语音识别中一个很麻烦的工作就是将每一个语音帧与具体的音素发音相对应。而CTC算法允许只有少量的帧被计算出结果的情况下也能得到有效的序列,进一步的,它也可以通过神经网络自动学习出标注的方法。也就是说,CTC算法的出现,让工程师从繁琐的音频帧标注工作中解放出来。

当然这并不意味着从CTC得到的好处是没有代价的,为了获得正确的识别结果,CTC需要充足的数据进行训练。其花费的计算能力也更多。标注声音帧所花费的精力实质转移到了计算量中去了。

 

深度神经网络+语音识别:结构模型


我们有了好的损失函数算法,那么什么样的网络结构是我们所需要的呢。各大研究团队在两种不同的架构上进行了长足的发展。这里就分别就CNN、RNN为基础的结果进行简述。

最早引入语音识别的复杂模型是DNN,即全连接网络。然而,该网络不能够有效利用上下文多音频帧信息来提高正确率。为了充分利用上下文信息,循环神经网络RNN被引入语音识别模型,并结合CTC共同实现端到端的模型。之后,语音识别系统在此基础上也有所加强,比如将LSTM和GRU,这两种RNN的加强版代替RNN来实现语音识别,准确率也得到了不小的提高。同时引入双向RNN技术来进一步提高识别性能。

然而RNN-CTC系统也存在很多问题,比如结构较为复杂不易训练,双向结构会带来额外的延迟时间等等。为了解决这些问题,前馈型序列记忆网络FSMN被提出。 

在FSMN网络中,通过在DNN网络结构中附加记忆模块来实现对上文音频信息的记忆。FSMN的提出是受到数字信号处理中滤波器设计理论的启发:任何无限响应冲击(InfiniteImpulse Response, IIR)滤波器可以采用高阶的有限冲击响应(Finite ImpulseResponse, FIR)滤波器进行近似。对应到神经网络系统上就是,可以利用附加的前馈记忆块来代替自响应的RNN结构。这是FSMN能够在语音识别任务上能够表现良好的基础。

后续阿里和科大讯飞都在FSMN基础之上进行了深度的模型改进,比如DFSMN(深度FSMN)网络,或者结合低帧率技术构建LFR-DFSMN网络等等。 

RNN/FSMN类模型是语音识别中的一大类,目前在这条路线上已经有了不少优异的成果。另外一条道路则是从图像识别中卷积网络中受到启发,将CNN和语音识别结合到一起。

CNN网络的核心理念是通过卷积池化操作对像素所代表内容进行抽象,再反复多次抽象的情况下,我们可以得到图像所蕴含的高层次含义,比如图像描述的什么对象等等。而频谱化的音频也可以认为是一种特殊的图片。我们可以对这种音频图片通过CNN网络进行卷积池化操作来确定其对应的文字。

通常来说,CNN可以和LSTM融合为CLDNN模型来实现更好的识别效果。百度的Deep Speech语音识别引擎和Google的语音识别系统都是对CLDNN的深度应用。同时,关于CNN模型的多种改进结构,比如深度残差网络(Res-Net),高速训练网络(Highway CNN)等都可以应用到语音识别中,以进一步提高识别效果。

除RNN和CNN模型以外,其他模型结构也陆续的被应用于语音识别领域。比如Seq2Seq与其变种Attention-S2S模型都被应用于语音识别工作,且都实现了较为不错的结果。

 

问题和展望


相比上个十年,语音识别技术终于有能力跨过第一道门槛,能够一定程度上的应用到实际生活当中。随着数据量的提升,语音识别能力还会进一步提高。然而,这并不意味我们已经完成了对于语音识别的探索了。目前还有很多问题存在着。

 

首先就是语音识别不能够利用上下文信息,也就是说,当前的语音识别缺乏通过上下文来纠正文字的能力。正常人在听写文字的时,会充分利用额外信息,包括表情动作,环境和上下文等等。但是语音识别无法利用这些额外的信息资源。这也是制约其准确率进一步提高的重要原因。

 

另一个问题就是语义不全。尽管现在顶级的语音识别系统正确率普遍超过95%,即每20个字错一个字。但考虑到一句话也就二十个字左右,那每句话都可能存在一个错字。这些错字有可能是关键字错误,比如说少了一个“不”字。这类错误会导致语义产生严重变化。目前现有的语音系统对于这个问题缺少很好的解决手段。解决这个问题既需要改善算法本身,也需要找寻评价语义错误的新评价方法。

 

此外,如何解决方言口音和语音系统快速迁移,如何在极短时间内实现语音识别等等都是语音识别工程中需要考虑的问题。相信,随着计算能力的进一步提高,语音识别方法和自然语言处理相关的深度学习技术的发展,这些问题都能够得以解决。


(部分内容摘自网络,如有侵权,请联系删除。)


语音合成(TTS)_数据堂