汉语数码语音识别分析毕业设计第二章Word下载.docx
《汉语数码语音识别分析毕业设计第二章Word下载.docx》由会员分享,可在线阅读,更多相关《汉语数码语音识别分析毕业设计第二章Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
LPCC参数的优点是计算量小,对元音有较好的描述能力,其缺点在于对辅音的描述能力较差,抗噪声性能较差。
✧Mel频标倒谱系数(MelFrequencyCepstrumCoefficient,MFCC)。
该特征考虑了人耳的听觉特性,将频谱转化为基于Mel频标的非线性频谱,然后转换到倒谱域上。
由于充分模拟了人的听觉特性,而且没有任何前提假设,MFCC参数具有识别性能和抗噪能力。
本文采用MFCC参数为语音特征参数。
2.1.2MFCC参数的优点
与LPCC参数相比,MFCC参数具有以下优点:
1.语音的信息大多集中在低频部分,而高频部分易受环境噪声干扰。
MFCC参数将线性频标转化为Mel频标,强调语音的低频信息,从而突出了有利于识别的信息,屏蔽了噪声的干扰。
LPCC参数是基于线性频标的,所以没有这一特点。
2.MFCC参数无任何前提假设,在各种情况下均可使用。
而LPCC参数假定所处理的信号为AR信号,对于动态特性较强的辅音,这个假设并不严格成立,而汉语数码语音识别需要对辅音有较强的分辨能力,如“6”和“9”,“1”和“6”等,所以MFCC参数在汉语数码语音识别中优于LPCC参数。
另外,当噪声存在时,AR信号会变为ARMA信号:
(2.1)
其中H()为受噪声污染的信号功率谱,1/A()为AR信号功率谱,为噪声功率。
这会给LPC分析的结果带来较大误差。
因此,MFCC参数的抗噪声能力也优于LPCC参数。
3.MFCC参数提取过程中需要FFT变换,我们可以由此顺便获得语音信号频域上的全部信息。
而以后将要介绍的端点检测、语音分段、鼻音特征提取等算法都要利用到语音的频域信息,因此MFCC参数的提取可以节省掉以上算法FFT的计算量。
2.1.3MFCC参数提取的具体步骤
1.假定已有一帧采样语音,N为帧长。
为方便后面所需的FFT,我们取N=256。
对加Hamming窗后作N点FFT,将时域信号转化为频域分量。
2.将线性频标转化为Mel频标。
转化方法是将频域信号通过24个三角滤波器,其中中心频率在1000Hz以上和以下的各12个。
滤波器的中心频率间隔特点是在1000Hz以下为线性分布,1000Hz以上为等比数列分布。
三角滤波器的输出则为:
,i=1,2,....,24(2.2)
其中为频谱上第k个频谱点的能量,为第i个滤波器的输出,为第i个滤波器的中心频率。
3.用离散余弦变换(DiscreteCosineTransformation,DCT)将滤波器输出变换到倒谱域:
k=1,2,...,P(2.3)
其中P为MFCC参数的阶数,我们取P=12。
即为所求的MFCC参数。
求出MFCC参数后,我们按式(2.3)对其进行加权,并按式(2.4)计算差分MFCC参数。
(2.4)
(2.5)
其中下标l与l-k表示第l与l-k帧。
故最后提取的特征参数为24维的特征矢量,包括12维MFCC参数和12维差分MFCC参数。
2.2共振峰轨迹提取
2.2.1共振峰提取方法
共振峰是区分语音的本质特征。
由于易混语音对“2”和“8”的区别特征表现在第二共振峰和第三共振峰的上升或下降上,即“8”中塞音过渡段第二、第三共振峰的上升和“2”中儿化音第三共振峰的下降,所以我们可以提取共振峰轨迹以提高“2”和“8”的辨识率。
目前常用的共振峰提取方法大致可以分为三类:
1.基于LPC分析的峰值选取法(Peak-picking),其主要方法是利用LPC分析获得声道频响曲线,然后选取其峰值点为共振峰频率估计值。
2.求根法,利用LPC分析求出声道转移函数1/A(z),用Newton迭代法解方程1/A(z)=0,求其极点作为共振峰频率估计值。
3.基于动态规划的方法,即事先假设有K个共振峰,即K个全极点滤波器。
然后用动态规划的方法确定K个滤波器的最优位置,使得其频响特性与实际频响特性最为一致,而上述K个滤波器的最优位置即为共振峰频率。
以上三种算法各有优缺点,峰值选取法计算量小,一般不会误判出实际不存在的共振峰,但其精度较低,对间隔较小的两个共振峰的分辨能力也较弱;
求根法精度较高,但计算量大,对初值选取较为敏感,而且计算出的共振峰有可能只是LPC分析的产物,实际并不存在;
动态规划法精度高,对共振峰的分辨能力好,但计算量很大。
考虑到我们所需的只是共振峰的变化趋势,而不是共振峰的精确值,而且实际应用中必须有较小的计算量,所以我们选用峰值选取法来提取共振峰轨迹。
2.2.2峰值选取法的步骤
1)计算LPCC系数。
对一帧语音用Durbin算法计算出AR模型系数,其中N为LPC分析阶数。
然后递推求出LPC倒谱系数:
2)计算声道频响特性
对倒谱系数作M点反FFT(N+1,...,M点补0),即可求出声道频响对数特性。
3)计算共振峰频率
对于我们要求的第二共振峰()和第三共振峰(),选取方法如下:
=,如果且且(2.6)
=,如果且且(2.7)
其中,[,][,]是根据语音学知识事先设定的,位置的范围。
4)中值滤波
在语音各帧的共振峰提取完毕后,我们再对各帧的共振峰频率依次作三点中值滤波,以滤去个别“野点”。
这样,我们就得到了所需的共振峰轨迹。
由上述步骤我们可以看到,峰值选取法是十分简洁的,其主要计算量集中在LPC分析和反FFT上。
所以峰值选取算法可以在语音采样时实时完成共振峰轨迹的提取,从而减少了系统识别时间和所需存储量。
在共振峰轨迹提取中,我们应当注意到两个问题:
(1)元音[a]的第一共振峰与第二共振峰之间间隔较小,仅有200至500Hz,而峰值选取法对相隔很近的两个共振峰难以区分,所以利用峰值选取算法求出的F2实际上是F1与F2合并成的复合共振峰。
由于在塞音过渡段中F1也是上升的,所以我们求出的虽然不是准确的F2,但共振峰变化趋势是一致的,并不影响到最后的结果。
同理,在2的共振峰轨迹中,当F3下降与F2合并时,峰值选取法会将F4当作F3,从而造成F3轨迹的跳变。
(2)LPC算法的前提是在所分析的时段里,声道是稳态或准稳态的。
但我们所处理的语音过渡段是动态变化的过程,不满足LPC算法的前提,但用时变模型提取共振峰轨迹计算量很大,而且我们所求的只是共振峰的变化趋势,所以我们仍使用LPC算法提取声道模型参数。
图2.1和图2.2分别为“2”和“8”的起始段共振峰轨迹,我们可以清楚地看到其变化趋势,图2.3和图2.4为“2”和“8”整个语音的共振峰轨迹,从中我们可以看到“2”的F3的跳变,而“8”的F3是稳定的。
图2.1
“2”的起始段第二共振峰及第三共振峰,图中数字为用峰值选取法
求出的共振峰频率值,下划线表示该帧为共振峰起始帧。
以下同。
图2.2
“8”的塞音过渡段第二共振峰及第三共振峰
图2.3
“2“的波形及共振峰轨迹
图2.4
“8“的波形及共振峰轨迹
2.3.鼻音特征提取
2.3.1鼻音特征分析
在汉语数码语音中,数字“0”和“3”的元音都是鼻化元音。
“0”的元音为[in]或[ing],“3”的元音为[an]。
“0”和“3”都是混淆较多的语音,“0”易与“6”混淆,“3”易与“4”或“8”混淆,这些混淆都可以通过判断鼻音的有无来分辨。
因此我们有必要对鼻音的特征加以分析,并在语音特征提取阶段提取鼻音特征。
鼻音是由软腭下垂,鼻腔与口腔耦合发音形成的。
由于鼻腔的耦合,鼻音具有特殊的共振峰模式。
当鼻音位于元音之后时,会对元音产生鼻化作用,改变元音的共振峰。
鼻音是较为复杂的音,在语谱图上较难辨认,因此其特征也是相当复杂的。
语音学家们经过数十年的努力,发现了鼻音的主要特征如下:
1.鼻音在频谱的低端(约250Hz左右)有一个较强的共振峰。
2.鼻音的共振峰带宽较大。
3.鼻音共振峰密度较高,并存在反共振峰,即零点。
后两个特征可以归结为在中频段,即800至2300Hz,鼻音能量的分别是较
为均匀的,没有显著的频谱峰或谷。
2.3.2鼻音特征提取
将鼻音特征量化是一件十分困难的任务,目前语音学界尚无成熟的量化鼻音特征。
本文用以下两个量表征上面的两个鼻音特征:
1.低频能量比。
其定义如下:
(2.8)
其中为鼻音低频共振峰频率,约为250Hz,B为其带宽,约为50Hz。
为第k个频率点的能量,[,]则为另一频段,由所需区分的混淆语音对决定。
对于“0”和“6”,由于“6”的后端为元音[ou],其能量集中在第一、第二共振峰内,即300至1000Hz内,因此我们将[,]定为[200Hz,1000Hz]。
这样对于“0”,200至1000Hz间的能量主要集中在200至300Hz间,故较大;
而“6”的[ou]中,300至1000Hz的能量占了所有能量的大部分,所以较小。
根据的大小则可对“0”和“6”作分辨。
2.频谱质心。
(2.9)
其中=800Hz,=2300Hz。
频谱质心可以反映频谱800至2300Hz内的频谱均匀情况。
这两个量的计算都是十分方便的。
由于采用的语音特征参数是MFCC参数,其计算过程中需要作FFT,所以这两个量可以顺便算出,不会影响特征提取的实时完成。
图2.5和图2.6分别是“0”和“6”的波形以及低频能量比和频谱质心轨迹图。
由图可见低频能量比和频谱质心可以很好地分辨“0”和“6”。
图2.5
图2.6
2.4基于帧的实时汉语数码语音端点检测
2.4.1语音端点检测算法
在语音识别系统中,语音的端点检测的准确性和可靠性,对系统识别率的提高起着重要的作用,当系统收到一段包含语音的信号时系统需要对语音的端点进行定位,丢弃语音前后多余的噪音段,将完整的语音交付下一级进行识别。
如果语音前后噪音保留过多,则会增加不同语音的共同成分,对识别产生干扰;
而如果语音部分被切割掉,则会造成语音信息的丢失,若丢失的恰是区分语音的重要特征,则识别错误不可避免。
例如在汉语数码语音识别中,数字“3”的清音部分[s]被判为噪声而被丢弃时,“3”中只剩下元音[an],很容易被判为“8”。
同时,语音端点检测也对系统的计算量和存储量有一定影响。
因此,一个良好的语音端点检测算法是系统有较高识别率和易于实用的必要条件。
近二十年来,人们对语音端点检测算法作了全面的研究,提出了多种算法。
早期的算法主要是根据语音的一些特征参数(如能量、过零数、LPC系数等)完成端点检测,其中较为典型的是利用能量和过零率进行清音/噪音/浊音判别,从而完成端点检测,我们可以称之为VUS算法(Voice–Unvoice–Silence)。
VUS算法的阈值都是事先在特定环境下根据经验设定的,当环境变化时,阈值的可靠程度降低,故其抗噪能力较