はじめに
Kaggle Free Sound Audio Tagging 2019で学ぶ音声処理ではKaggle
コンペとその解法を題材に音声処理について解説しています。この記事は、スペクトログラムの計算に出てくるlibrosa.core.stft
について掘り下げます
librosa.core.stft
公式マニュアル
https://librosa.org/librosa/master/generated/librosa.core.stft.html
解説
通常、フーリエ変換は信号の全時間にわたって計算を行いますが、時間ごとに周波数に関する情報が欲しい場合は適しません。そういった場合に、短い区間に対するフーリエ変換を繰り返します。これが短時間フーリエ変換です。
パラメータ
- y : np.ndarray [shape=(n,)], real-valued
- n_fft : int > 0 [scalar]
- hop_length : int > 0 [scalar]
- win_length : int <= n_fft [scalar]
- window : string, tuple, number, function, or np.ndarray [shape=(n_fft,)]
- center : boolean
- dtype : numeric type
- pad_mode : string or function
win_length
を変化させることにどのような意味があるのかを考察します。
準備
1 | import IPython.display as ipd |
デフォルト値
まずはデフォルト値から見てみます。デフォルトではwin_length=n_fft
となります。n_fft
のデフォルト値は2048
ですので、win_length=2048
となります。
1 | show_stft(2048,512,2048) |

win_lenghtを小さくした場合
波形を小さく区切って周波数分析を行うと、時間分解能は細かくなるが、周波数分解能は粗くなる。
1 | show_stft(2048,512,32) |

win_lenghtを大きくした場合
波形を大きく区切って周波数分析を行うと、周波数分解能は細かくなるが、時間分解能は粗くなる。
1 | show_stft(16384,512,16384) |

記事情報
- 投稿日:2020年7月4日
- 最終更新日:2020年7月4日