Advertisement

mfcc特征提取_MFCC特征提取

阅读量:
0ee2f9ec9df16b1e6e6c2dd46c685367.png

梅尔倒谱系数(MFCC)被用作语音信号处理中的常见特征之一,在各个语音任务中均显示出较好的应用效果。本文旨在阐述MFCC特征的一般提取方法,并与大家共同探讨这一话题~

2d5fc44915e39945807294fa05eac01d.png

MFCC特征通用提取过程

预设连续语音为

equation?tex=signal+%3D+%5B+0%2C0%2C-1%2C...%2C+627%2C611%2C702%5D

共含有107000个点;预加重系数

equation?tex=%5Calpha

帧长为

equation?tex=frame%5C_len

,帧移

equation?tex=frame%5C_step

;窗函数为

equation?tex=w%5Bframe%5C_len%5D

,fft的个数为

equation?tex=NFFT

,采样频率为

equation?tex=f_%7Bs%7D

预加重、分帧、加窗

  • 预加重

前向加权的目的在于消除口唇辐射的影响,并提升语音的高频率分辨能力;其具体实施过程则可以通过差分方程来完成。

equation?tex=signal%5Bi%5D%3Dsignal%5Bi%2B1%5D-%5Calpha%2Asignal%5Bi%5D

预加重后,语音信号变化为

equation?tex=signal%3D%5B+0%2C0%2C+-1%2C...%2C+-40.36%2C2.81%2C109.33%5D

,数组大小还是107000。 其中预加重系数

equation?tex=%5Calpha%3D0.97
  • 分帧

为了确保输入信号的平稳性, 我们需要将语音信号分割成一个个的小块(称为帧), 也就是进行分帧处理. 帧数为

equation?tex=numframes

,则其

复制代码
    numframes = 1 + int(math.ceil((1.0 * len(signal) - frame_len) / frame_step))

对连续语音

equation?tex=signal

equation?tex=frame%5C_len

个采样点为一帧的长度,以

equation?tex=frame%5C_step

每个采样点数量为相邻帧之间的位移量,在帧长度不足一帧的情况下进行补零处理后,我们能够获得

equation?tex=numframes

个帧。

  • 加窗

采用加窗方法旨在解决由于非周期性信号截断所导致的频谱在整个频带内出现拖尾现象这一泄漏问题,并可使整体更加连续以避免产生吉布斯效应。常见的窗函数包括汉明型窗口、汉宁型窗口以及矩形窗口。

加窗操作等价于将每一段语音帧中的采样点序列与其对应的窗函数元素进行乘法运算。在每一段语音帧中进行处理时

equation?tex=x%5Bframe%5C_len%5D

则加窗操作为:

复制代码
 for i in range(frame_len):

    
     x[i] = x[i]*w[i]

快速傅里叶变换 FFT

离散傅里叶变化的公式如下:

equation?tex=X%5Bk%5D%3D%5Csum_%7Bn%3D0%7D%5E%7BN-1%7D+x%5Bn%5D+e%5E%7B-j%282+%5Cpi+%2F+N%29+k+n%7D

,其中

equation?tex=%EF%BC%880%5Cleq+k+%5Cleq+N-1%EF%BC%89

为满足FFT“分治”的策略,我们需要对帧长

equation?tex=frame%5C_len

进行补零,使其补零后的长度

equation?tex=N

为2的幂次方;比如当原始帧长为

equation?tex=frame%5C_len%3D200

,我们对其进行补零后的长度为

equation?tex=N%3D256

,其中

equation?tex=NFFT%3DN

  • 在采样频率 为
equation?tex=f_%7Bs%7D

的情况下,

equation?tex=x%5Bn%5D

的n只是一个离散的数值,那每一点到底代表了什么频率分量?

假设采样频率是

equation?tex=f_%7Bs%7D

,则

equation?tex=x%5Bn%5D+%3D+x%28nT_%7Bs%7D%29%3Dx%28%5Cfrac%7Bn%7D%7Bf_%7Bs%7D%7D%29

,所以事实上把

equation?tex=x%5Bn%5D

的式子里面的

equation?tex=n

equation?tex=f_%7Bs%7Dt

替换。很明显,在特定的

equation?tex=k_%7Bc%7D

点的频率分量的频率为

equation?tex=2%5Cpi+k_%7Bc%7D+f_%7Bs%7D%2FN+%3D+2%5Cpi+f

,从而得出

equation?tex=X%5Bk_%7Bc%7D%5D

代表的是频率为

equation?tex=f%3D+k_%7Bc%7D+f_%7Bs%7D%2FN

的频率“分量”

因为傅里叶变化固有的性质:实数信号变换的结果

equation?tex=X%5Bk%5D

由一组复数组成的一半数据与其共轭配对,则在计算过程中有一半的数据不需要进行变换;其输出维度相应减少。

equation?tex=NFFT%2F2%2B1

,(实数和虚数不分开表示的情况下)经过FFT后,计算频谱图的功率谱。

Mel滤波器组

