マシンラーニングのSpleeterを試してみた。(使い方も解説)
Chillout with Beats管理人 の yosi です。
巷で話題となっているSpleeterを試してみました。
CLI(コマンドライン)の為、難易度は高めです。
コマンドライン何?判らないという方はおすすめしないです。
とりあえず、デモ曲で試した結果をお聴きください。
これは凄いです。
元のデータ
抽出したボーカルデータ
ボーカル以外のデータ

Spleeterの概要
広く知られたトピックではありませんが、ソース分離の問題は、数十年にわたって音楽信号研究者の大規模なコミュニティに興味を持っています。それは単純な観察から始まります。音楽録音は通常、複数の個別の楽器トラック(リードボーカル、ドラム、ベース、ピアノなど)のミックスです。音楽ソースの分離のタスクは次のとおりです。ミックスを考えると、これらの個別のトラック(ステムとも呼ばれる)を復元できますかこれには多くの潜在的な用途があります。リミックス、アップミキシング、アクティブリスニング、教育目的だけでなく、転写などの他のタスクの前処理も考えてください。
興味深いことに、私たちの脳は楽器の分離に非常に優れています。このトラックの楽器の1つ(たとえばリードボーカルなど)に焦点を合わせるだけで、他の楽器とはまったく異なる音を聞くことができます。しかし、それは本当に分離ではありません、あなたはまだ他のすべての部分を聞きます。多くの場合、一緒にミックスされた個々のトラックを正確に回復することは不可能かもしれません。したがって、課題は、可能な限りそれらを近似することです。つまり、過度の歪みを作成せずに、可能な限りオリジナルに近づけることです。
何年もの間、世界中の何十もの素晴らしい研究チームによって、多くの戦略が研究されてきました。この魅力的な旅に興味がある場合は、この文献の概要またはこれをお読みください。最近の進歩のペースは、主に機械学習方法の進歩により、大きな飛躍を遂げました。追跡するために、人々は国際評価キャンペーンでアルゴリズムを比較しています。これにより、Spleeterのパフォーマンスが、提案されている最適なアルゴリズムのパフォーマンスと一致することがわかります。
さらに、Spleeterは非常に高速です。 GPUバージョンを実行している場合、リアルタイムよりも100倍高速に分離することが期待できるため、大きなデータセットを処理するのに適しています。
Spleeterの導入方法
まず情報の取得場所です。
オフィシャルページにはSpleeterとはと言った話がメインです。
Spleeterの環境設定
Spleeterを実行するにはまず環境を整える必要があります。
Minicondaのダウンロードとインストール
Condaが一番簡単だろうということなので、minicondaを導入します。
インストールはデフォルトで良いかと思います。
Gitのインストール
Gitクライアントが必要ということなので、ダウンロードしてインストールします。
インストールはそのままデフォルトで良いかと思います。
Spleeterのインストール
Windowsの場合はスタートメニューから「Anaconda Prompt」を起動します。
起動したら、以下のコマンドを一行ずつコピペして実行します。
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
問題なくインストール出来ていれば、以下の様な(一部のみ記載)ヘルプが表示されます。
[–verbose] -i AUDIO_FILENAMES [AUDIO_FILENAMES …]
[-o OUTPUT_PATH] [-n {directory,filename}]
[-d MAX_DURATION] [-c {wav,mp3,ogg,m4a,wma,flac}]
[-m]
2stemに書き出す
python -m spleeter separate -i audio_example.mp3 -o audio_output
ファイルは「audio_output\audio_example」フォルダの中に格納されます。
2回試したのですが、1回目はボーカルが抽出された「vocals.wav」しか出力されません。
もう一度コマンドを実行すると(キーボードの上キーでコマンドの履歴を遡れます)出力されます。
ボーカル以外の「accompaniment.wav」も出力されます。
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の技術が融合したらなんか凄そうです。
コメント