はじめに
- 楽曲を機械学習を用いてヴォーカル、ドラムなどのパート分けを行うspleeterというツールが出ましたね。
- こちらのツール、githubで公開されており、誰でも利用が可能となっています。
- この記事では、Dockerを使ってローカル環境をほぼ汚さずspleeterを実行できる環境を作ったので、その紹介になります。
Dockerでspleeterを実行できる環境を作る
- コード、サンプルの音楽ファイルなどは下記リポジトリに置いてあります。(サンプルの音楽ファイルは筆者が適当に作った4小節なので好きに使ってもらって構いません。)
Dockerfile
FROM continuumio/anaconda3:latest
RUN apt-get update \
&& apt-get install -y git
WORKDIR /work
RUN git clone https://github.com/Deezer/spleeter \
&& conda env create -f spleeter/conda/spleeter-cpu.yaml \
&& echo "conda activate spleeter-cpu" >> ~/.bashrc
Dockerfileの工夫点
- anaconda3のインストールされているイメージがあるため、これをベースに作れば少ない記述量でDockerfileを書き終えられます。便利。
-
docker run
のした場合、デフォルトだとcondaのactibateされている仮想環境がbaseになっており、実行の度に毎回仮想環境の切り替えのコマンドを入力する必要がありました。- 流石に面倒なので、
.bashrc
に下記を書き込むことで、docker run
の際にactivateする手間を省きました。
- 流石に面倒なので、
echo "conda activate spleeter-cpu" >> ~/.bashrc
リポジトリのクローンから実行まで
- コマンド5つ程で導入、分割まで可能です。
git clone https://github.com/fussy113/spleeterDock
cd spleeterDock
docker build -t spleeter-dock:lts ./
docker run --rm -it -v "#{APPLICATION_PATH}/spleeterDock/input:/work" spleeter-dock:lts bash
# Container内で実行
spleeter separate -i sounds/input/sample.wav -p spleeter:5stems -o sounds/output/
- 実行後、
sounds/output/sample
というディレクトリができていて、その中に分割された音声ファイルがあるかと思います。 若干ドラムの音がこもってる気がする。
終わりに
- 3分ほどの音声ファイルだとうまく処理されなかったり落ちるなどあるらしく、発展途上な所もまだまだありますが、個人的に成長が楽しみなツールです。(otherで分類されてしまう音声もどんどん分類できるようになると良いですね。。。!)
- 耳コピなどをするバンドマン系エンジニアやサンプリングが欲しいトラックメイカー系エンジニアの方にはぜひ使ってみてください。(用法用量はきちんと守りましょうね)
- 別な話ですが、spleeterをgoogleの力でさらに利用しやすくされてる方もおり、感服です。(こちら)