Spleeter (音楽素材分割エンジン) を繰り返し実行するシェルスクリプトをつくってみた(自分用)
以前 Speeter をインストールして使ってみるところまでをこちらの記事で書かせて頂きました。
ちょっと使ってみて。
当たり前ですが完全にボーカルだけを抜き切ることはできず。
どうしたものかと考え試しに何回か繰り返し掛けてみたところ、回数を重ねるごとに若干ですが伴奏部分が削れてきている気がしました。
これはもしかしたら100回くらい掛けたら結構きれいになるのでは?!
ということで、手動で何回もコマンドを実行するのも手間だったので、自動で繰り返し実行するシェルスクリプトを書いてみました。
結論からいうと、曲にもよると思いますが100回やってもあんまり変わらず。
まぁ10回とか20回くらいでいいのかなという気がしました。
回数を重ねると削れるというより音が丸くなるような印象でした。
環境
MacBook Air (Retina, 13-inch, 2019)
macOS Big Sur 11.3.1(20E241)
スクリプト
スクリプト
本当に自分用に簡単に書いたものなので、不具合や使い勝手などは考慮してません。
使う場合は、シェルスクリプトがわかる方がご自身の環境に合わせてカスタマイズして使って頂いた方が良いかと思います。
ご了承ください。
Spleeter.sh
#!/bin/bash
count=0
while true
do
count=`expr $count + 1`
echo ">>>>>" $count "times"
spleeter separate sound/vocals_`expr $count`.wav -p spleeter:2stems -o sound
mv sound/vocals_`expr $count`/vocals.wav sound/vocals_`expr $count + 1`.wav
rm -R sound/vocals_`expr $count`
if [ $count -eq 100 ]; then
exit 0
fi
done
スクリプトでやってること
Spleeter でボーカルを抽出した音声ファイルに対して再度 Spleeter でボーカルを抽出する、というのを繰り返し実行します。
カレントディレクトリの構成はこんなイメージです。
n回Spleeterを実行したものが "vocal_n.wav" となります。
例えば、3回Spleeterを実行したものは "vocal_3.wav" になります。
以下実行の流れの例です。
わかりやすく、1回実行したファイル(vocal_1.wav)に対しての流れを書いていきます。
spleeter separate sound/vocals_`expr $count`.wav -p spleeter:2stems -o sound
vocal_1.wav に対して”spleeter separate”を実行します。
すると"sound/vocal_1"フォルダに"vocals.wav"ファイルが出力されます。
mv sound/vocals_`expr $count`/vocals.wav sound/vocals_`expr $count + 1`.wav
"sound/vocal_1"フォルダに出力された"vocals.wav"ファイルを”sound/”に移動します。
そして、ファイル名を"vocals.wav"→"vocals_2.wav"に変更します。
rm -R sound/vocals_`expr $count`
"sound/vocal_1"フォルダはもういらないので削除します。
if [ $count -eq 100 ]; then
上で説明した動作をここに書いてある回数分繰り返します。
この書き方だと100回繰り返します。
使う前の注意点
使用前の注意点として、以下をやっておいてください。
- conda activate spleeter-cpu を実行しておいてください。
- spleeter separate を事前に手動一度実行して、"pretrained_models"フォルダと、"sound/vocals_1.wav"ファイルがある状態にしておいてください。
- ターミナルのカレントディレクトリはSpleeter.shがあるところ(上のディレクトリの図の場所)に移動しておいてください。
使い方
普通のシェルスクリプトの実行と同じです。
以下のコマンドを実行するだけ。
bash Spleeter.sh
ざっと書いてしまいましたが、とりあえずこんな感じです。
余裕があったらスクリプト・記事ともにもう少しちゃんと書くかもです。