5

语音信号处理(三)MFCC特征提取

 3 years ago
source link: http://kevinnan.org.cn/index.php/archives/678/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

梅尔倒谱系数(Mel-Frequency Ceptral Coeffcients,MFCC),因为其独特的基于倒谱(ceptral)的提取方式,是目前最常用也是最有效的的语音特征提取算法之一。下图描述了MFCC语音特征提取的过程。

1、步骤介绍

1.1、预加重

语音信号的大部分能量都集中在低频部分。预加重是将原始语音信号通过一个高通滤波器,增强语音中的高频部分,并保持在低频到高频的整个频段中,能够使用同样的信噪比求频谱。下图反映了预加重之前和之后的对比。

1.2、分帧

语音信号具有短时平稳性,所以我们通常需要将一段语音信号分为很多帧,然后对每一帧分别进行处理。一般选择帧长为25ms,帧移为10ms。然后根据音频的采样率将时间变为采样点。比如采样率为16000HZ,则帧长为(16000/1000)*25=400,帧移为(16000/1000)*10=160

1.3、加窗

分帧方式相当于对语音信号进行了加矩形窗的处理。

矩形窗在时域上对信号进行有现阶段,对应频域的通带较窄,边界存在多个旁瓣,发生严重的频谱泄露。

为了减少频谱泄露,通常对每帧的信号进行加窗处理。常用的窗函数有汉明窗(Hamming)、汉宁窗(Hanning)、布莱克曼窗(Blackman)等。其中汉明窗能够更好的保留原始语音信号的频率特性,使用最为广泛。

1.4、DFT

语音的感知过程与人类听觉系统具有频谱分析功能紧密相关。因此,对语音信号进行频谱分析,是认识和处理语音信号的重要方法。大部分声音(包括语音)都是复合音,涉及多个频率段,因此我们需要通过频谱来对这些频段进行分析。

1.5、Mel滤波器

人类对语音信号的高频部分相对不敏感。因此人类对声音频率的感知是非线性的。

  • 1KHZ以下,与频率成线性关系;
  • 1KHZ以上,与频率成对数关系;

Mel频率可以用公式表达如下:

研究者根据心理声学实验得到了类似于耳蜗作用的一组滤波器组, 模拟人耳对不同频段声音的感知能力。多个带宽不等的三角滤波器组成Mel频率滤波器组,线性频率小于1000Hz的部分为线性间隔,而线性频率大于1000Hz的部分为对数间隔。

1.6、取对数log

将之前经过每个Mel滤波器的输出取对数,得到相应频带的对数功率谱。计算对数功率谱的作用:

  • 取log压缩动态范围
  • 对数使特征随声耦合变化的变化较小

1.7、DCT

语音产生的模型:声源激励模型+声道响应模型。我们需要要这两种模型分开处理。倒谱是通过对对数幅度谱进行逆离散傅立叶变换(IDFT)而得到的。倒谱分析,又称为同态滤波,主要采用时频变换,得到对数功率谱再进行逆变换,分析出倒谱域的倒谱系数。通过傅里叶反变换,得到时域的语音信号倒谱。

这里可类比图像处理中的同态滤波算法,一副图像可以建模成照射强度(illumination)i和反射强度(reflection)r。一般来说,自然图片的光照一般是均匀渐变的,所以i应该是低频分量,而不同物体对光的反射是具有突变的,所以r是高频分量。现在我们对两边取对数,并做Fourier变换,得到线性组合的频率域。我们希望对低频能量进行压制,这样就降低了动态范围,而要对高频进行提高,这样就增强了图像的对比度。

在实际应用中,离散余弦变换(DCT)具有最优的去相关性能, 能够将信号能量集中到极少数的变换系数上,特别是大多数的自 然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分。

一般采用DCT反变换代替傅里叶反变换,直接获取低频倒谱系数, 对应于包络信息,也就是声道特征。

1.8 MFCC

  • MFCC广泛用于基于HMM的语音识别系统;
  • 前12个MFCC通常被用作特征向量,非常紧凑;
  • 相比普通的频谱,MFCC特征之间有更少的相关性,更容易建立高斯混合模型GMM;
  • 可惜的是MFCC对噪声的鲁棒性不强;

2、总结:MFCC提取特征提取流程

  • 将信号进行预加重、分帧、加汉明窗处理,然后进行短时傅里叶变换(STFT)得到其频谱;

  • 求频谱平方,将每个Mel滤波器频带内的能量进行叠加,第k个滤波器输出功率谱X[k]

  • 将每个滤波器的输出取对数,得到相应频带的对数功率谱,然后进行反离散余弦变换(DCT),得到L个MFCC系数。

3、使用HTK提取MFCC过程

MFCC特征提取代码

4、参考资料

【1】爱丁堡大学 ASR课程 slides

【2】厦门大学智能语音实验室 ASR课程 slides

【3】二维DCT

【4】一维DCT

【5】基于MFCC的语音数据特征提取概述


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK