Demucsを使って音源分離にチャレンジ
Demucsとは?
Facebook Research が開発した音源分離用のAIシステムです。
Demucs は、人による評価を基準とした分離後の音楽の品質において、これまでに報告されている音源分離のシステムよりも上回っているといいます。
しかも GitHub に無料で公開されているようです。
以前、 librosaを使った音源分離 の記事を書いた身としては試さないわけにはいきません。
環境構築
今回は 公式 を参考にして Windows10 に環境構築します。
Anaconda をインストール
Windows の場合は Anaconda コンソールから実行する必要があるので、まず こちら から Anaconda のインストーラをダウンロードして PC にインストールします。
ソースコードをダウンロード
GitHub から Demucs のソースコードをダウンロードします。
GitHubに馴染みのない方には分かりにくいですが、緑色の「Code」をクリックすると 「Download ZIP」という項目が表示されます。
ダウンロードが完了したら zip を解答して好きなフォルダに配置してください。
私は 「c:/demucs」に配置しました。
音源分離を実行
音源分離は Anaconda コンソール から CUI で操作しますが、基本コピペで問題ないと思います。
Anaconda Prompt を起動
Windows のスタートメニューから Anaconda Prompt を起動します。
↓のような真っ黒い画面が出てくればOKです。
作業フォルダに移動
下記のコマンドを入力して、作業フォルダに移動します。
cd c:\demucs
設定ファイルを読み込む
使っている PC に GPU を積んでるかどうかでコマンドが違うので注意してください。
[GPU を積んでる場合]
conda env update -f environment-cuda.yml conda activate demucs
[GPU を積んでいない場合]
conda env update -f environment-cpu.yml conda activate demucs
音源分離実行
python.exe -m demucs.separate -n demucs_extra --shifts 100 --dl {ファイルパス}
{ファイルパス}は分離対象のファイルを指定します。例えば「c:/demucs/test.mp4」のファイルを分離したい場合、次のようにコマンドを入力します。
python.exe -m demucs.separate -n demucs_extra --shifts 100 --dl C:\demucs\test.mp4
完了までの予測時間が表示されますが、私のPC(RTX2070Super搭載)では30秒の音楽を処理するのに1分31秒ほどかかるようです。
あまりにも時間がかかるようなら --shifts の数値を下げると速度が改善するかもしれません。(その分、分離結果にも影響します。)

音源分離結果確認
分離が完了すると「C:\demucs\separated\demucs_extra\曲名」に分離したファイルが出力されます。
今回も librosaを使った音源分離 の時と同じファイルを分離してみました。
音源分離前
音源分離後(ドラム)
おわりに
Demucs はメロディとドラムの他にボーカルとベースも分離出来て、その精度も高く、無料で使えるということを考えたら非常に優秀ですね。
ただ、やはり1曲分離するのに時間がかかってしまうのがNGポイント。
今回は demucs_extra の訓練モデルを使って分離しましたが、他にも demucs48_hq や tasnet_extra なども使えるので訓練モデルによってどんな違いがあるのか試すのも面白そうです。
※音源分離実行のコマンドの demucs_extra の部分を書き換えるだけで使えます。
おわりに
Demucs はメロディとドラムの他にボーカルとベースも分離出来て、その精度も高く、無料で使えるということを考えたら非常に優秀ですね。
ただ、やはり1曲分離するのに時間がかかってしまうのがNGポイント。
今回は demucs_extra の訓練モデルを使って分離しましたが、他にも demucs48_hq や tasnet_extra なども使えるので訓練モデルによってどんな違いがあるのか試すのも面白そうです。
※音源分離実行のコマンドの demucs_extra の部分を書き換えるだけで使えます。