淺談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')