(图摄于阿姆斯特丹梵高博物馆)
在重读《解析深度学习:语音识别实践》中,发现有段文字跟我预想的并不太一样:
在我的印象中,mfcc的维度应该和梅尔滤波器组数是一样的:stft->mel
这个图(FBank与MFCC - sun___shy的博客 - CSDN博客)就能够说清楚,然后再过log(||)和DCT就是MFCC了。
def mfcc(y=None, sr=22050, S=None, n_mfcc=20, dct_type=2, norm='ortho', **kwargs):
if S is None:
S = power_to_db(melspectrogram(y=y, sr=sr, **kwargs))
return scipy.fftpack.dct(S, axis=0, type=dct_type, norm=norm)[:n_mfcc]
和它调用的子函数
def melspectrogram(y=None, sr=22050, S=None, n_fft=2048, hop_length=512,
power=2.0, **kwargs):
S, n_fft = _spectrogram(y=y, S=S, n_fft=n_fft, hop_length=hop_length,
power=power)
# Build a Mel filter
mel_basis