Python提取MFCC(批量操作)

本文详细介绍了MFCC的原理,包括预滤波、A/D变换、预加重、分帧、加窗、快速傅立叶变换、三角窗滤波、对数运算、离散余弦变换、谱加权等多个步骤,并讨论了Python中使用python_speech_features库提取MFCC的方法,生成的MFCC特征为39维,包含一阶和二阶差分参数。
摘要由CSDN通过智能技术生成

MFCC简介:

  Mel频率是基于人耳听觉特性提出来的,它与Hz频率成非线性对应关系 。Mel频率倒谱系数(MFCC)则是利用它们之间的这种关系,计算得到的Hz频谱特征,MFCC已经广泛地应用在声纹识别和语音识别领域。由于Mel频率与Hz频率之间非线性的对应关系,使得MFCC随着频率的提高,其计算精度随之下降。因此,在应用中常常只使用低频MFCC,而丢弃中高频MFCC,MFCC的提取主要包括以下几个步骤:

1.预滤波:前端带宽为300-3400Hz的抗混叠滤波器。

2.A/D变换:8kHz的采样频率,12bit的线性量化精度。

3.预加重:通过一个一阶有限激励响应高通滤波器,使信号的频谱变得平坦,不易受到有限字长效应的影响。

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

5.加窗:采用哈明窗对一帧语音加窗,以减小吉布斯效应的影响。语音在长范围内是不停变动的,没有固定的特性无法做处理,所以将每一帧代入窗函数,窗外的值设定为0,其目的是消除各个帧两端可能会造成的信号不连续性。常用的窗函数有方窗、汉明窗和汉宁窗等,根据窗函数的频域特性,常采用汉明窗。将每一帧乘以汉明窗,以增加帧左端和右端的连续性

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

7.三角窗滤波: 用一组Mel频标上线性分布的三角窗滤波器(共24个三角窗滤波器),对信号的功率谱滤波,每一个三角窗滤波器覆盖的范围都近似于人耳的一个临界带宽,以此来模拟人耳的掩蔽效应。

8.求对数:三角窗滤波器组的输出求取对数,可以得到近似于同态变换的结果。

9.离散余弦变换(Discrete Cosine Transformation, DCT): 去除各维信号之间的相关性,将信号映射到低维空间。

10.谱加权:由于倒谱的低阶参数易受说话人特性、信道特性等的影响,而高阶参数的分辨能力比较低,所以需要进行谱加权,抑制其低阶和高阶参数。 倒谱均值减(Cepstrum Mean Subtraction, CMS):CMS可以有效地减小语音输入信道对特征参数的影响。

11.差分参数: 实验表明,在语音特征中加入表征语音动态特性的差分参数,能够提高系统的识别性能。

12.短时能量:语音的短时能量也是重要的特征参数,短时归一化对数能量及其一阶差分、二阶差分参数

Python代码说明

  该示例代码调用的是 python_speech_features 包提取MFCC,MFCC基本维数是13维,将其与一阶差分、二阶差分组合,返回的是39维特征的MFCC。

python代码如下:

<
  • 17
    点赞
  • 141
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值