Linux音楽解析ライブラリlibrosaで津軽三味線をスペクトル解析してみた音声信号は、様々な周波数の成分から構成されています。このデータから、周波数毎の強さをフーリエ変換によって調べる処理をスペクトル解析といいます。・自動採譜などが可能になります。簡単なコードを書くだけでスペクトル解析をやってくれるライブラリ「librosa」を見つけたので、今回は津軽三味線のスペクトル解析を実施して、周波数のデータをグラフ化するところまでやってみます。変換まとめlibrosaとは?librosa(りぶろさ)は、音楽分析のためのPythonパッケージです。2015年にリリースされたそうです。スペクトル解析、テンポや拍子の分析、画像出力など、音楽の分析に必要な機能があらかじめ実装されていて、数行のコードを書くだけで様々な処理をしてくれる便利なライブラリです。14.04の環境にlibrosaをインストールしていきます。サーバにログインして、rootユーザになります。-サーバの各種パッケージは、あらかじめ最新にしておきましょう。upgradePython関連のパッケージをインストール。python-tk音声コーデックライブラリffmpegをインストール。ffmpeglibrosaをインストール。librosalibrosaで必要となる関連ツールをインストール。インストール済であれば、コマンドに「–upgrade」オプションをつけて最新版にします。--upgradeホームディレクトリに、作業用ディレクトリを作っておきます。準備ができたので、さっそく試してみましょう。通常、スペクトル解析では離散フーリエ変換が使われますが、離散フーリエ変換は時間の概念がないため、ノイズに弱く、音楽解析には不向きとのこと。Transform)が良いそうです。今回は、津軽じょんから節新節のmp3ファイルを用意して、フーリエ変換をかけて、結果を画像に出力します。こんなコードを書きました。dB')plt.tight_layout()plt.show()では、これを実行してみます。spectrogram.pyこんな画像が出力されました。数行のコードだけで、スペクトル解析ができました!これは便利!ただ、これだとちょっとわかりにくいので、曲の中から適当に10秒間抜き出して、拡大表示してみます。特定の秒数だけ読み込む場合は、ファイル読込のコードを少し書き換えます。以下の例では、曲の30秒目から10秒間を抜き出しています。duration=10.0)抜き出した部分の曲は以下です。https://jonkara.net/x/wp/wp-content/uploads/2018/10/shinbushi_10s.mp3これで再実行したところ、こんな結果になりました。予想以上にきれいなスペクトルが出力されました!三味線の倍音成分も、はっきり確認できます。これを分析すれば、自動採譜が実現できそうな気がします。変換librosaには、他にも便利な変換機能が用意されています。フーリエ変換を、さらに音楽解析向けに改良したのがConstant-Q変換(定Q変換)です。詳細な仕組みはこちらの記事が詳しいですが、高周波数では分解能を低くして、低周波数では分解能を高くすることで、精度を上げようというものだそうです。librosaでConstant-Q変換をすると、縦軸が音階になっているグラフを出力できるので、これも試してみます。dB')plt.tight_layout()plt.show()出力結果はこんな感じ。見やすくするため、10秒間を拡大表示。音階がきれいに出力されました。まとめlibrosaのおかげで、スペクトル解析がどんなものなのかを理解することができました。研究では、あらかじめ三味線の各音の周波数データを取り込んでおいて、入力データを順次比較していくことで、採譜をしているそうです。自分も実装できそうな気がしてきたので、今回のスペクトル解析の実験を応用して、さらに研究を進めてみようと思います。コメントをキャンセルメールアドレスが公開されることはありません。