简要给咱们介绍一下语音怎样变文字的吧。期望这个介绍能让一切同学看懂。
首要,咱们知道声响实践上是一种波。常见的 mp3、wmv 等格局都是紧缩格局,有必要转成非紧缩的纯波形文件来处理,比方 Windows PCM 文件,也便是俗称的 wav 文件。wav 文件里存储的除了一个文件头以外,便是声响波形的一个个点了。下图是一个波形的示例。
在开端语音辨认之前,有时需求把首尾端的静音切除,下降对后续进程形成的搅扰。这个静音切除的操作一般称为 VAD,需求用到信号处理的一些技能。
要对声响进行剖析,需求对声响分帧,也便是把声响切开成一小段一小段,每小段称为一帧。分帧操作一般不是简略的切开,而是运用移动窗函数来完成,这儿不胪陈。帧与帧之间一般是有交叠的,就像下图这样:
图中,每帧的长度为 25 毫秒,每两帧之间有 25-10=15 毫秒的交叠。咱们称为以帧长 25 ms、帧移 10 ms 分帧。图中,每帧的长度为 25 毫秒,每两帧之间有 25-10=15 毫秒的交叠。咱们称为以帧长 25 ms、帧移 10 ms 分帧。
分帧后,语音就变成了许多小段。但波形在时域上几乎没有描绘才能,因而有必要将波形作改换。常见的一种改换办法是提取 MFCC 特征,依据人耳的生理特性,把每一帧波形变成一个多维向量,能够简略地了解为这个向量包括了这帧语音的内容信息。这个进程叫做声学特征提取。实践运用中,这一步有许多细节,声学特征也不止有 MFCC 这一种,详细这儿不讲。
至此,声响就成了一个 12 行(假定声学特征是 12 维)、N 列的一个矩阵,称之为调查序列,这儿 N 为总帧数。调查序列如下图所示,图中,每一帧都用一个 12 维的向量表明,色块的色彩深浅表明向量值的巨细。
接下来就要介绍怎样把这个矩阵变成文本了。首要要介绍两个概念:
1.音素:单词的发音由音素构成。对英语,一种常用的音素集是卡内基梅隆大学的一套由 39 个音素构成的音素集,拜见 The CMU Pronouncing DicTIonary。汉语一般直接用悉数声母和韵母作为音素集,别的汉语辨认还分有调无调,不胪陈。
2.状况:这儿了解成比音素更详尽的语音单位就行啦。一般把一个音素划分红 3 个状况。
语音辨认是怎样作业的呢?实践上一点都不奥秘,无非是:
第一步,把帧辨认成状况(难点);
第二步,把状况组合成音素;
第三步,把音素组合成单词。
如下图所示:
图中,每个小竖条代表一帧,若干帧语音对应一个状况,每三个状况组合成一个音素,若干个音素组合成一个单词。也便是说,只需知道每帧语音对应哪个状况了,语音辨认的成果也就出来了。图中,每个小竖条代表一帧,若干帧语音对应一个状况,每三个状况组合成一个音素,若干个音素组合成一个单词。也便是说,只需知道每帧语音对应哪个状况了,语音辨认的成果也就出来了。
那每帧音素对应哪个状况呢?有个简略想到的办法,看某帧对应哪个状况的概率最大,那这帧就归于哪个状况。比方下面的示意图,这帧对应 S3 状况的概率最大,因而就让这帧归于 S3 状况。
那这些用到的概率从哪里读取呢?有个叫「声学模型」的东西,里边存了一大堆参数,经过这些参数,就能够知道帧和状况对应的概率。获取这一大堆参数的办法叫做「练习」,需求运用巨大数量的语音数据,练习的办法比较繁琐,这儿不讲。
但这样做有一个问题:每一帧都会得到一个状况号,最终整个语音就会得到一堆杂乱无章的状况号,相邻两帧间的状况号底子都不相同。假定语音有 1000 帧,每帧对应 1 个状况,每 3 个状况组合成一个音素,那么大概会组合成300个音素,但这段语音其实底子没有这么多音素。假如然这么做,得到的状况号或许底子无法组合成音素。实践上,相邻帧的状况应该大多数都是相同的才合理,由于每帧很短。
处理这个问题的常用办法便是运用隐马尔可夫模型(Hidden Markov Model,HMM)。这东西听起来如同很深邃的姿态,实践上用起来很简略:
第一步,构建一个状况网络。
第二步,从状况网络中寻觅与声响最匹配的途径。
这样就把成果约束在预先设定的网络中,避免了方才提到的问题,当然也带来一个限制,比方你设定的网络里只包括了「今日晴天」和「今日下雨」两个语句的状况途径,那么不论说些什么,辨认出的成果必定是这两个语句中的一句。
那假如想辨认恣意文本呢?把这个网络搭得足够大,包括恣意文本的途径就能够了。但这个网络越大,想要到达比较好的辨认准确率就越难。所以要依据实践使命的需求,合理挑选网络巨细和结构。
建立状况网络,是由单词级网络展开成音素网络,再展开成状况网络。语音辨认进程其实便是在状况网络中查找一条最佳途径,语音对应这条途径的概率最大,这称之为「解码」。途径查找的算法是一种动态规划剪枝的算法,称之为 Viterbi 算法,用于寻觅大局最优途径。
这儿所说的累积概率,由三部分构成,分别是:
调查概率:每帧和每个状况对应的概率
搬运概率:每个状况搬运到自身或搬运到下个状况的概率
言语概率:依据言语计算规则得到的概率
其间,前两种概率从声学模型中获取,最终一种概率从言语模型中获取。言语模型是运用很多的文本练习出来的,能够使用某门言语自身的计算规则来协助提高辨认正确率。言语模型很重要,假如不运用言语模型,当状况网络较大时,辨认出的成果底子是一团乱麻。
这样底子上语音辨认进程就完成了。
以上介绍的是传统的根据 HMM 的语音辨认。事实上,HMM 的内在绝不是上面所说的「无非是个状况网络」那么简略。以上的文字仅仅想让咱们简略了解,并不寻求谨慎。