pythonで音響信号の特徴抽出方法まとめ

このサイトでは音声などの音響信号についての特徴抽出手法を実際にやってみています。
最近深層学習を用いた異常検知等が流行っており、音などの信号から特徴を抽出する手法が多く考えられてきました。
このページでは簡単なものから近年よく用いられるものまで、様々な特徴抽出手法をまとめてみます。

随時更新予定です。

音源はESC-50というデータセットから3つの音源をお借りしました。
データセットのリポジトリはこちら➡https://github.com/karolpiczak/ESC-50

  1. hen(めんどり)のタグがついた音源➡1-5996-A-6.wav
  2. siren(サイレン)のタグがついた音源➡1-76831-A-42.wav
  3. wind(風)のタグがついた音源➡1-137296-A-16.wav

生波形

まずは生の波形を見てみます。
音ファイルはwavファイルが扱いやすいです。
pythonでwavファイルを読んで波形を表示するで紹介しています。

音量

音量は簡単で分かりやすい特徴量になります。
音量だけでも必要な情報が足りる場合もあると思います。
pythonで音量を計算するで紹介しています。

ヒルベルト変換

瞬時位相と瞬時周波数を推定します。
pythonで瞬時周波数推定~ヒルベルト変換~で紹介しています。
ガタガタしてますね。

STFT(短時間フーリエ変換)

信号の周波数の変化を知りたい(=時間周波数解析)をするときにはまずこの方法です。
簡単です。>pythonで時間周波数解析~STFT~で紹介しています。

メルスペクトログラム

STFTで得られたスペクトルを人間の聴覚に近いメル尺度にしたものです。
>pythonで時間周波数解析~メルスペクトログラム~で紹介しています。

連続ウェーブレット変換

連続ウェーブレット変換も時間周波数解析の手法です。
あまり使われていないです。計算時間も長い。
>pythonで時間周波数解析~ウェーブレット変換~で紹介しています。

定Q変換

低周波数で分解能が良く、STFTと比較されることも多いです。
pythonで時間周波数解析~定Q変換~で紹介しています。

LPC分析

人の音声をモデル化して、音声の特徴を解析します。
pythonで音声分析~LPC分析&ケプストラム分析~で紹介してます。
pythonで話者識別~LPC解析とSVM~ではこの特徴量を使って話者識別を試しました。

ケプストラム分析

低周波数で変動する声道の特性を抽出する手法です。
pythonで音声分析~LPC分析&ケプストラム分析~で紹介しています。

メル周波数ケプストラム

人間の聴覚特性を考慮したケプストラム分析です。
pythonで音声分析~メル周波数ケプストラム係数(MFCC)~で紹介しています。
よく使われる特徴量です。

コメント