基于倒频谱的语音识别

来源:互联网 发布:世界银行wdi数据库 编辑:程序博客网 时间:2024/06/11 09:56

基于倒频谱的语音识别

20140808

研究背景

移动互联网时代对于语音处理的需求急剧增长,目前语音识别算法复杂度和准确度有限,特别是连续语音自动识别,只能识别标准普通话,对于非标准语音,比如方言,藏语,维语,现有语音识别基本没辙.目前来往对于语音内容审核的需求要求语音识别不仅仅能够识别普通话,还要能识别以上各种非标准语言.比如不同的维吾尔人说了句相同的违禁语言,我们得通过机器自动将他们识别出来,为此本文将在语音底层特征级别而不是语义级别利用语音特征提取音频特征,然后通过聚类的方式将所有语音特征转换为特征向量,最后通过比较特征向量的相似性来判别.

 

音频分析基础理论

1.      音频信号在本质上是非平稳的,即间隔很短的时间(比如10ms)就会发生剧烈的变化,所以不存在像视频中存在的”关键音频帧”.

2.      音频信号具有短时稳定性,因此通常在较短的时间窗口(音频帧)内对采样点进行处理.

3.      音频处理的两种形式:音频帧和音频例子.

 

使用音频帧提取特征是基于语音信号处理理论,前提假设是信号的短时稳定性.

音频例子是考虑音频语义级别的信号稳定性,如持续一段时间的爆炸声和掌声等.

4.      特征提取方式分为时域特征:短时平均能量,线性预测系数和过零率;

频域特征:Mel系数,LPC倒频谱系数和熵特征;

时频特征:小波系数

5.      特征相似度匹配分为基于时间序列上的(如隐马尔科夫和支持向量机)和基于几何意义上的(如聚类统计).

6.      音频信号总可以分解为正弦信号的叠加,每一个音频信号是由不同时刻,不同频率和不同能量幅度的声波组成,作为滤波器的人耳有选择的接收不同频率的不同能量.音频分析通常在频域上进行.

表示X=采样时间,Y=采样幅度值的时域信号


表示X=频率,Y=采样时间内能量总和的频域信号

 

从上面频谱图可见,音频信号是由不同频率上所带不同的能量组成的,在100Hz和260Hz上携带了最多的能量.除此之外,语音信号中更多的信息也可以在频域中得到,如声音的辨识属性,声道形状等.所谓声道形状可以直接从短时功率谱的包络中体现出来, MFCC就是一种准确描述这个包络的一种特征。MFCC(Mel Frequency Cepstral Coefficents)是一种在自动语音和说话人识别中广泛使用的特征。它是在1980年由Davis和Mermelstein提出。

   下面从声谱图讲起。


