传统语音识别基本原理
语音识别过程:
step1: 对语音信号提取特定的声学特征,然后对声学特征进行“训练”。即建立识别基本单元的声学模型和进行语言文法分析的语言模型。
step2: “识别”。根据识别系统的类型选择能够满足要求的识别方法,采用语音分析方法分析出这种识别方法所要求的语音特征参数,按照一定的准则和测度与系统模型进行比较,通过判决得出识别结果。
设一段语音信号经过特征提取得到特征向量序列为
X
=
[
x
1
,
x
2
,
…
,
x
N
]
X=[x^1,x^2,…,x^N]
X=[x1,x2,…,xN]其中
x
i
x_i
xi是每一帧的特征向量,i=1,2,…,N,N为特征向量的数目。该段语音对应的文本序列设为
W
=
[
w
1
,
w
2
,
…
,
w
M
]
W=[w^1,w^2,…,w^M]
W=[w1,w2,…,wM]其中
w
i
w_i
wi为基本组成单元,如音素、单词、字符,i=1,2,…,M,M为文本序列的维度。
从贝叶斯角度,语音识别的目标就是从所有可能产生特征向量X的文本序列中找到概率最大的
W
∗
W^*
W∗,可以用公式表示为式(1)优化问题:
W
∗
=
a
r
g
max
w
P
(
W
∣
X
)
=
a
r
g
max
w
P
(
X
∣
W
)
P
(
W
)
P
(
X
)
…
a
r
g
max
w
P
(
X
∣
W
)
P
(
W
)
(
1
)
W^*=arg\max_{w}P(W|X)=arg\max_{w} \frac{P(X|W)P(W)}{P(X)} …arg\max_{w} P(X|W)P(W)(1)
W∗=argwmaxP(W∣X)=argwmaxP(X)P(X∣W)P(W)…argwmaxP(X∣W)P(W)(1)由式(1)可知,要找到最可能的文本序列必须使两个概率模型P(X|W)和P(W)的乘积最大,其中P(X|W)为条件概率,由声学模型决定;P(W)为先验概率,由语言模型决定。
语音识别系统包括:预处理、特征提取、声学模型、语言模型以及搜索算法等模块。
1.预处理包括:滤波、采样、模/数转换、预加重、分帧加窗、端点检测等操作。其中信号分帧是将信号数字化后的语音信号分成短时信号(具有短时平稳性)作为识别的基本单位。
2.搜索模块:是指在训练好声学模型和语言模型后,根据字典搜索最优路径,即最可能的输出词序列。目前端到端模型中的主流的搜索算法为Beam Search等。
3.特征提取:在进行语音识别之前,需要根据语音信号波形提取有效的声学特征。目前语音识别系统常用的声学特征有梅尔频率倒谱系数(MFCC)、感性线性预测系数(PLP)、线性预测倒谱系数(LPCC)、梅尔滤波器组系数(Fbank)等。MFCC是最为经典的语音特征。
4.声学模型:声学模型是对等式(1)中的P(X|W)进行建模,在语音特征和音素之间建立映射关系,即给定模型后产生语音波形的概率,其输入是语音信号经过特征提取后得到的特征向量序列。
GMM-HMM 是最为常见的一种声学模型,该模型利用HMM对时间序列的建模能力,描述语音如何从一个短时平稳段过渡到下一个短时平稳段过渡到下一个短时平稳段;此外HMM的隐藏状态和观测状态的数目互不相干,可以解决语音识别中输入输出不等长的问题。该声学模型中的每个HMM都涉及到3个参数:初始状态概率、状态转换概率和观测概率,其中观测概率依赖于特征向量的概率分布,采用高斯混合模型GMM进行建模。
然而该模型中的GMM 忽略时序信息,每帧之间相对孤立,对上下文信息利用并不充分,且随着数据量的上升,GMM需要优化的参数急剧增加,给声学模型带来了很大的计算量负担,浅层模型也难以学习非线性的特征变换。
深度学习的兴起为声学建模提供了新途径,学者们用DNN代替GMM估计HMM的 观测概率,得到了DNN-HMM语音识别系统。
DNN-HNN 采用DNN的每个输出节点来估计给定声学特征的条件下HMM某个状态的后验概率。
DNN模型的训练阶段大致分为两个步骤:
Step1:预训练。利用无监督学习的算法训练受限玻尔兹曼机(RBM),RBM算法通过逐层训练并堆叠组成深层置信网络(DBN)
Step2:区分性调整。在DBN的最后一层上面增加一层Softmax层,将其用于初始化DNN的模型参数,然后使用带标注的数据,利用传统神经网络的学习算法学习DNN的模型参数。
DNN-HMM相比GMM-HMM在语音识别性能方面有很大提升,然而DNN对于时序信息的上下文建模能力以及灵活性等方面仍有欠缺。针对这一问题,循环神经网络RNN和卷积神经网络CNN被引入声学建模中。然而RNN存在因梯度消失和梯度爆炸而难以训练的问题,于是引入门控机制,得到梯度传播更加稳定的 长短时记忆(LSTM) 网络。LSTM-RNN对语音的上下文信息的利用率更高,识别的准确率与鲁棒性也均有提升。CNN的优势在于卷积的不变性和池化技术,对上下文信息有建模能力,对噪声具有鲁棒性,并且可以减少计算量。 CLDNN(CNN-LSTM-DNN) 综合了三者的优点。
4.语言模型:语言模型是用来预测字符(词)序列产生的概率,判断一个语言序列是否为正常语句,也就是解决如何计算等式(1)中的P(W)。传统的语言模型n-gram是一种具有强马尔科夫独立性假设的模型,它认为任意一个词出现的概率仅与前面有限的n-1个字出现的概率有关,其公式表达如下:
P
(
W
)
=
∏
i
=
1
m
P
(
w
i
∣
w
1
,
w
2
,
…
,
w
i
−
1
)
…
∏
i
=
1
m
P
(
w
i
∣
w
i
−
n
+
1
,
…
,
w
i
−
1
)
(
2
)
P(W)=\prod^{m}_{i=1}P(w_i|w_1,w_2,…,w_{i-1}) …\prod^{m}_{i=1}P(w_i|w_{i-n+1},…,w_{i-1}) (2)
P(W)=i=1∏mP(wi∣w1,w2,…,wi−1)…i=1∏mP(wi∣wi−n+1,…,wi−1)(2)
P
(
w
i
∣
w
i
−
n
+
1
,
…
,
w
i
−
1
)
=
c
o
u
n
t
(
w
i
−
n
+
1
,
w
i
−
n
+
2
,
…
,
w
i
−
1
,
w
i
)
c
o
u
n
t
(
w
i
−
n
+
1
,
w
i
−
n
+
2
,
…
,
w
i
−
1
)
(
3
)
P(w_i|w_{i-n+1},…,w_{i-1})=\frac{count(w_{i-n+1},w_{i-n+2},…,w_{i-1},w_i)}{count(w_{i-n+1},w_{i-n+2},…,w_{i-1})}(3)
P(wi∣wi−n+1,…,wi−1)=count(wi−n+1,wi−n+2,…,wi−1)count(wi−n+1,wi−n+2,…,wi−1,wi)(3)然而,由于训练语料数据不足或者词组使用频率过低等常见因素,测试集中可能会出现训练集中未出现过的词或某个序列未在训练集中出现,这将导致n-gram语言模型计算出的概率为零,这种情况被称为未登录词(OOV)问题。为缓解这一问题,常采用一些平滑技术,例如:Discounting、Interpolation和Backing-off等。
n-gram模型的优势在于其参数易训练,可解释性极强,且完全包含了前n-1个词的全部信息,能够节省解码时间;但难以避免维数灾难问题,此外n-gram模型泛化能力弱,容易出现OOV问题,缺乏长期依赖。
随着深度学习的发展,语言模型的研究也开始引入深度神经网络。n-gram模型中当前词组出现依赖于前方的信息,因此很适合使用循环神经网络进行建模。
Bengio等将神经网络用于语言模型建模,提出了词向量的概念,用连续变量代替离散变量,利用神经网络去建模当前词出现的概率与其前n-1个词之间的约束关系。这种模型能够降低模型参数的数量,具有一定的泛化能力,能够较好地解决数据稀疏带来的问题,但对于长距离信息仍束手无策。
为进一步解决问题,提出RNNLM,RNNLM中隐含层的循环能够获得更多上下文信息,通过在整个训练集上优化交叉熵来训练模型,使得网络能够尽可能建模出自然语言序列与后续词之间的内在联系,其优势在于相同的网络结构和超参数可以处理任意长度的历史信息,能够利用神经网络的表征学习能力,极大程度避免了OOV问题;但无法任意修改神经网络中的参数,不利于新词的添加和修改,且实时性不高。
语言模型的性能通常采用**困惑度(PPL)**进行评价,PPL定义为序列的概率几何平均数的倒数,其公式定义如下:
P
(
w
i
∣
w
i
−
n
+
1
,
…
,
w
i
−
1
)
=
c
o
u
n
t
(
w
i
−
n
+
1
,
w
i
−
n
+
2
,
…
,
w
i
−
1
,
w
i
)
c
o
u
n
t
(
w
i
−
n
+
1
,
w
i
−
n
+
2
,
…
,
w
i
−
1
)
(
4
)
P(w_i|w_{i-n+1},…,w_{i-1})=\frac{count(w_{i-n+1},w_{i-n+2},…,w_{i-1},w_i)}{count(w_{i-n+1},w_{i-n+2},…,w_{i-1})}(4)
P(wi∣wi−n+1,…,wi−1)=count(wi−n+1,wi−n+2,…,wi−1)count(wi−n+1,wi−n+2,…,wi−1,wi)(4)PPL越小表示在给定历史上出现下一个预测词的概率越高,该模型的效果越好。