Spleeterを使って音源分離に挑戦

#音源分離とは
ここら辺の文献がわかりやすかったです。

http://www.kecl.ntt.co.jp/people/kameoka.hirokazu/publications/Kameoka2019ASJSpecialIssue09_published.pdf
#使用した環境
Windows10
Python 3.8.2
#必要なもの
・Python→インストール方法は各自で検索してください。
・ffmpeg
・ibsndfile
・Spleeter
#①ffmpegのインストール方法
①ホームページ: http://ffmpeg.org
②ダウンロードをクリック
![スクリーンショット 2021-07-30 22.25.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1827878/c8816d5f-e058-0d8c-27fc-b3e8878e1464.png)
③Windows builds from gyan.devを選択する。
![スクリーンショット 2021-07-30 22.31.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1827878/67ad3b94-f2b8-acd5-efb3-b67049de28b9.png)
④サイトの下の方にreleaseがあるので最新バージョンをダウンロードする。
![スクリーンショット 2021-07-30 22.34.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1827878/d02966cb-3f77-eb4f-ec8b-f98b24ab1343.png)
⑤ダウンロードしたファイルは「.7z」タイプの圧縮がされています。
解凍ソフト「7zip」をダウンロードする。
7zipダウンロードリンク: https://sevenzip.osdn.jp
![スクリーンショット 2021-07-30 22.38.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1827878/fd90af36-4daf-2905-d374-15face51b6ff.png)
⑥展開する
![1627652606820.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1827878/5f366b9d-d1f7-6887-79b4-e5e7fda05d65.png)
⑦展開すると「bin」というフォルダがあり、その中にffmpegのソフトが3種類入っています。ソフトは実行ファイル形式で、「ffmpeg.exe」・「ffplay.exe」・「ffprobe.exe」の３つがあります。
Cドライブにffmpegというフォルダーを作りそこにこの３つのソフトを移動します。
![1627653127486.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1827878/ccc768fd-9ce3-ac79-07ae-6a6d577ec4ba.png)

⑧Pathを通します。
ここはの説明は省きます。
Pathの通し方: https://opty-life.com/apps/ffmpeg-windows-install/
#②ibsndfileのインストール方法
①ホームページ: http://www.mega-nerd.com/libsndfile/
②下の方にダウンロードがあるので自分の環境に合わせてダウンロード
![スクリーンショット 2021-07-30 23.06.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1827878/94b8b533-dd79-ab7d-0f6e-e7125a563db5.png)
#③Spleeterのインストール方法
pipを利用すればインストールできます。
下のコードを実行する。
結構長いのであとはゆっくり待ちましょう🥱

```powershell
pip install spleeter
```
#実行してみる
```python
from spleeter.separator import Separator
import os

# 出力結果の保存場所をあらかじめ作っておく
for i in (2, 4, 5):  # 2音源、4音源、5音源
    outdir_path = './output/' + str(i) + 'stems'
    os.makedirs(outdir_path, exist_ok=True)

# 分離対象となる音楽wav
# https://soundcloud.com/ballforest/sample
input_audio = "./input/sample.wav"

# 初回実行時はモデルをダウンロードするため、「待ち」の時間がかかる
# 事前にダウンロードすることも可能 (pretrained_model/2stems などに保存)

# ボーカルとそれ以外に分離する(2音源)
separator_2stem = Separator('spleeter:2stems')
separator_2stem.separate_to_file(input_audio, "./output/2stems")

# ボーカル、ベース、ドラムとそれ以外に分離する(4音源)
separator_4stem = Separator('spleeter:4stems')
separator_4stem.separate_to_file(input_audio, "./output/4stems")

# ボーカル、ピアノ、ベース、ドラムとそれ以外に分離する(5音源)
separator_5stem = Separator('spleeter:5stems')
separator_5stem.separate_to_file(input_audio, "./output/5stems")
```
#参考文献
https://gist.github.com/tam17aki/9248b758375091793b10be125d195f10#file-spleeter_demo-py

https://tam5917.hatenablog.com/entry/2020/01/25/010629

https://opty-life.com/apps/ffmpeg-windows-install/

https://www.researchgate.net/publication/261038870_An_overview_of_informed_audio_source_separation

https://github.com/deezer/spleeter

http://www.kecl.ntt.co.jp/people/kameoka.hirokazu/publications/Kameoka2019ASJSpecialIssue09_published.pdf