声谱图(Spectrogram

这里,这段语音被分为很多帧,每帧语音都对应于一个频谱(通过短时FFT计算),频谱表示频率与能量的关系。在实际使用中,频谱图有三种,即线性振幅谱、对数振幅谱、自功率谱(对数振幅谱中各谱线的振幅都作了对数计算,所以其纵坐标的单位是dB(分贝)。这个变换的目的是使那些振幅较低的成分相对高振幅成分得以拉高,以便观察掩盖在低幅噪声中的周期信号)。

  我们先将其中一帧语音的频谱通过坐标表示出来,如上图左。现在我们将左边的频谱旋转90度。得到中间的图。然后把这些幅度映射到一个灰度级表示(也可以理解为将连续的幅度量化为256个量化值?),0表示黑,255表示白色。幅度值越大,相应的区域越黑。这样就得到了最右边的图。那为什么要这样呢?为的是增加时间这个维度,这样就可以显示一段语音而不是一帧语音的频谱,而且可以直观的看到静态和动态的信息。优点稍后呈上。

这样我们会得到一个随着时间变化的频谱图,这个就是描述语音信号的spectrogram声谱图。

在声谱图中表示语音的原因可归结为如下几点:

1.      音素(Phones)的属性可以更好的在这里面观察出来。

2.      通过观察共振峰和它们的转变可以更好的识别声音;

3.      隐马尔科夫模型(Hidden Markov Models)就是隐含地对声谱图进行建模以达到好的识别性能;

4.      可以直观的评估TTS系统(text to speech)的好坏。

倒谱分析(CepstrumAnalysis

  下面是一个语音的频谱图。峰值就表示语音的主要频率成分,我们把这些峰值称为共振峰(formants),而共振峰就是携带了声音的辨识属性(就是个人身份证一样)。所以它特别重要。用它就可以识别不同的声音。


我们要提取的不仅仅是共振峰的位置,还得提取它们转变的过程。所以我们提取的是频谱的包络(Spectral Envelope)。这包络就是一条连接这些共振峰点的平滑曲线。


原始的频谱由两部分组成:包络和频谱的细节,分别对应频谱的低频和高频部分。这里用到的是对数频谱,所以单位是dB。现在将这两部分分离开就可以得到包络了。在给定log X[k]的基础上,求得log H[k] 和 log E[k]以满足log X[k] = log H[k] + log E[k]就是对频谱做FFT。在频谱上做傅里叶变换就相当于逆傅里叶变换Inverse FFT (IFFT)。

 

于是倒谱分析的过程可总结为如下过程:

这个过程实际就是一个同态信号处理。它的目的是将非线性问题转化为线性问题的处理方法。对应上面就是原来的语音信号实际上是一个卷性信号(声道相当于一个线性时不变系统,声音的产生可以理解为一个激励通过这个系统),第一步通过卷积将其变成了乘性信号(时域的卷积相当于频域的乘积)。第二步通过取对数将乘性信号转化为加性信号,第三步进行逆变换,使其恢复为卷性信号。这时候,虽然前后均是时域序列,但它们所处的离散时域显然不同,所以后者称为倒谱频域。

 

Mel频率分析(Mel-FrequencyAnalysis

到这里我们可以得到语音的频谱包络(连接所有共振峰值点的平滑曲线)了。但是,对于人类听觉感知的实验表明,人类听觉的感知只聚焦在某些特定的区域,而不是整个频谱包络。

而Mel频率分析就是基于人类听觉感知实验的。实验观测发现人耳就像一个滤波器组一样,它只关注某些特定的频率分量(人的听觉对频率是有选择性的)。也就说,它只让某些频率的信号通过,而压根就直接无视它不想感知的某些频率信号。但是这些滤波器在频率坐标轴上却不是统一分布的,在低频区域有很多的滤波器,他们分布比较密集,但在高频区域,滤波器的数目就变得比较少,分布很稀疏。

   梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient, MFCC)考虑到了人类的听觉特征,先将线性频谱映射到基于听觉感知的Mel非线性频谱中,然后转换到倒谱上。

 

        将普通频率转化到Mel频率的公式是:


由下图可以看到,它可以将不统一的频率转化为统一的频率,也就是统一的滤波器组。


在Mel频谱上面获得的倒谱系数h[k]就称为Mel频率倒谱系数,简称MFCC。

 

MFCC特征提取过程
1.预加重

预加重处理其实是将语音信号通过一个高通滤波器:


式中μ的值介于0.9-1.0之间,我们通常取0.97。预加重的目的是提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱。同时,也是为了消除发生过程中声带和嘴唇的效应,来补偿语音信号受到发音系统所抑制的高频部分,也为了突出高频的共振峰。

2.分帧

先将N个采样点集合成一个观测单位,称为帧。通常情况下N的值为256512,涵盖的时间约为20~30ms左右。为了避免相邻两帧的变化过大,因此会让两相邻帧之间有一段重叠区域,此重叠区域包含了M个取样点,通常M的值约为N1/21/3。通常语音识别所采用语音信号的采样频率为8KHz16KHz,以8KHz来说,若帧长度为256个采样点,则对应的时间长度是256/8000×1000=32ms

3.加窗(Hamming Window

将每一帧乘以汉明窗,以增加帧左端和右端的连续性。假设分帧后的信号为S(n),n=0,1…,N-1, N为帧的大小,那么乘上汉明窗

,W(n)形式如下:


不同的a值会产生不同的汉明窗,一般情况下a0.46

4.快速傅里叶变换

由于信号在时域上的变换通常很难看出信号的特性,所以通常将它转换为频域上的能量分布来观察,不同的能量分布,就能代表不同语音的特性。所以在乘上汉明窗后,每帧还必须再经过快速傅里叶变换以得到在频谱上的能量分布。对分帧加窗后的各帧信号进行快速傅里叶变换得到各帧的频谱。并对语音信号的频谱取模平方得到语音信号的功率谱。设语音信号的DFT为:

 

          式中x(n)为输入的语音信号,N表示傅里叶变换的点数。

 5. 三角带通滤波器

 将能量谱通过一组Mel尺度的三角形滤波器组,定义一个有M个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采用的滤波器为三角滤波器,中心频率为f(m),m=1,2,...,MM通常取22-26。各f(m)之间的间隔随着m值的减小而缩小,随着m值的增大而增宽,如图所示:

三角带通滤波器有两个主要目的:

对频谱进行平滑化,并消除谐波的作用,突显原先语音的共振峰。(因此一段语音的音调或音高,是不会呈现在 MFCC参数内,换句话说,以 MFCC为特征的语音辨识系统,并不会受到输入语音的音调不同而有所影响)此外,还可以降低运算量。

6.计算每个滤波器组输出的对数能量为:


7.经离散余弦变换(DCT)得到MFCC系数           


将上述的对数能量带入离散余弦变换,求出L阶的Mel-scale Cepstrum参数。L阶指MFCC系数阶数,通常取12-16。这里M是三角滤波器个数。

8.对数能量

此外,一帧的音量(即能量),也是语音的重要特征,而且非常容易计算。因此,通常再加上一帧的对数能量(定义:一帧内信号的平方和,再取以10为底的对数值,再乘以10)使得每一帧基本的语音特征就多了一维,包括一个对数能量和剩下的倒频谱参数。

注:若要加入其它语音特征以测试识别率,也可以在此阶段加入,这些常用的其它语音特征包含音高、过零率以及共振峰等。

9.动态差分参数的提取(包括一阶差分和二阶差分)

标准的倒谱参数MFCC只反映了语音参数的静态特性,语音的动态特性可以用这些静态特征的差分谱来描述。实验证明:把动、静态特征结合起来才能有效提高系统的识别性能。差分参数的计算可以采用下面的公式:


N通常取2.

特征匹配和查询(未完待续)

Reference:

0.      梅尔频率倒谱系数

1.      MelFrequency Cepstral Coefficient (MFCC) tutorial

2.      音频特征提取、分析与音频音乐检索

3.      Fundamentalsof Spectrum Analysis

0 0
原创粉丝点击