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

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

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

Chillout with Beats管理人 の yosi です。

巷で話題となっている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 env create -f spleeter/conda/spleeter-cpu.yaml
conda activate spleeter-cpu
 

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

 
インストールが完了したら以下のコマンドをコピペします。
 
spleeter 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は「ボーカル」と「ボーカル以外」に分けることが出来ます。
 
デモファイルを使って動作確認をします。
 
まずは以下のコマンドを実行しフォルダを移動します。
cd spleeter
 
以下のコマンドをコピペします。
 
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の技術が融合したらなんか凄そうです。

コメント