アカデミック

【超初心者向け】音源分離の最新手法「Open-Unmix」の使い方

最近音源分離の新しい手法が出たんだって?

今まではそこまで精度高くなかった気がするけど…。

今回は,音源分離の最新手法である「Open-Unmix」[1]を試してみようという内容になります。本記事はpython実践講座シリーズの内容になります。その他の記事は,こちらの「Python入門講座/実践講座まとめ」をご覧ください。

コーディングに関して未熟な部分がたくさんあると思いますので,もし何かお気づきの方は教えていただけると幸いです。また,誤りについてもご指摘していただけると非常に助かります。

管理人の環境

●Ubuntu 18.04
●Python 3.7.3
●conda 4.7.12
●pytorch 1.2.0

なお,以下ではopenunmixの1.0系を想定しています。2022年9月現在では起動方法が異なりますので,最新のREADMEをご参照ください。

使い方

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]の中から皆さんの利用しているマシンの環境に合わせて適切な語句を選択して下さい。

もし,anacondaを利用しないでpython環境を構築している方は,こちらの公式ドキュメントを参考にしてanacondaをインストールすると良いと思います。もしくは,Dockerを使った方法か,要件を満たすライブラリ等をpipなどで導入して利用するのもアリだと思います。

$ 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).

ABOUT ME
zuka
京都大学で機械学習を学んでいます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※ Please enter your comments in Japanese to prevent spam.