最近音源分離の新しい手法が出たんだって?
今まではそこまで精度高くなかった気がするけど…。
今回は,音源分離の最新手法である「Open-Unmix」[1]を試してみようという内容になります。本記事はpython実践講座シリーズの内容になります。その他の記事は,こちらの「Python入門講座/実践講座まとめ」をご覧ください。
管理人の環境
●Ubuntu 18.04
●Python 3.7.3
●conda 4.7.12
●pytorch 1.2.0
使い方
Open-unmixはgithubにソースコードがあげられており,誰でも簡単に使えるようになっています。大きく分けて,動かし方には3通りあります。
1.condaの仮想環境を作る
2.Dockerを利用する
3.自分の環境に必要なライブラリを用意する
本ブログでは,「1.condaの仮想環境を作る」を強くおすすめします。というのも,私の環境ではDockerを用いた方法はうまくいかなかったことに加え,自分の環境は適当に変えてしまわないようにするべきだからです。
仮想環境?なにそれ?
という方でも大丈夫です。仮想環境は,簡単に言ってしまえば「Open-Unmix専用のPython環境」ということになります。通常,オープンソースのライブラリやソフトウェアを利用する場合は,自分の環境が要件を満たしていることを確認する必要があります。
しかし,仮想環境を利用すれば,いちいち自分の環境をソフトウェアに対して変更することなく,実行することが可能になります。今回のOpen-Unmixはコマンド1つで仮想環境が作成できるようになっているため,本当に楽チンです。作者さんありがとうございます。
git cloneする
まずは,作者が作ってくれたのディレクトリをgitからコピーしましょう。gitをインストールしていない人は「sudo apt install git」などでインストールしておいて下さい。
$ git clone https://github.com/sigsep/open-unmix-pytorch.git
仮想環境を作る
READMEにも書いてある通り,以下のコマンド1つで仮想環境を作成することができます。「X」には[cpu-linux, gpu-linux-cuda10, cpu-osx]の中から皆さんの利用しているマシンの環境に合わせて適切な語句を選択して下さい。
$ conda env create -f environment-X.yml
仮想環境をactivateする
せっかく作った仮想環境は,アクティベートしなくては使い物になりません。以下のコマンドで仮想環境をアクティベートしましょう。以下の例では,自身の環境でXを「cpu-linux」とした場合を想定しています。
$ conda activate open-unmix-pytorch-linux-cpu
pythonスクリプトを動かす
git cloneしたopen-unmix-pytorchディレクトリに移動して下さい。以下のコマンドで,音源分離を実行できます。分離対象を「input_file.wav」とします。分離結果はopen-unmix-pytorchディレクトリに保存されています。モデルはデフォルトの「umxhq」を利用しています。
$ python test.py input_file.wav --model umxhq
これにて,パートごとに音源分離された結果が得られました。非常に精度が高くてびっくりしています。
[1] Stöter, Fabian-Robert, et al. “Open-unmix-a reference implementation for music source separation.” (2019).
test.pyとはなんですか?
匿名様
過去にあった起動方法ですね。
https://github.com/sigsep/open-unmix-pytorch/tree/cf0e6e19e398c1879d9061d77020f4dc9bb16edc
恐れ入りますが,現在の起動方法は最新のREADMEを参照ください。
https://github.com/sigsep/open-unmix-pytorch