今天搞毕设了么?——4.15 MFCC及倒谱系数

浅谈MFCC  

MFCC的基本过程可以看看这个,(1)浅谈MFCC(2)声音特征提取但这个也就是个基本的过程,毕设的基本理论方面是可以用的到的,而具体详细实现的细节及代码后续再做补充。

MFCC最直观的认知,它的13个系数(也许还有13个一阶差分和13个二阶差分)都是通过离散余弦变换(DCT)而来,并取前13个系数。DCT


所说,为了获得频谱的倒谱,倒谱的低频分量就是频谱的包络,倒谱的高频分量就是频谱的细节,这些都是语音识别上经过科学验证十分有效的语音物理信息。但语音识别是对机器来说的,所以我们必须对物理信息进行某种“编码”,得到的就是MFCC13维特征向量,你是否理解它不重要,只要机器能够识别就行了。

综上所述,我认为MFCC的物理含义就是——在语音识别领域,将语音物理信息(频谱包络和细节)进行编码运算得到的一组特征向量。

在知乎上看到这样一个很直观的例子  Mel频率倒谱系数对应的物理含义

首先看下面图中的波形,如果你“播放”它,其实就是鼓声“咚哒咚咚哒”这五声儿。


把这段鼓声分成130帧,每一帧内提取20维的MFCC,就会得到下图:


可以看到“咚”和“哒”的时候对应的MFCC还是有区别的,为了让这个区别更明显,可以对每一维的系数稍作处理,于是得到下图:


附录python源码:

# 需要用到的包
import numpy, scipy, sklearn, librosa
# 录入咚哒咚咚哒的音频例子
x, fs = librosa.load('example.wav')
# 画出波形图(上方第一个图)
librosa.display.waveplot(x, sr=fs)
# 提取MFCC
mfccs = librosa.feature.mfcc(x, sr=fs)
# 获取特征值的维度
print mfccs.shape  #打印将输出(20,130)
# 画出MFCC的图(上方第二个图)
librosa.display.specshow(mfccs, sr=fs, x_axis='time')
# 对MFCC的数据进行处理
mfccs = sklearn.preprocessing.scale(mfccs, axis=1)
# 画出处理后的图(上方第三个图)
librosa.display.specshow(mfccs, sr=fs, x_axis='time')


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章