语音信号的梅尔频率倒谱系数(MFCC)的原理讲解及python实现

本文详细介绍了梅尔频率倒谱系数(MFCC)的原理,包括梅尔尺度和临界带理论,以及人耳听觉特性。通过多个步骤展示了MFCC的计算过程,包括信号预处理、加窗、FFT、能量谱计算、使用Mel滤波器组、取对数、DCT变换和均值归一化。同时提供了Python实现MFCC的代码示例,并用librosa库演示了MFCC特征的提取和绘制梅尔频谱图。
摘要由CSDN通过智能技术生成

梅尔倒谱系数(MFCC)
  梅尔倒谱系数(Mel-scale FrequencyCepstral Coefficients,简称MFCC)。依据人的听觉实验结果来分析语音的频谱,

MFCC分析依据的听觉机理有两个

第一Mel scale:人耳感知的声音频率和声音的实际频率并不是线性的,有下面公式

fmel=2595∗log10(1+f700)

f=700(10fmel/2595−1)

式中fmel是以梅尔(Mel)为单位的感知频域(简称梅尔频域),f是以Hz为单位的实际语音频率。fmel与f的关系曲线如下图所示,若能将语音信号的频域变换为感知频域中,能更好的模拟听觉过程的处理。
在这里插入图片描述

第二临界带(Critical Band):把进入人耳的声音频率用临界带进行划分,将语音在频域上就被划分成一系列的频率群,组成了滤波器组,即Mel滤波器组。

研究表明,人耳对不同频率的声波有不同的听觉敏感度。从200Hz到5000Hz的语音信号对语音的清晰度影响较大。两个响度不等的声音作用于人耳时,则响度较高的频率成分的存在会影响到对响度较低的频率成分的感受,使其变得不易察觉,这种现象称为掩蔽效应。

由于频率较低的声音(低音)在内耳蜗基底膜上行波传递距离大于频率较高的声音(高音),因此低音容易掩蔽高音。低音掩蔽的临界带宽较高频要小。所以,人们从低频到高频这一段频带内按临界带宽的大小由密到疏安排一组带通滤波器,对输入信号进行滤波。将每个带通滤波器输出的信号能量作为信号的基本特征,对此特征经过进一步处理后就可以作为语音的输入特征。由于这种特征不依赖于信号的性质,对输入信号不做任何的假设和限制,又利用了听觉模型的研究成果。因此,这种参数比基于声道模型的LPCC相比具有更好的鲁棒性,更符合人耳的听觉特性,而且当信噪比降低时仍然具有较好的识别性能。

求MFCC的步骤

将信号帧化为短帧
对于每个帧,计算每帧语音的功率谱(周期图估计)
将mel滤波器组应用于功率谱,求滤波器组的能量,将每个滤波器中的能量相加
取所有滤波器组能量的对数
DCT变换

MFCC的提取过程
在这里插入图片描述
预处理
预处理包括预加重、分帧、加窗函数。假设我们的语音信号采样频率为8000Hz,语音数据在这里获取

import numpy
import scipy.io.wavfile
from scipy.fftpack import dct

sample_rate, signal = scipy.io.wavfile.read(‘OSR_us_000_0010_8k.wav’)
signal = signal[0:int(3.5 * sample_rate)] # 我们只取前3.5s

时域中的语音信号
在这里插入图片描述
预加重
预加重滤波器在以下几个方面很有用:

平衡频谱,因为高频通常与较低频率相比具有较小的幅度,
避免在傅里叶变换操作期间的数值问题和
改善信号 - 噪声比(SNR)
消除发声过程中声带和嘴唇的效应,来补偿语音信号受到发音系统所抑制的高频部分,也为了突出高频的共振峰。
预加重处理其实是将语音信号通过一个高通滤波器:

y(t)=x(t)−αx(t−1)
其中滤波器系数(α)的通常为0.95

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值