Open-Unmix(UMX)で楽曲の音声ファイル(wav,flac)から各楽器パートごとに音源分離ができるようなので試してみる
やってみた
試すのはgithubのopen-unmix(UMX)のPyTorch版
GitHub - sigsep/open-unmix-pytorch: Open-Unmix - Music Source Separation for PyTorch
Open-Unmix - Music Source Separation for PyTorch. Contribute to sigsep/open-unmix-pytorch development by creating an account on GitHub.
Paper: Open-Unmix – A Reference Implementation for Music Source Separation
分離前の元ファイル(wav)
- input_file.wav
分離後のファイル(wav)
- input_file_bass.wav ベース
- input_file_drums.wav ドラム
- input_file_other.wav その他(ギターやキーボードなど)
- input_file_vocals.wav ボーカル(声)
できた!
さすがに、ミックス前のように各パートをクリアに分離できるわけではなかったが、ある程度は分離できた
…手持ちに結果試聴用の掲載可能なファイルがないので、とりあえずやりかたのみ
やりかた(使い方)
実行環境
- Linux Ubuntu 18.04 LTS (Windows10 (1903) + WSL)
python環境を構築
pythonは3.7
以降はこのpython仮想環境(activateした状態)で作業
$ virtualenv -p python3.7 venv37 $ source venv37/bin/activate (venv37)$
必要なもろもろをインストール
README.mdの「Getting started」ではAnacondaが推奨されているが、pipだけでやってみる
$ pip install musdb==0.3.1 $ pip install norbert==0.2.0 $ pip install museval==0.3.0 $ pip install numpy==1.16 $ pip install scipy==1.3 $ pip install scikit-learn==0.21 $ pip install tqdm==4.32 $ pip install ffmpeg $ pip install resampy
pytorchは下記を参考にインストール
https://pytorch.org/get-started/previous-versions/#linux-and-windows-1
$ pip install torch==1.2.0 torchvision==0.4.0 -f https://download.pytorch.org/whl/torch_stable.html
インストールしたものを確認(抜粋)
$ pip freeze ffmpeg==1.4 musdb==0.3.1 museval==0.3.0 norbert==0.2.0 numpy==1.16.0 resampy==0.2.2 scikit-learn==0.21.0 scipy==1.3.0 torch==1.2.0+cu92 torchvision==0.4.0+cu92 tqdm==4.32.0
open-unmixの準備
githubからopen-unmix-pytorchをclone
$ git clone https://github.com/sigsep/open-unmix-pytorch.git $ cd open-unmix-pytorch/
データの準備
分離する楽曲ファイルをwavかflacで準備する
open-unmix-pytorch/ input_file.wav
実行
実行するにはopen-unmix-pytorchディレクトリ直下で
$ python test.py input_file.wav --model umxhq
長さ1分30秒ほど(16MByte程度)の曲で試すと、特にエラーが出ることもなく数十秒ほどで実行完了
$ python test.py input_file.wav --model umxhq 100%|█████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:14<00:00, 3.64s/it] $
下記のようにボーカル、ベース、ドラム、その他(ギターやキーボードなど)の4つのファイルに分離された
open-unmix-pytorch/ input_file_umxhq/ input_file_bass.wav input_file_drums.wav input_file_other.wav input_file_vocals.wav
オプション[–target]で分離するパートの指定ができる
$ python test.py input_file.wav --model umxhq --target=vocals
vocalsを指定すると、下記のようにvocalsパートとその他に分離できる
open-unmix-pytorch/ input_file_umxhq/ input_file_accompaniment.wav ベース、ドラム、ギター、キーボードなどのボーカル以外 input_file_vocals.wav ボーカル
解散!
リンク