浅谈MFCC
MFCC最直观的认知,它的13个系数(也许还有13个一阶差分和13个二阶差分)都是通过离散余弦变换(DCT)而来,并取前13个系数。DCT
综上所述,我认为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')