pythonで音楽の拍子認識

今回はpythonを用いて音楽の拍子の認識を行います。
この技術はBeat Trackingと呼ばれています。

アルゴリズム

音声信号の節である音節はOnset(子音群)とRhyme(母音群)に分かれています。
このOnsetを用いて拍子認識を行います。
具体的には以下の手順の通りです。

  1. 音の始まりであるOnset部分の強さの時間変化を計算します。
  2. Onsetの相関関係からテンポを推定します。
  3. 推定したテンポと一致するOnsetピークを抽出します。
librosaを用いた実装

ライブラリはlibrosaを用います。pipでインストールできます。
librosa.onset.onset_strengthでOnsetの時間変化を計算します。
librosa.beat.beat_trackでテンポを計算し、拍子の検出も行います。

嵐さんの「Love So Sweet」の音源で試してみました。
実行結果は下のグラフの通りです。

規則的に立つOnsetピーク部分で拍子の検出ができています。
推定されたテンポは139.67 BPMで、調べたところこちらも正しそうでした。

コメント

タイトルとURLをコピーしました