介绍
语音识别是将音频波形转换为文字的过程,本质上是音频序列到符号序列的解码问题,先插一张通俗简单的图(盗图谁不会?)
上图简单介绍了训练与识别的流程,主要用到两个模型:声学模型和语音模型,然后由解码网络(也就是“语音解码和搜索算法”这个框,通常是wfst–有限状态转换器实现)将这两个模型整合到一起;之前有说过识别过程是一个序列到序列的解码问题,在wfst中就是一个网络寻径问题(带权最短路径?viterbi?动态规划?一个意思)。下面依次通俗讲解各个部分。
声学
声学模型,通俗的讲,是用于将语音转换成拼音的模型,如何转换?先提一个概念:音素,可以简单理解成声母、韵母、或者音标,一个字的发音由若干音素串联组成,很显然我们的问题就变成了解码音素序列;而一个音素又是由多个音频帧组成,问题进一步转换为若干个音频帧到底属于哪一个音素;ok,那么现在的问题就转变为“判断音频特征序列是否属于某一个音素模型”,对时间序列的建模显然HMM隐马尔可夫模型很适合,建模的对象就是音素(也有对字、词的建模,比如对字的建模,HMM隐状态是声母韵母的音素,观测序列是MFCC特征,这或许能让你更好的理解,然而实际生产模型几乎都是基于音素的建模,通常是状态绑定的三音素模型,前述的对字建模反而会让人走入误区,因为音素HMM模型的隐状态是无实际物理意义的)。
识别千万步,特征第一步,从特征提取说起,音频帧是PCM时域信号不便直接分析,那首先需要找到能显著标注该音频帧的特征值。
特征提取:音频帧是时域信号,其时域特征不足以区分不同的发音,而频域特征却清晰很多,并且频谱的共振峰包含了绝大部分的语音信息,所以特征提取的方式也都是围