librosa.feature.melspectrogramのコードを読む

はじめに

Kaggle Free Sound Audio Tagging 2019で学ぶ音声処理ではKaggleコンペとその解法を題材に音声処理について解説しています。この記事は、紹介している解法にも出てきたメルスペクトログラムの計算について掘り下げます。

librosa.feature.melspectrogram

引数

公式ドキュメントから引用しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
y:np.ndarray [shape=(n,)] or None
audio time-series

sr:number > 0 [scalar]
sampling rate of y

S:np.ndarray [shape=(d, t)]
spectrogram

n_fft:int > 0 [scalar]
length of the FFT window

hop_length:int > 0 [scalar]
number of samples between successive frames. See librosa.core.stft

power:float > 0 [scalar]
Exponent for the magnitude melspectrogram. e.g., 1 for energy, 2 for power, etc.

kwargs:additional keyword arguments
Mel filter bank parameters. See librosa.filters.mel for details.

y

音声の時系列信号です。

sr

サンプリングレートを表します。

S

音声(y)を引数に取ることもできますが、スペクトログラムを事前に計算して渡すこともできます。

以下のコードで結果が等しくなることを確認できます。

1
2
3
4
melspec = librosa.feature.melspectrogram(y, sr)
S = np.abs(librosa.stft(y))**2 # スペクトログラムを計算する
melspec_s = librosa.feature.melspectrogram(S=S)
np.array_equal(melspec, melspec_s) # arrayが等しいことを確認

n_fft

FFT窓の幅を表します。

hop_length

ステップ幅を表します。

power

1でエネルギー、2でパワーとなります。デフォルト値は2です。

kwargs

メルフィルタバンクのパラメータを与えることができます。メルフィルタバンクの詳細についてはメルフィルタバンクを理解するで解説しています。

記事情報

  • 投稿日:2020年6月30日
  • 最終更新日:2020年7月1日