本节课主要内容是语音识别的理论基础
1. 模型定义
分两个步骤:
- 切割:等间距切割成N个frame,相连的两个frame需要有一定重叠,保证连续性
- 每个window内提取特征(39维MFCC)
每一个o都是39维(可见)向量->特征
相邻的若干个o组成一个(hidden)state->待识别的音素,因为切割frame要尽量细,可能相邻的若干个frame属于一个音素
A矩阵描述state之间的转换概率->音素之间的转移概率
N个bi(o)(每个bi(o)由M个Gaussian加权组合而成)表示从state产生对应o向量的概率->每一个音素发出“o向量这样特征”的概率有多大
为什么用HMM
- hidden到observation:因为同一个人说两次同样的词,波形也是不一样的。所以bi(o)用分布(GMM)描述
- hidden到hidden:假设音和音之间是有转换关系(联系)的,用hidden之间的联系(转移矩阵)比observe之间的联系(转移矩阵)更简单,更合理
2. 三个基本问题
(1)已知训练好的模型,求observe产生的概率有多大
(2)已知训练好的模型,找到概率最大的hidden state
(3)已知observe训练,如何训练模型
3. 特征提取
作用:加强高频信号。高频放大多,低频放大少
目的:人要换气,声音一定有中断,但也有信号(噪声),需要判断哪里是噪声。
方法:求一小段的能量
两种不同的window
hamming window解决跳动大的问题,减少两边的权重
4. MFCC
傅立叶变换到频域->三角形滤波->取log->反变换到时域
为什么是39维?13维*3(原始+一次微分+二次微分)
实验结果加三次微分效果变差
不同频率有不同的“传感器”
离得近的频率人耳听不出来区别,因为是一个“传感器”(相同颜色的)
为什么取log?高一个八度频率高一倍
5. 语言模型
n-gram:前n个词产生下一个词的概率又多大,常见n=3,n大计算量大
smoothing:为词典以外的词给一个很低的默认概率,防止除0异常
6. 语音识别原理
声学模型+语言模型+词典,极大似然求解
P(O|W),P(W)通过训练数据统计,P(O)和w无关
取相邻的多少个frame组成一个词都有可能,比如1-2-3-4:j-ji-jin-jing
可以one path一边走一边出结果,可以two path走到最后才出结果