音声ファイル特徴量変換(その3)MFCC
前回の続き。
「MFCC」(メル周波数ケプストラム係数)について見ていく。
ここでは、視覚的な結果確認のみ書くので、計算過程などは以下をご参照。
work-in-progress.hatenablog.com
音声データは「yes」という一秒間の発話データ。
MFCC(メル周波数ケプストラム係数)
DCT(離散コサイン変換) Type 2
import librosa # Audio Data audio_path = 'speech_dataset/yes/0a7c2a8d_nohash_0.wav' # Load data, sr = librosa.load(audio_path, sr=16000) # MFCC(メル周波数ケプストラム係数)に変換 mfcc = librosa.feature.mfcc(data, sr=sr, n_mfcc=40, n_mels=128, win_length=480, hop_length=160, n_fft=512, dct_type=2) print(mfcc.shape) # --> (40, 101) # plot import librosa.display import matplotlib.pyplot as plt librosa.display.specshow(mfcc, sr=sr, hop_length=160, x_axis='time') plt.colorbar() plt.title('yes/0a7c2a8d_nohash_0.wav') plt.tight_layout() plt.show()
メル周波数変換後にデシベル変換したデータを渡しても同じ結果になる。
# 音声ファイルをロードする部分はこれまでと同様 # メル周波数のスペクトログラムを求める mel = librosa.feature.melspectrogram(y=data, sr=sr, n_mels=128, n_fft=512, win_length=480, hop_length=160) # MFCC(メル周波数ケプストラム係数)に変換 mfcc = librosa.feature.mfcc(S=librosa.power_to_db(mel), sr=sr, n_mfcc=40, dct_type=2)
DCT(離散コサイン変換) Type 3
# 音声ファイルをロードする部分はこれまでと同様 # MFCC(メル周波数ケプストラム係数)に変換 mfcc_htk = librosa.feature.mfcc(data, sr=sr, n_mfcc=40, n_mels=128, win_length=480, hop_length=160, n_fft=512, dct_type=3)
比較してみる。
左がDCTタイプ2、右がDCTタイプ3
左がMFCC(DCTタイプ2)、右がlog-mel spectrum(対数変換あり)