マシンラーニングのSpleeterを試してみた。(使い方も解説)

ニュース
スポンサーリンク

マシンラーニングのSpleeterを試してみた。(使い方も解説)

Chillout with Beats管理人 の yosi です。

2020/04/14 追記
再度試してみたら家の環境だと以下のエラーメッセージが出て出来なくなりました。調査し、幾つか試しましたが、現状解決していません。
よってこの記事を試しても出来ない可能性がありますのでその点ご留意下さいませ。
序数 242 がダイナミック ライブラリ C:\Users\isee\Miniconda3\Library\bin\mkl_intel_thread.dll から見つかりませんでした。 

巷で話題となっているSpleeterを試してみました。

CLI(コマンドライン)の為、難易度は高めです。

コマンドライン何?判らないという方はおすすめしないです。

とりあえず、デモ曲で試した結果をお聴きください。

これは凄いです。

元のデータ

抽出したボーカルデータ

ボーカル以外のデータ

Spleeterの概要

広く知られたトピックではありませんが、ソース分離の問題は、数十年にわたって音楽信号研究者の大規模なコミュニティに興味を持っています。それは単純な観察から始まります。音楽録音は通常、複数の個別の楽器トラック(リードボーカル、ドラム、ベース、ピアノなど)のミックスです。音楽ソースの分離のタスクは次のとおりです。ミックスを考えると、これらの個別のトラック(ステムとも呼ばれる)を復元できますかこれには多くの潜在的な用途があります。リミックス、アップミキシング、アクティブリスニング、教育目的だけでなく、転写などの他のタスクの前処理も考えてください。

興味深いことに、私たちの脳は楽器の分離に非常に優れています。このトラックの楽器の1つ(たとえばリードボーカルなど)に焦点を合わせるだけで、他の楽器とはまったく異なる音を聞くことができます。しかし、それは本当に分離ではありません、あなたはまだ他のすべての部分を聞きます。多くの場合、一緒にミックスされた個々のトラックを正確に回復することは不可能かもしれません。したがって、課題は、可能な限りそれらを近似することです。つまり、過度の歪みを作成せずに、可能な限りオリジナルに近づけることです。

何年もの間、世界中の何十もの素晴らしい研究チームによって、多くの戦略が研究されてきました。この魅力的な旅に興味がある場合は、この文献の概要またはこれをお読みください。最近の進歩のペースは、主に機械学習方法の進歩により、大きな飛躍を遂げました。追跡するために、人々は国際評価キャンペーンでアルゴリズムを比較しています。これにより、Spleeterのパフォーマンスが、提案されている最適なアルゴリズムのパフォーマンスと一致することがわかります。
さらに、Spleeterは非常に高速です。 GPUバージョンを実行している場合、リアルタイムよりも100倍高速に分離することが期待できるため、大きなデータセットを処理するのに適しています。

 

Spleeterの導入方法

まず情報の取得場所です。

オフィシャルページにはSpleeterとはと言った話がメインです。

 
実行ファイルはこちらです。

Spleeterの環境設定

Spleeterを実行するにはまず環境を整える必要があります。

Minicondaのダウンロードとインストール

Condaが一番簡単だろうということなので、minicondaを導入します。

インストールはデフォルトで良いかと思います。

Gitのインストール

Gitクライアントが必要ということなので、ダウンロードしてインストールします。

 
該当するOSをクリックすると勝手にダウンロードが開始します。

インストールはそのままデフォルトで良いかと思います。

 

Spleeterのインストール

Windowsの場合はスタートメニューから「Anaconda Prompt」を起動します。

起動したら、以下のコマンドを一行ずつコピペして実行します。

git clone https://github.com/deezer/spleeter
conda install -c conda-forge spleeter
conda env create -f spleeter/conda/spleeter-cpu.yaml
conda activate spleeter-cpu
 

デモ音源を使ってSpleeterの動作確認

 
インストールが完了したら以下のコマンドをコピペします。
cd spleeter
python -m separate -h

問題なくインストール出来ていれば、以下の様な(一部のみ記載)ヘルプが表示されます。

usage: spleeter separate [-h] [-a AUDIO_ADAPTER] [-p PARAMS_FILENAME]
[–verbose] -i AUDIO_FILENAMES [AUDIO_FILENAMES …]
[-o OUTPUT_PATH] [-n {directory,filename}]
[-d MAX_DURATION] [-c {wav,mp3,ogg,m4a,wma,flac}]
[-m]
 

2stemに書き出す

2stemは「ボーカル」と「ボーカル以外」に分けることが出来ます。
 
デモファイルを使って動作確認をします。
 
以下のコマンドをコピペします。
 
python -m spleeter separate -i audio_example.mp3 -o audio_output

ファイルは「audio_output\audio_example」フォルダの中に格納されます。

2回試したのですが、1回目はボーカルが抽出された「vocals.wav」しか出力されません。

もう一度コマンドを実行すると(キーボードの上キーでコマンドの履歴を遡れます)出力されます。

ボーカル以外の「accompaniment.wav」も出力されます。

4stemに書き出す

4stemは「ボーカル」、「ベース」、「ドラム」、「その他」に分けることが出来ます。
 
