Spleeterの導入（macOS X - Catalina）

# はじめに
<!-- 発端や概要を記載 -->
DTMやりてえ！ボーカルだけ抽出したい！Windowsじゃないから歌声○っぷ導入できねえ！
ん？Spleeter?大学の頃pythonがじってたし大丈夫だろ！
そんな軽い気持ちで始めました（地獄）
題記、浅い知識で導入するにはなかなか難儀過ぎたため、備忘録として記録。
私みたいな知識浅い人でも導入できるよう、丁寧に記述しますね。。。
（いやーほんと簡単に手を出すべきではなかった。。。）
あくまで私が実施した手順を簡単に書いているだけなので、各詳細を知りたい人はググってくださいね。

「Spleeterって何？」って人は以下参照
リンク(外部)→[無料で曲からボーカルが抜ける音楽素材分離エンジン「Spleeter」公開](https://block.fm/news/spleeter)
リンク(git)→[Deezer Spleeter](https://github.com/deezer/spleeter)

#筆者環境
- macOS Catalina (ver.10.15.7)

※一から構築することを想定しています。すでに開発環境構築している人は下記手順を必要に応じてスキップしてください。
※Windows環境の手順は割とググったらたくさん出てくるんですがね。。。
 


#対象読者
- MacBookでDTMやっている人
- MacBookだけど音源からボーカルだけ抜き出したい人
- 「なんかコマンドとかよくわからんけど多分全員抱いたぜ」って人
- いろんなサイト検索してここに行き着いた人。 

※Qiitaやっていらっしゃる大半の方は小指でもできることをつらつらと書いてます。温かい目で見てください。。。

# 目次
<!-- タイトルとアンカー名を編集 -->
1. [初期構築](#chapter1)
1. [Homebrewのインストール](#Chapter2)
2. [gitのインストール](#Chapter3)
3. [Pyenvのインストール](#Chapter4)
4. [pythonのインストール](#Chapter5)
5. [pipのアップデート](#Chapter6)
6. [FFmpegのインストール](#Chapter7)
7. [Spleeterのインストール](#Chapter8)
8. [音源抽出機能実行（ゴール）](#Chapter9)
1. [参考文献一覧](#reference)



<!-- 各チャプター -->
<a id="#Chapter1"></a>
# 初期構築（MAC購入 or 初期化後）
初期構築は以下を参照して実施。いろいろ詳しく書いてます。
私は一旦MAC初期化してから実施しました（いろいろ構築ミスってたので）。
リンク→[Macを買ったら必ずやっておきたい初期設定](https://qiita.com/ucan-lab/items/c1a12c20c878d6fb1e21)
※一部本記事と手順がかぶっているところがあります。上記手順で実行したものはスキップしてください。
その他はいろいろ検索したら出てくるのでお好みで。




<a id="#Chapter2"></a>
# Homebrewのインストール
ターミナルを開いて、以下（コマンド）を上から順にコピペして、はっつけて、Enter押す（以降コマンド実行って言ってたら同様手順で良い）。
「Homebrewってなに？」って人はググったらたくさん記事が出てくるはずなのでそちらを参照してください。
※ターミナルは、ホームメニューの中の「その他」に入ってます。


```
sudo chown -R $(whoami):admin /usr/local/*

sudo chmod -R g+w /usr/local/*

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
```
※３つ目は結構時間かかります。
上記３つ目のコマンド実行・終了後、以下コマンド実行。

```

brew -v
```
上記実行して、「Homebrew 2.2.11」みたいなメッセージ出てきたら完了。
コピペしてEnter押すだけの簡単なお仕事。


<a id="#Chapter3"></a>
# gitのインストール
最近のMacbookはデフォルトで入っていることが多いですが、念のため確認。
最初は「なんかよくわからんけど便利なツールか沢山格納されているサイトからツールをダウンロードするもの」
程度の認識でいいです。

```
git --version
```
上記実行して「git version 2.24.XX」みたいに表示されたらOK。
表示されなかったら以下実行。

```
brew install git
```

<a id="#Chapter4"></a>
# Pyenvのインストール
Pyenvは、「pythonってプログラムング言語を便利に管理するもの」という認識でOK。
ここまでする必要があるかは謎だが、今後spleeterの動向次第では動作保証されるpythonのバージョンが変わる可能性があるので、念のため。
以下を実行。

```
brew install pyenv
```
上記実行後、以下コマンドを実行するとバージョンの表示がされる。

```
pyenv -v
```

上記コマンドでバージョンが表示されたら、以下を実行。

```
echo $SHELL
```
この実行結果に表示される項目によって、次の手順が少し異なります。
※コマンドの詳細は気になったらググってね。設定ファイルに書き込んでるだけだよ

###①実行結果が 「/bin/bash」

以下コマンドを順番に実行する。

```
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
```
###②実行結果が　「/bin/zsh」
以下を順番に実行
※最近のMacbookはだいたいこっち

```
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
```

<a id="#Chapter5"></a>
# pythonのインストール

pyenv自体のバグがあるらしく、そのままの手順で実行するとspleeter実行時に以下エラーが出ます（私はここでつまづいた）。

```
ModuleNotFoundError: No module named '_lzma'
#pythonの標準ライブラリ
```


なので、まず以下を実行します。
（こちらを参考にしました→[pandas 0.25.0が使えない(ModuleNotFoundError: No module named '_lzma')](https://qiita.com/MuggyTea/items/93fd7c1f2aaf95db4740)）

```
brew install openssl readline sqlite3 xz zlib
```

その後、pythonのインストールを実行する（以下コマンドを順に）。

```
pyenv install 3.7.5
pyenv global 3.7.5
python --version
```
正しく設定されていれば、最後のコマンドを実行した際、「3.7.5」という数字が出てくるはずです。

<a id="#Chapter6"></a>
# pipのアップデート

pipとは、簡単にいうと「pythonをもっと便利に使うツールをダウンロードするもの」。
pythonをインストールした時点で入っているが、この後実行するコマンドに影響が出てくる可能性があるので、最新版にしておく。
以下コマンドを実行しよう。

```
pip install --upgrade pip
```

<a id="#Chapter7"></a>
# FFmpegのインストール
FFmpegは、今回使う「Spleeter」の前提ツール。必ずインストールしよう。
（参考→[それFFmpegで出来るよ！](https://qiita.com/cha84rakanal/items/e84fe4eb6fbe2ae13fd8)）
実はこれ自体もすっごい便利なツール。

以下コマンドを実行。

```
brew install ffmpeg
```
結構時間かかるから、根気良く待とう。

<a id="#Chapter8"></a>
# Spleeterのインストール
お待たせいたしました。ついにきました。
実行コマンドは結構変わるので、gitに書いてあるコマンドを実行すること。
参考→[deezer/spleeter 1. Installation](https://github.com/deezer/spleeter/wiki/1.-Installation)
「Using pip」に書いてあるコマンド参照のこと。
今回は2021年2月11日時点でのコマンドを実行します。
(基本は大きく変わらないと思うけど、いろいろ検索するとサイトによって実行してるコマンドが違うので、念のため)

```
pip install spleeter
```
これでインストール完了。長かったね。


<a id="#Chapter8"></a>
# 音源抽出機能
さあ、ついにきたね、この時が！！！
というわけで音声分割に入りましょう。
このツールの注意しなきゃいけないのは、これまで使っていた「ターミナル」でしか基本実行できないということ。
一般的に馴染みのあるアプリと違って、ボタンぽちぽちではできないから気をつけてね。
（気が向いたらそういうツールも作りたいが、そこまでの技術力は私には。。。）

使い方は、いろいろ検索したら出てくると思うから、ここでは一例だけ。
詳細なコマンドを知りたい人は以下をチェック（公式gitのwiki）。
参考→[deezer/spleeter 2. Getting started](https://github.com/deezer/spleeter/wiki/2.-Getting-started)

単にボーカルとその他で分けたい場合、以下形式のコマンドを実行。

```
spleeter separate -o [出力したいフォルダ] [元の音源のファイル]
```
出力したいフォルダ、元の音源ファイルの指定は「絶対パス」で行おう！
（作業ディレクトリに指定フォルダ・ファイルがある場合はその限りではない）
簡単なやり方は、フォルダないしはファイルをドラッグしてターミナルに入れる。
上記手順で実施すれば音源の抽出は可能だ！！！
そのほかのコマンド実行はいろいろググれば出てくるはずなので、この記事での紹介はここまで。
楽しいDTMライフを凄そう！！！

<a id="#reference"></a>
# 参考文献一覧
- [無料で曲からボーカルが抜ける音楽素材分離エンジン「Spleeter」公開](https://block.fm/news/spleeter)
- [Deezer Spleeter (git)](https://github.com/deezer/spleeter)
- [Macを買ったら必ずやっておきたい初期設定](https://qiita.com/ucan-lab/items/c1a12c20c878d6fb1e21)
- [pandas 0.25.0が使えない(ModuleNotFoundError: No module named '_lzma')](https://qiita.com/MuggyTea/items/93fd7c1f2aaf95db4740)
- [それFFmpegで出来るよ！](https://qiita.com/cha84rakanal/items/e84fe4eb6fbe2ae13fd8)