cedro-blog

Demucsで、音楽からドラム・ベース・ボーカルを分離する

1.はじめに

 今回ご紹介するのは、音楽からドラム、ベース、ボーカルを高精度に分離できる Demucsという技術です。

*この論文は、2022.8に最終改訂されました。

2.Demucsとは?

 下記がDemucsの概略図です。基本的には、U-Net アーキテクチャを 1 次元の時間領域に適応させて、エンドツーエンドの音源分離を実行するWave-U-Netがベースになっています

 これに、ハイブリッド スペクトログラム/波形分離、圧縮残差ブランチ、ローカル アテンション、および特異値正則化を加えたものがDemucsです。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Open in Colab」ボタンをクリックすると動かせます。

 まず、セットアップを行います。基本的に、! pip install demucs 1発でインストールできます。

 

 それでは、音楽から音楽ソースを分離しましょう。music フォルダにあるファイルの中から1つ選んで input に記入して実行します。このとき、karaoke チェックボックスにチェックを入れていないと drums, bass, other, vocal に分離され、チェックを入れていると vocal, no_vocal に分離されます。

 自分の用意したファイルを使う場合は、music フォルダにアップロードして下さい。ここでは、サンプル曲を使用するために input sazanami.mp4 と記入して実行します。

http://cedro3.com/wp-content/uploads/2022/10/bass-1.mp3

 

 では、分離した音楽ソースを聴いてみましょう。part で聴きたいパートを選択して実行します。先程、karaoke チェックボックスにチェックを入れていない場合は drums, bass, other, vocal が選択可能で、チェックを入れている場合は vocal, no_vocal が選択可能です。

 先程は karaoke チェックボックスにチェックを入れませんでしたので、ここでは bass を選択して実行します。

 

 分離した結果をダウンロードする場合は、次を実行して下さい(Google Chrome専用)

 分離精度はかなり実用的なレベルになって来たように思います。カラオケは簡単に出来ますし、ドラムやベースをやっている方は教師音源が簡単に入手出来ますね。

 では、また。

(オリジナルgithub)https://github.com/facebookresearch/demucs

(twitter投稿)