Python + librosaでオーディオファイルからドラム音を抜き出す

今回試すこと

  • Python パッケージの librosa を使って曲の中からドラムの音を抽出したオーディオファイルを作成する。
  • また曲の中からドラム音を除去したオーディオファイルを作成する。

今回作成した内容はこちらで公開しています。

 

librosaとは?

オーディオ解析を分析するためのPythonパッケージです。

非常に多機能なのですが、今回はその中のHPSS(Harmonic/Percussive Sound Separation)を使って、ドラムとメロディを分離します。

librosa のドキュメントはこちら


インストール

$ pip install librosa 


分離した音源をファイルに出力

import librosa
import soundfile

# オーディオファイルを読み込む
y, sr = librosa.load('オーディオファイルのパス')
# メロディとドラムを分離する
y_harmonic, y_percussive = librosa.effects.hpss(y)

# 分離したドラムの音をファイルに出力する
# 第2引数に y_harmonic を設定するとドラムを除去したメロディを出力する
soundfile.write('ファイル名を含めた出力先のパス', y_percussive, sr, format='wav', subtype='PCM_16')


分離結果

librosa のサンプル音源を分離してみました。

 

音源分離前


ドラム音の抽出結果


ドラム音の除去結果