一、语音识别框架
传统理论重点研究声学模型,发音字典不用关心,语言模型一般用n-gram
预处理:1. 首尾端的静音切除,降低对后续步骤造成的干扰,静音切除的操作一般称为VAD。
2. 声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧,使用移动窗函数来实现,不是简单的切开,各帧之间一般是有交叠的。
特征提取:主要算法有线性预测倒谱系数(LPCC)和Mel 倒谱系数(MFCC),目的是把每一帧波形变成一个包含声音信息的多维向量;
声学模型(AM):通过对语音数据进行训练获得,输入是特征向量,输出为音素信息;
字典:字或者词与音素的对应, 简单来说, 中文就是拼音和汉字的对应,英文就是音标与单词的对应;
语言模型(LM):通过对大量文本信息进行训练,得到单个字或者词相互关联的概率;计算所有可能性的概率,求对应的最大概率值的索引。即输出文本。
语音识别流程的举例(只是形象表述,不是真实数据和过程):
1. 语音信号:PCM文件等(我是机器人)
2. 特征提取:提取特征向量[1 2 3 4 5 6 0 ...]
3. 声学模型:[1 2 3 4 5 6 0]-> w o s i j i q i r n重点
4. 字典:窝:w o;我:w o; 是:s i; 机:j i; 器:q i; 人:r n;级:j i;忍:r n;
5. 语言模型:我:0.0786, 是: 0.0546,我是:0.0898,机器:0.0967,机器人:0.6785;
计算所有可能性的概率,求对应的最大概率值的索引。
6. 输出文字:我是机器人
原文:https://blog.csdn.net/nsh119/article/details/79360778
二、声学模型
声学模型:某音素组合条件下对应声学特征的概率值。反过来也可以通过概率值求索引,即特征到音素的映射。传统的为HMM-GMM模型,发展为NN,深度NN模型。
下图为声学模型框架。
https://blog.csdn.net/abcjennifer/article/details/27346787
声学模型的输入是由特征提取模块提取的特征(MFCC等)。一般来说,这些特征是多维的向量。由于语音信号特征的分布并不能用简单的概率分布,故而常用混合高斯模型方法对语音信号的分布进行拟合。参数由E-M算法求得。对声音序列O,进行GMM拟合,每一个GMM为HMM的一个状态,计算状态的概率值,通过搜索算法求得最大概率值对应的索引即音素序列。
注:状态的理解。状态通过对声音想、特征序列O进行GMM拟合或者DNN等拟合求得。如果声学模型输出的是音素,状态应该理解为比音素更小的级别,如3个状态对应一个音素;
https://blog.csdn.net/T7SFOKzorD1JAYMSFk4/article/details/79069909。如果声学模型输出的是拼音如(zhong),状态应该理解为音素zh和ong等,或者其他声学单元。即状态为构成输出的更低一级别的单元。
发音单元可以看成单因素加声调、考虑协同发音等等
语言模型:给定输入序列,计算序列的概率。
对于一个服从某个未知概率分布P的语言L,根据给定的语言文字样本估计P的过程被称作统计语言建模。
在语音识别中,如果识别结果有多个,则可以根据语言模型计算每个识别结果的可能性,然后挑选一个可能性较大的识别结果。
包含:统计语言模型和神经网络语言模型。统计语言模型将词或者词汇,看成一个个体。神经网络语言模型也可以实现传统的语言模型。最重要的是词向量的提出。
统计语言模型
2元模型:
用最大似然估计计算上述概率
问题:
加入开始和结束标志。
数据匮乏(稀疏)(Sparse Data)引起零概率问题 ,如何解决? 数据平滑
分子加1,分母加词汇量
不管训练语料规模多大,对于二元语法和三元语法而言 ,Kneser-Ney平滑方法和修正的Kneser-Ney平滑方法 的效果都好于其它所有的平滑方法
基于缓存的语言模型(cache-based LM)
基于混合方法的语言模型
基于最大熵的语言模型
决策树语言模型等
系数由E-M算法求得
评价指标:
具体应用,如语音识别的表现等,
困惑度:基于该语言模型,求得的测试集的概率值的越大越好。对应的困惑度越小越好。
仍然是现今语音识别系统第一遍解码的首选模型 研究热点:基于N元文法语言模型平滑算法的研究
N元模型主要研究各种平滑算法。
神经网络语言模型:
用NN实现统计语言模型。
训练RNN网络计算每一个句子的概率
词向量的提出
端对端的理解:
中英文的区别:
中英文的音素不同,发音字典不同。如英文的音素k在发音字典可以是c,k;中文的音素组成的拼音shi4可以为世,事,是等。还需要语音模型计算实际的输出。
端对端不用考虑声学模型、发音字典、语音模型等,直接完成声音特征序列到文字序列的转换。