デモファイルを使って動作確認をします。
spleeter separate -i audio_example.mp3 -o audio_output -p spleeter:4stems

成功すると以下の様に4つのファイルが書き出されます。

INFO:spleeter:File audio_output\audio_example\bass.wav written
INFO:spleeter:File audio_output\audio_example\vocals.wav written
INFO:spleeter:File audio_output\audio_example\drums.wav written
INFO:spleeter:File audio_output\audio_example\other.wav written

「-p」でいくつに分けるか指定出来現状では以下の3種類をサポートしています。

  • spleeter:2stems(ボーカル、その他)
  • spleeter:4stems(ボーカル、ベース、ドラム、その他)
  • spleeter:5stems(ボーカル、ベース、ドラム、ピアノ、その他)

自分で用意した音源にSpleeterを使う

個人で楽しむ場合なら自分でリッピングした音源からボーカルだけ抽出することも問題なかったかと思います。(ネットにアップするとアウトかと思いますので注意しましょう)

やり方だけ記載しておきます。

まず、自分が用意したファイルを「audio_example.mp3」と同じ階層にコピーします。

あとはコマンドの「audio_example.mp3」の所を自分が用意したファイルのファイル名にするだけです。

spleeter separate -i audio_example.mp3 -o audio_output

試しに日本語でやってみましたが、上手くいきました。

結構綺麗に抽出出来て驚きます。

もしエラーになる場合は英数字に直してからやると上手くいくかもしれません。

マシンラーニングのSpleeterを試してみた。(使い方も解説)まとめ

凄い技術ですね。

しかももしステムがあれば更に学習させる事が出来ます。

これは推測ですが、現状は日本人の声の学習が少ないと思われます。

もしカラオケのCDなどから学習させたらかなりの精度で抽出出来るようになる可能性があります。

また、このソフトウェアは無料で使える為、今後この技術を使ったGUI込みのアプリケーションが出る可能性が高いです。

ふと思ったのはこの技術と先日発売した iZotope社のDialogue Matchの技術が融合したらなんか凄そうです。

コメント

  1. このサイトのファン より:

    ボーカル抜き出しは結構調べたので情報提供です。
    記事が思いつかなかったときのネタにでも使ってください。使わなくてもオッケーですがw

    年間アクセスランキングから飛んできましたが、時が経ってSpleeter周りの環境はかなり改善されていて、多少パソコンに詳しければなんとかなるレベルになってきています。
    それでもちゃんとやると最低限Dockerは使えないと駄目ですが、Windows限定だとGUIアプリが提供されています。
    その名もそのままでSpleeterGUIです。
    https://makenweb.com/#spleetergui
    必要なデータは全部入ってるみたいなのですぐに使えるっぽいです。
    自分はMacユーザーなのでSpleeter Web使ってますが、WindowsだとGUIが圧倒的に使いやすそうです。
    試してないので動かなかったらごめんなさいwでもGitHubでSpleeter関係で2番人気なので動きそうですが。

    まあ、有料含めるとLALAL.AIとは勝負になってないんですが、無料なら選択肢として知っていていい気がします。
    日本語の記事もほとんどないですしね。

    • yosi より:

      情報提供ありがとうございます!
      知らなかったので少し調べてみます。
      これは凄く楽ですね。
      そしてオンラインだとアップロードが煩わしいですが、ローカルなら簡単で良いですね。
      記事にさせてもらいます!

      ご存知かもしれませんが、オンラインのサービスで、AUDIOSTRIPさんがYoutubeからのボーカル抜きが復活しました。
      https://www.audiostrip.co.uk/

      かなり便利ですが、著作権の問題で広まると無くなるような気がします・・・

      • このサイトのファン より:

        ご存知かもしれませんが、オンラインのサービスで、AUDIOSTRIPさんがYoutubeからのボーカル抜きが復活しました。

        全然ご存知ではなかったですw
        見た感じGitHubで公開されていて私も使っているSpleeter Webの簡易版っぽいですね。
        https://github.com/JeffreyCA/spleeter-web
        こっちの方がSpleeterだけじゃなく、Demucs, Tasnet, CrossNet-Open-Unmix (X-UMX)も使えて、YouTubeからのインポートにも対応してますがDocker使う必要あるんですよねぇ。
        起動にめちゃめちゃ時間かかりますしメモリもバカ食いします。

        これはyoutubedlとffmpegとspleeter組み合わせてるだけなので、個人で使う分には問題ない気もしますが、AUDIOSTRIPのように一般公開となるとたしかに著作権的に怪しいかもですね。

        • yosi より:

          こっちの方がSpleeterだけじゃなく、Demucs, Tasnet, CrossNet-Open-Unmix (X-UMX)も使えて、YouTubeからのインポートにも対応してますがDocker使う必要あるんですよねぇ。

          情報ありがとうございます!
          Spleeter Web凄いですね。
          こちらも試してみようかと思います。
          Dockerは使った事無いのですが、仮想系は色々容量食うのがほんと困りますよね。

          AUDIOSTRIPは消える(又はYoutubeからダウンロードを無くす)ような気がします。
          やはりダウンロード出来てしまうのは問題ありだと思うので。