コンテンツへスキップ →

なんとなくPython入れ直したらSpleeterがうまく動かなくて困ったけどなんとかなった話とおまけ

Pythonをたまーに使っては忘れるのを数年繰り返していたのだけれどちょっとやる気を出してインストールしなおした。Anacondaではなく公式のパッケージをインストールしてVSCodeでコードを書くかたちに。といっても一番の目当ては機械学習によって2ミックスの音声データからステムを抽出するSpleeterの活用だったりする。

にもかかわらず、なにも知らず軽い気持ちでインストールした最新版のPython 3.9ではSpleeterが動かないことが判明。3.8を別途インストールすることに。バージョンの使い分けが思ったよりもかんたんだったので悩むほどでもなかった……。

Pythonの複数バージョンの扱い方(Windowsの場合) | ガンマソフト株式会社

しかし、3.8のほうにSpleeterをインストールしたはいいものの、動作に必要なffmpegのパスが通ってないと言い出すので困ってしまった。これはシステム設定でffmpegのパスを通しただけでは解決されず、pipでffmpegおよびffmpeg-pythonをアンインストール→再インストールを試したらなんかわからんが動いた。動いたらいいんだよ。

ようやくSpleeterがちゃんと動いてくれるようになった。ただ、いちいちコマンドを打つのが面倒だからバッチファイルをつくった。Spleeterにはステムをどんな構成で抽出するかによって3つのモードがある。ヴォーカルとバックトラックだけなら2stems、ヴォーカル・ベース・ドラム・その他に分けるなら4stems、ヴォーカル・ベース・ドラム・鍵盤・その他に分けるなら5stems。バッチファイル3種類つくるのもいいけどなんか入力できたらかっこいいな……と、バッチファイルを走らせたときに尋ねることにした。あと、処理が終わったら出力先のフォルダをエクスプローラで表示することに……。

@echo off
rem 変数の用意
set INPUTSTR=
rem Spleeterのモードを入力する
set /P INPUTSTR="which mode do you want? (2stems/4stems/5stems) : "
rem 引数と変数をぐいっとやりつつspleeterを呼ぶ
py -3.8 -m spleeter separate -p spleeter:%INPUTSTR% -o output %1
rem 出力されたフォルダを開く
explorer output\%~n1
pause >nul

適当な名前をつけて.batで保存しておくと、それにmp3ファイルをドラッグ&ドロップするだけでSpleeterで処理できる。(Spleeterのインストール自体は日本語でわかりやすい解説があるからググってください……)

まあSpleeterになんの使いみちがあるかというと、権利関係の都合もあってあんまりこう、大きな声でああだこうだとは言いづらいんだけど、でも面白いですよ。気軽にヴォーカル抽出できるの楽しいし、耳コピに活用する道もあるようだ。

なにとは言わないが、以前Spleeterを使っていろいろしたときの成果物。

カテゴリー: Japanese