「Spleeter」とは、「Deezer」という音楽のストリーミング配信を手掛ける企業が提供しているOSSで、コマンド一つで、楽曲を最大4つのパート「ボーカル」「ドラムス」「ベース」「その他」に分類することができます。(詳しい説明は以下のREADMEに記載されているため省略します。)
本記事では、「Spleeter」の実行環境の構築方法と、トライアル結果を紹介します。
音楽と、プログラミングが趣味の筆者としては、このOSSを以下のようなことに応用できると考えており、今後の展開に期待しています。
- 「ボーカル」:ガイドボーカルの自動生成、機械学習による歌詞の自動生成・アーティスト分類器作成
- 「ドラムス」:BPM測定・プレイリスト作成
- 「全般」:楽器練習としての利用、カラオケ・マッシュアップ音源作成
以下の記事では「Spleeter」で抽出したボーカル音源をもとに、アーティスト分類器の作成にチャレンジした内容を備忘録としてまとめています。興味のある方は是非こちらも合わせてご覧ください。
機械学習や深層学習の普及と共に、音声認識に関連したアプリケーションやオープンソースソフトウェアを目にする機会が多くなりました。 例えば、Google社が提供する「Speech-to-Text」では、音声データから人間の声を自動的に認識[…]
動作確認済み環境
CPU: Intel Core i7-9750H
その他のプラットフォーム: Anaconda3(python3.8)
Anacondaは、Pythonインタプリタ(実行環境)と、科学技術計算、データサイエンス、機械学習に関連したパッケージがセットになったプラットフォーム環境です。本記事では、Anaconda環境をWindowPCへインストールする方法と簡単[…]
1. 実行環境作成
・所定のバージョンを満たしていない場合は、「Spleeter」のインストール時にエラーメッセージ「spleeter -> python[version=’>=3.6,<3.7.0a0|>=3.7,<3.8.0a0′]」が出力されます。
・上記の「test」環境では、pythonのバージョンを3.8から3.7にダウングレードするため、その他のパッケージも自動的にpython3.7相当のものにダウングレードされます。
・途中で「Proceed ([y]/n)?」とインストールを続行するかを問われた場合は、「y」を入力しEnterキーで決定してください。
・こちらの記事を参考に「numpy」のバージョンをダウングレードすることで、ワーニングが解消されることを確認しています。
2. 動作確認
2-1. 入力音源を準備する
「audio_example.mp3」は、GitHubページの「Download」を右クリックし、「名前を付けてリンク先を保存」でダウンロードできます。
2-2. 下記のコマンドを、先の手順で準備した入力音源に対して実行する
・筆者の環境では、上記(1)のコマンドで「spleeter 」が参照できずにエラーとなったため、(2)のコマンドを使用しています。この場合、入力ファイルの指定には引数オプション「-i」を追加する必要があります。
引数オプション | 概要 | 設定値(例) | 備考 |
-p | 音源の分割数を指定 | ①spleeter:2stems 下記2つの要素に音源を分割 ・Vocals:歌声 ・accompaniment:伴奏②spleeter:4stems 下記4つの要素に音源を分割 ・Vocals:歌声 ・drums:ドラムス ・bass :ベース ・other separation:その他③spleeter:5stems 下記5つの要素に音源を分割 ・Vocals:歌声 ・drums:ドラムス ・bass :ベース ・piano :ピアノ ・other separation:その他 |
音源の分割数だけ出力ファイルが生成されます。 |
-o | 出力ディレクトリを指定 | output | 指定した出力ディレクトリ配下に指定した音源のファイル名のサブフォルダが作成されます。 |
-i | 入力音源を指定 | audio_example.mp3 | 絶対パスで指定することも可能です。
ファイルフォーマットは、「mp3」もしくは「wav」を想定しています。 |
2-3. 出力ファイルを確認する
(コンソール出力)
INFO:spleeter:Validating archive checksum
INFO:spleeter:Extracting downloaded 2stems archive
INFO:spleeter:2stems model file(s) extracted
INFO:spleeter:File output\audio_example/vocals.wav written
INFO:spleeter:File output\audio_example/accompaniment.wav written

(output/audio_example/vocals.wav)
(output/audio_example/accompaniment.wav)
おまけ
下記のようなpythonスクリプトを作成することで、指定したディレクトリ配下に格納されている複数の音源に対して、「Spleeter」を実行することが可能になります。
出力ファイルの保存先は、「{アーティスト名}/{アルバム名}」配下となります。