Spleeter で音楽データからボーカル、ドラム、ベース をそれぞれ抽出してみた

  • spleeter
    • 機械学習を用いて、音楽データからボーカルや各楽器パートだけを抽出してくれるツール

結果

元音源: Baby Girl - Co-fly

  • トラック

  • ボーカル

  • ベース

  • ドラム

  • その他

Spleeter で抽出するまでの流れ

(事前準備)

  • Miniconda をインストール
    • Miniconda に Spleeter の実行に必要な Conda が含まれている
    • Conda は Python 用に作られたパッケージ管理システムと環境マネジメントシステム
/// 現在の Python のバージョンを確認
$ python --version
Python 2.7.10

(Spleeter は Python 2.7 用のインストーラーもあるので、このまま進めても問題ないが、
今回は 3.7 を使う事にしたので、下記を実行)

/// pyenv をインストール
$ brew install pyenv

/// pyenv のパスを通す
$ echo 'export PYENV_ROOT=/usr/local/var/pyenv' >> ~/.bash_profile
$ echo 'if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi' >> ~/.bash_profile

/// bash_profile の変更を反映
$ source ~/.bash_profile

/// Python 3.7 をインストール
$ pyenv install 3.7.5

/// Python のバージョンを切り替える
$ pyenv local 3.7.5

/// 確認
$ python --version
Python 3.7.3
  • Miniconda をインストール
https://docs.conda.io/en/latest/miniconda.html#macosx-installers より Python 3.7 の `Miniconda3 MacOSX 64-bit pkg` をダウンロード
↓
ダウンロードした `Miniconda3-latest-MacOSX-x86_64.pkg` をダブルクリックして、インストール
↓

/// (インストーラーが bash_profile に Miniconda 用の設定を追記するので) bash_profile の変更を反映
$ source ~/.bash_profile

/// 確認
$ conda -V
conda 4.7.12

Spleeter

$ cd ~/tools

/// GitHub から spleeter のファイルをローカルにコピー
$ git clone https://github.com/Deezer/spleeter

/// Conda の環境設定
$ conda env create -f spleeter/conda/spleeter-cpu.yaml

/// Spleeter を実行可能な状態にする 
$ conda activate spleeter-cpu

/// 音声ファイルを spleeter ディレクトリ以下に置く 
今回は `Co-fly-BABY_GIRL.m4a` を `~/tools/spleeter/` 以下に置いた

/// ボーカル、トラックを抽出 
$ spleeter separate -i ~/tools/spleeter/Co-fly-BABY_GIRL.m4a -p spleeter:2stems -o ~/tmp/output

/// ボーカル、ドラム、ベース、その他を抽出 
$ spleeter separate -i ~/tools/spleeter/Co-fly-BABY_GIRL.m4a -p spleeter:5stems -o ~/tmp/output

/// ~/tmp/output/Co-fly-BABY_GIRL 以下に抽出した音声データが出力される
$ ls ~/tmp/output/Co-fly-BABY_GIRL/
accompaniment.wav   drums.wav       piano.wav
bass.wav        other.wav       vocals.wav