【spleeter】簡単ボーカル抽出 ~実行環境作成とトライアル~【python】

「Spleeter」とは、「Deezer」という音楽のストリーミング配信を手掛ける企業が提供しているOSSで、コマンド一つで、楽曲を最大4つのパート「ボーカル」「ドラムス」「ベース」「その他」に分類することができます。(詳しい説明は以下のREADMEに記載されているため省略します。)

「Spleeter」のREADME(GitHub)

本記事では、「Spleeter」の実行環境の構築方法と、トライアル結果を紹介します。

 

音楽と、プログラミングが趣味の筆者としては、このOSSを以下のようなことに応用できると考えており、今後の展開に期待しています。

  • 「ボーカル」:ガイドボーカルの自動生成、機械学習による歌詞の自動生成・アーティスト分類器作成
  • 「ドラムス」:BPM測定・プレイリスト作成
  • 「全般」:楽器練習としての利用、カラオケ・マッシュアップ音源作成
著作権で保護されている音源を入力元として使用する場合には、個人利用の範囲内で利用することを前提としています。

 

以下の記事では「Spleeter」で抽出したボーカル音源をもとに、アーティスト分類器の作成にチャレンジした内容を備忘録としてまとめています。興味のある方は是非こちらも合わせてご覧ください。

関連記事

機械学習や深層学習の普及と共に、音声認識に関連したアプリケーションやオープンソースソフトウェアを目にする機会が多くなりました。 例えば、Google社が提供する「Speech-to-Text」では、音声データから人間の声を自動的に認識[…]

広告

動作確認済み環境


OS: Windows 10 Home (64bit)
CPU: Intel Core i7-9750H
その他のプラットフォーム: Anaconda3(python3.8)
本記事で紹介する方法では、Anaconda3がインストール済みであることを前提としています。
未インストールの場合は、以下のページを参考に、事前にインストールしてください。
関連記事

Anacondaは、Pythonインタプリタ(実行環境)と、科学技術計算、データサイエンス、機械学習に関連したパッケージがセットになったプラットフォーム環境です。本記事では、Anaconda環境をWindowPCへインストールする方法と簡単[…]

eye_catch

1. 実行環境作成


1-1. 「Spleeter」用の仮想環境を作成する
  Anaconda3(python3.8)のデフォルト環境(base)と同じパッケージ構成で問題ありません。
  本記事では上記の参考ページの3章で作成した「test」をそのまま使用しています。
1-2. pythonのバージョンを3.7に変更する
・「Spleeter」はpythonのバージョンが3.7(もしくは3.6)で動作します。
・所定のバージョンを満たしていない場合は、「Spleeter」のインストール時にエラーメッセージ「spleeter -> python[version=’>=3.6,<3.7.0a0|>=3.7,<3.8.0a0′]」が出力されます。
・上記の「test」環境では、pythonのバージョンを3.8から3.7にダウングレードするため、その他のパッケージも自動的にpython3.7相当のものにダウングレードされます。
1-3. 「Spleeter」をインストールする
・インストールコマンドの実行中に「Solving environment: failed with …」と複数回出力されますが、最終的には問題なくインストールが成功します。
・途中で「Proceed ([y]/n)?」とインストールを続行するかを問われた場合は、「y」を入力しEnterキーで決定してください。
1-4. 「numpy」のバージョンを「1.16.4」にダウングレードする
・「numpy」のバージョンが「1.19.2」の環境では、「Spleeter」の実行時に「tensor_flow」関連のワーニングが大量に出力されることを確認しています。
こちらの記事を参考に「numpy」のバージョンをダウングレードすることで、ワーニングが解消されることを確認しています。
広告

2. 動作確認


2-1. 入力音源を準備する

本記事ではQuick Startに記載の「audio_example.mp3」(under Creative Commons Attribution (3.0) license)をそのままダウンロードして使用しますが、手持ちの音源をそのまま使用していただいても、問題ありません。
「audio_example.mp3」は、GitHubページの「Download」を右クリックし、「名前を付けてリンク先を保存」でダウンロードできます。

download_example_audio

 

2-2. 下記のコマンドを、先の手順で準備した入力音源に対して実行する

初回実行時には、「spleeter 」で使用する学習済みモデル(pretrained_models)をダウンロードするため、数分待ちます。
・上記(1)のコマンドはQuick Startに記載されている例をそのまま引用しています。
・筆者の環境では、上記(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:Downloading model archive https://github.com/deezer/spleeter/releases/download/v1.4.0/2stems.tar.gz
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
(audio_example.mp3)※入力音源
audio_example

 

(output/audio_example/vocals.wav)

vocals

 

(output/audio_example/accompaniment.wav)

accompaniment

 

多少の解像度の落ちや、機械音のようなノイズがありますが、ボーカル抽出のクオリティは、既存の音楽プレイヤーのイコライザーなどとは比べ物にならないくらいに高いという印象を受けました。

おまけ


下記のようなpythonスクリプトを作成することで、指定したディレクトリ配下に格納されている複数の音源に対して、「Spleeter」を実行することが可能になります。

入力ファイルは、「{アーティスト名}/{アルバム名}/{トラック名}.mp3」を想定しています。
出力ファイルの保存先は、「{アーティスト名}/{アルバム名}」配下となります。

 

広告