ichou1のブログ

主に音声認識、時々、データ分析のことを書く

音声ファイル特徴量変換(その3)MFCC

前回の続き。

「MFCC」(メル周波数ケプストラム係数)について見ていく。

ここでは、視覚的な結果確認のみ書くので、計算過程などは以下をご参照。
work-in-progress.hatenablog.com

音声データは「yes」という一秒間の発話データ。
f:id:ichou1:20200216111412p:plain

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()

f:id:ichou1:20200223190911p:plain

メル周波数変換後にデシベル変換したデータを渡しても同じ結果になる。

# 音声ファイルをロードする部分はこれまでと同様

# メル周波数のスペクトログラムを求める
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)

f:id:ichou1:20200223191038p:plain

比較してみる。
左がDCTタイプ2、右がDCTタイプ3
f:id:ichou1:20200223190911p:plainf:id:ichou1:20200223191038p:plain

左がMFCC(DCTタイプ2)、右がlog-mel spectrum(対数変換あり)
f:id:ichou1:20200223190911p:plainf:id:ichou1:20200223120058p:plain