【Python3】Spleeterでボーカル抽出とかパートでの分離をする

この記事は最新更新日から、4年以上経過しています。

Spleeterは機械学習で、音声ファイルから下記のパートを抽出してくれる音声分離ライブラリです。

・ボーカル(歌声)/伴奏の分離(2系統)
・ボーカル/ドラム/ベース/その他の分離(4系統)
・ボーカル/ドラム/ベース/ピアノ/その他の分離(5系統)

使ってみた感想ですが、曲よりラジオ音声などに使うとわりときれいにBGMとパーソナリティの声に分けてくれます。
10分ぐらいまでの長さの曲なら分離できたはず(記憶があいまい)
曲の方が色々音が重なっている分、分離の難易度が高いかもしれません。

以前、下記のGIGAZINEさんの記事を参考に動かしていたのですが、他のソフトウェアを使っていたときにminicondaが競合してしまったので、今回はminiconda使わない方法で動かすことにしました。

音楽データからボーカル・ドラム・ベースの音を個別に抽出できる「spleeter」
ボーカルや複数の楽器で構成された音楽データを、機械学習を用いてそれぞれの音に分類したファイルとして出力する「spleeter」がGitHubで公開されています。ボーカルの声や伴奏の部分だけを抽出できるとのことで、実際に使ってみました。

環境

Microsoft Windows [Version 10.0.18363.1016]
PyCharm 2020.2 (Professional Edition)
Python 3.7.7

参考

# 音楽素材分離ライブラリ Spleeter を使ってみた - Qiita
はじめに Deezer Spleeterなるボーカル抜き出しライブラリを試してみた。 音声分離というと、位相反転させて、ボーカルだけ抜き出すのが主流(ちょっと時代遅れかも)な気がしますがドラムやベースなど色々と抜き出せるのがSpleeter...

やったこと

Spleeterの入手

GithubからSpleeterをダウンロードします。
フォルダにファイルを入れたりしないといけないので、zipで落として解凍します。

GitHub - deezer/spleeter: Deezer source separation library including pretrained models.
Deezer source separation library including pretrained models. - deezer/spleeter

今回は「spleeter-master」というフォルダに解凍しました。

ffmpegをインストール

下記のエラーが出るときは実行ファイルが足りないのでffmpegをダウンロードしてきてください。

ERROR:spleeter:ffmpeg binary not found
ERROR:spleeter:ffprobe binary not found

ffmpegのサイト

FFmpeg

公式サイトのwindows buildをダウンロードして、解凍すると「bin」フォルダに入っています。
この「ffmpeg.exe」と「ffprobe.exe」をコピーして「spleeter-master」のフォルダに入れます。

Pythonインタプリタの設定

Pythonインタプリタを設定して仮想環境を作ります。
Pycharmで「spleeter-master」を開いて、「File→Setting→Project→Python Interpreter」でpythonインタプリタの設定画面を開いて設定します。
PycharmはEAP版(早期アクセス版)やcommunity版でもできると思いますのでインストールされていない場合はこちらのpycharmの項目からどうぞ。

早期アクセスプログラム (EAP)-JetBrains

Python Interpreterにpython.exeを設定します。
もしpythonをインストールしていなくてpython.exeがない場合はインストールしてきてください。

Windows版Pythonのインストール - python.jp
以下の手順で、Pythonのインストールを行います。 Python公式サイトから、Pythonパッケージをダウンロードします ダウンロードしたパッケージをインストールします。 PowerShellでPythonを実行するときに必要となる、ス...

Spleeterのインストール

Pythonのインタプリタを設定すると仮想環境が作成されて、pipコマンドが使えるようになります。
Pycharm内のターミナルを開きましょう。
なんかPycharmの画面の一番下にTerminalというタブがあるのでクリックすると開けるはずです。

ターミナル内で下記のコマンドを実行すると、spleeterに必要なライブラリをインストールしてくれます。(便利だな…)

pip install spleeter

Spleeterを使う

インストールが終わったら使える状態なっているはずなので、ボーカルとそれ以外の音源に分離したいファイルを「spleeter-master」にコピーしておきます。

ボーカル(歌声)/伴奏(2系統)に分離

ターミナルでコマンドを打つとSpleeterが実行できます。
-i のあとにあるのが入力ファイル、-oのあとにあるのが出力フォルダです。

spleeter separate -i hoge.mp3 -o out/

初回実行のときは訓練したモデルをダウンロードしてから分離を実行するようなのでちょっと時間がかかります。
処理が終わると「spleeter-master」下の「out」フォルダに分離されたファイルが出力されます。

低音とかは一部入ってますが、オケの部分は跡形もなく消えてる感じがしてよさそうですね…。

ボーカル/ドラム/ベース/その他(4系統)に分離

ボーカル/ドラム/ベース/その他(4系統)で分けられるらしいのでやってみます。

spleeter separate -i hoge.mp3 -o out/ -p spleeter:4stems

詳しくないからわからないけどその他の音にパーカッション入ってないし、分かれてる気がするな!
結構面白いのでやってみてください。

ボーカル/ドラム/ベース/ピアノ/その他(5系統)に分離

ボーカル/ドラム/ベース/ピアノ/その他(5系統)で分けられるらしいのでこれもやってみます。

spleeter separate -i hoge.mp3 -o out/ -p spleeter:5stems

パート別に聞けるのでなかなか楽しかったです。
パート別に分けたファイルをwavetoneにかけてmidiにして世界樹に入れて編集したら楽しく耳コピとかできそうな気がしますね。

Ackie Sound トップページ
サウンド関連のソフトウェアを公開しています。採譜支援ソフトWaveTone,ボーカル編集ソフトVocalShiter,ピッチ検出ソフトPitch Monitor,鍵盤ソフトRainbow Keyboard。
https://openmidiproject.osdn.jp/index.html

おわり。