MFCC的研究着重于人耳感知特征这一领域,在声学处理中这一方法具有重要的应用价值。值得注意的是,在声学处理中人们往往将声音音高与声波频率之间的对应关系简单地理解为严格的线性比例关系这一认知是不准确的。基于Mel尺度的方法更能准确反映人类听觉系统的特点

equation?tex=Mel%28f%29+%3D+2595%2Alg%281%2Bf%2F700%29
f3746fc9fc11313b4e0ef86e3795d058.png

Mel频率尺度滤波器组

其实现过程如下:

bfad2907d2f4fdadcc97d81b986b6d73.png

相邻三角形滤波器之间的关系

通过上述公式实现了实际频率尺度向Mel频率尺度的转换。
基于Mel频率域确定最低频率。

equation?tex=Mel%5C_low

、与最高频率

equation?tex=Mel%5C_high

和Mel滤波器个数

equation?tex=L

。将每一个三角形滤波器的中心频率

equation?tex=c%28l%29

在Mel频率与上等间隔分配。设

equation?tex=o%28l%29%E3%80%81c%28l%29%E3%80%81h%28l%29

分别为第

equation?tex=l+

个三角形滤波器的下限、中心频率、上限,则:

equation?tex=c%28l%29%3Dh%28l-1%29%3Do%28l%2B1%29
  1. 每个三角形滤波器
equation?tex=W_%7Bl%7D%28k%29

为:

equation?tex=W_%7Bl%7D%28k%29%3D%5Cleft%5C%7B%5Cbegin%7Barray%7D%7Bll%7D+%5Cfrac%7Bk-o%28l%29%7D%7Bc%28l%29-o%28l%29%7D+%26+o%28l%29+%5Cleqslant+k+%5Cleqslant+c%28l%29+%5C%5C+%5Cfrac%7Bh%28l%29-k%7D%7Bh%28l%29-c%28l%29%7D+%26+c%28l%29+%5Cleqslant+k+%5Cleqslant+h%28l%29+%5Cend%7Barray%7D%5Cright.

4.根据语音信号的功率谱

equation?tex=%5Cleft%7CX_%7Bn%7D%28k%29%5Cright%7C%5E%7B2%7D

,求每一个三角形滤波器的输出:

equation?tex=m%28l%29%3D%5Csum_%7Bk%3Do%28l%29%7D%5E%7Bh%28l%29%7D+W_%7Bl%7D%28k%29%5Cleft%7CX_%7Bn%7D%28k%29%5Cright%7C%5E%7B2%7D%5Cquad+l%3D1%2C2%2C+%5Ccdots%2C+L

注意上述式子的采样点“k”与实际频率f的对应关系为:

equation?tex=f%3D+k+f_%7Bs%7D%2FN

倒谱分析

语音信号的倒谱分析涉及计算其倒谱特征参数的过程;通过同态处理来进行相关运算。同态处理将卷积关系转换为求和关系的操作。

de85fd39ded0014e87561f42a79ea32e.png

频谱图

该图表展示了语音信号的频率分布情况;其中红色细线标识频谱包络线(Spectral Envelope),其上所带有所谓的声音辨识特征;由于这一特性具有重要意义,请问是否可以考虑将其进行提取?为此需要将这一特征进行提取;为了实现这一目标,请问是否可以考虑采用同态处理方法?

我们可以将freq spectrum视为由freq spectral envelope和freq spectral details组成。取其对数以建立加性关系。
其中 freq spectral envelope可被视为'低频率成分'、而 freq spectral details则用于识别'高频成分'。
通过DFT分离后所得的结果被称为倒谱,在倒谱中,前几维系数对应于原始信号的低频率特征。

3c0fa15d51e31e198ed9af4e0b397f67.png

Delta与二阶Delta

MFCC主要用于描述语音信号中的谱包络特征。然而,在分析语音信号时会发现其存在动态变化的信息。因此,在MFCC的基础上引入了一阶差分(deltas)和二阶差分(deltas-deltas)。其计算公式如下:

equation?tex=d_%7Bt%7D%3D%5Cfrac%7B%5Csum_%7Bn%3D1%7D%5E%7BN%7D+n%5Cleft%28c_%7Bt%2Bn%7D-c_%7Bt-n%7D%5Cright%29%7D%7B2+%5Csum_%7Bn%3D1%7D%5E%7BN%7D+n%5E%7B2%7D%7D

其中t代表第几个帧?N通常取值为2?c指的是MFCC中的某个系数吗?而deltas的变化是在delta的基础上再计算基于这些delta的变化量。

引用

furious:深入理解离散傅里叶变换(DFT)​zhuanlan.zhihu.com

fd875b9a4e3aac30da7885f8ef7461aa.png

Anssel:AI(I)语音(I):MFCC特征参数提取​zhuanlan.zhihu.com

98bd20f69cb49795fc0e0e38b65ea811.png

倒谱分析(Cepstrum Analysis)​blog..net

c62237aaad092860d85a4bff65847dc3.png

《语音信号处理》赵力著

全部评论 (0)

还没有任何评论哟~