Open-Unmixで楽曲の音源分離をやってみた(PyTorch版)

open-unmix-pytorchAI(人工知能)
Sponsored Links

Open-Unmix(UMX)で楽曲の音声ファイル(wav,flac)から各楽器パートごとに音源分離ができるようなので試してみる

Sponsored Links
Sponsored Links
Sponsored Links

やってみた

試すのは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 ボーカル(声)

できた!

さすがに、ミックス前のように各パートをクリアに分離できるわけではなかったが、ある程度は分離できた

…手持ちに結果試聴用の掲載可能なファイルがないので、とりあえずやりかたのみ

Sponsored Links

やりかた(使い方)

実行環境

  • 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        ボーカル

 


解散!

いいね! いいね??(1)
読み込み中...

Sponsored Links
Sponsored Links

AI(人工知能)
Sponsored Links
wells12
タイトルとURLをコピーしました