Demucs で音源分離
音源分離という技術分野があります。
音楽データを入力として、各楽器や音声毎に分離して出力するというものです。
例えば曲の中から歌の部分だけを分離して消してしまえばカラオケのデータになります。
音源分離は昔から様々な手法で取り組まれてきましたが、近年ではこの分野でもAI技術が応用されています。
オープンソースの音声分離ソフトウェアの一つに「Demucs」があります。
Metaの研究所が開発しているもので、GitHub で公開されています。
Python が動く環境であれば簡単にインストールできるようなので使ってみました。
https://github.com/facebookresearch/demucs/blob/main/docs/linux.md
に従ってインストールします。
まずはpythonのバージョンを確認。
$ python3 --version Python 3.9.2
Python 3.8以上であれば大丈夫です。
pip でインストール
$ pip3 install --user -U demucs
これだけです。
実行します。
$ python3 -m demucs --mp3 -d cpu music.mp3
Core i5 8400 のマシンで2分10秒ほど。
結果ファイルは以下のようなディレクトリ構造に置かれます。
$ find separated separated separated/htdemucs separated/htdemucs/music separated/htdemucs/music/bass.mp3 separated/htdemucs/music/vocals.mp3 separated/htdemucs/music/drums.mp3 separated/htdemucs/music/other.mp3
ボーカル、ベース、ドラム、それ以外といったところですね。
mp3 オプション無しで実行すれば、結果は wav ファイルになります。
ボーカルとそれ以外、みたいな分離もできます。
$ python3 -m demucs --two-stems=vocals --mp3 music.mp3 $ ls separated/htdemucs/music no_vocals.mp3 vocals.mp3
実際に聴いてみると、綺麗にそれぞれのパートに分かれています。変なノイズが乗っていたり、別のパートが混ざっていたりということもほぼありません。
ボーカルだけのファイルを聴くのはなかなか不思議な気分です。