Demucsでボーカルを抜くと残響はどこへ行くか、htdemucsとhtdemucs_ftの4ステムと6ステム
耳コピでベースの音程を追いたいとき、好きな曲のドラムだけを聴いて手順を覚えたいとき、2ミックスから一つの楽器だけを取り出せると作業がずいぶん楽になる。手元のPCで動く音源分離の道具としていちばん名前を聞くのがDemucsで、1曲をボーカル・ドラム・ベース・その他の4つに分けてくれる。無料で、音声を外部のサービスに送らずに済むのもありがたい。 ただ、Demucsには学習済みのモデルが何種類もあり、名前もhtdemucs、htdemucs_ft、htdemucs_6sと似ていて紛らわしい。しかも元のリポジトリは更新が止まり、入手先が移っている。このメモでは、現行の3つのモデルについて、楽器ごとの分離精度、処理にかかる時間、分けたあとに何がどこへ残るかを整理しておく。数字は開発者が論文とリポジトリで公表している値だけを使い、最後に自分の曲で確かめる手順をまとめた。 元のリポジトリはアーカイブされ、開発者個人のフォークが本流になった 左が周波数、右が波形を扱う系統で、中央のTransformerが両者の情報を混ぜ合わせるImage: Meta Platforms, Inc. (Alexandre Défossez) / MIT Demucsは、Meta(旧Facebook)の研究部門にいたAlexandre Défossezさんが中心になって開発した音源分離のソフトだ。長くfacebookresearchの名前でGitHubに置かれていたが、開発者がMetaを離れたため、このリポジトリは保守されなくなり、読み取り専用のアーカイブになっている。READMEの冒頭には、もう保守していないこと、開発者個人のアカウントにフォークを作ったことが書かれている。 いま本流として扱われているのは、そのフォークのadefossez/demucsだ。こちらのREADMEには、これが公式に保守されている版だと明記されている一方で、積極的には手を入れておらず、返事は遅く、新しい機能もしばらく無いとも書かれている。大きな改良は期待せず、動き続けるための修正が入る場所だと考えておくのがよさそうだ。 それでも、2026年7月11日には4.1.0が出た。2023年9月の4.0.1以来、3年近くぶりの更新になる。変更点は、使う側から見ると次の3つが大きい。 対応するPythonの下限が3.10に、PyTorchの下限が2.1に上がった 推論(分離)にtorchaudioを使わなくなり、音声の読み込みは別のライブラリと、それで読めない形式だけffmpegで行うようになった 学習済みモデルの置き場所が、従来のAmazonのストレージからHugging Faceに移った 2つ目の変更はとくにありがたい。これまでは新しいPyTorchやtorchaudioと組み合わせると音声の書き出しでつまずくことがあり、古い版に固定して使う人が多かった。4.1.0ではWAVの書き出しを自前で行うので、その心配がかなり減っている。ただしFLACで書き出すときだけはffmpegが必要になった。 入手は、pip install demucs でPyPIから入れるのが基本になる。READMEには、uvというツールを使って uvx demucs 曲名.mp3 と打てば、インストールの手順を飛ばしてそのまま分離を始められる方法も載っている。古い記事に出てくるfacebookresearchのリポジトリから直接入れる手順は、もう追いかけなくてよい。 htdemucsとhtdemucs_ftは、同じ学習データで作りが違う 現行の第4世代は、Hybrid Transformer Demucsという構造をとっている。音を波形のまま扱う系統と、周波数ごとの強さに直したスペクトログラムで扱う系統を並べ、真ん中のTransformerで両方の情報を行き来させる作りだ。波形の系統は音の立ち上がりや位相に強く、スペクトログラムの系統は持続する音の高さや響きに強いので、両方を組み合わせて弱点を補い合っている。 この世代で配られているモデルは3つある。 モデル 分ける数 中身 処理時間 htdemucs 4(ボーカル・ドラム・ベース・その他) 1つのモデルで4つを同時に出す。初期値 基準 htdemucs_ft 4 htdemucsを楽器ごとに追加学習した4つのモデルの組 約4倍 htdemucs_6s 6(4つ+ギター・ピアノ) htdemucsを6種類に広げた版 1モデル分 どれも学習に使ったのは、研究用の定番データセットであるMUSDB18-HQに、独自に集めた800曲を足したものだ。違いは作りにある。htdemucsは1つのモデルが4つの楽器をまとめて受け持つのに対し、htdemucs_ftはドラム担当、ベース担当、その他担当、ボーカル担当という4つのモデルを別々に仕上げ、それぞれが自分の担当の楽器だけを取り出す。4回分の計算をするので、時間がおよそ4倍かかる。 READMEでは、htdemucs_ftについて、時間は4倍かかるが少し良くなるかもしれない、という控えめな書き方をしている。この「少し」がどの程度なのかは、次の節の数字で見ておく。 楽器ごとの分離精度は、ベースとドラムが高く「その他」が低い アタックのはっきりしたドラムは、分離しやすい楽器のひとつだPhoto: Mostafameraji / CC BY 4.0 音源分離の精度は、SDR(信号対歪み比)という値で表すのが一般的だ。正解の楽器の音に対して、取り出した音にどれだけ余計なものが混ざっているかを示す値で、デシベルで表し、大きいほどきれいに分かれていることになる。目安として、1dB上がると混ざり込んだ余計な音のエネルギーがおよそ2割減ると考えるとつかみやすい。 開発者の論文には、MUSDB18-HQの評価用の50曲で測った、楽器ごとの値が載っている。配布されているhtdemucs_ftに当たるのが、追加学習まで済ませた版の行だ。 楽器 htdemucs_ft相当 論文の最良版(配布なし) ドラム 10.08dB 10.83dB ベース 10.39dB 10.47dB その他 6.32dB 6.41dB ボーカル 9.20dB 9.37dB 平均 9.00dB 9.20dB 右の列は、Transformerの計算を間引いて長い範囲を見られるようにした版で、論文では最も良い値を出しているが、配布されているモデルの一覧には入っていない。手元で使えるのは左の列までだと考えておく。前の世代のHybrid Demucs(第3世代)は平均7.7dBだったので、世代が1つ進んで1dB以上良くなったことになる。 ...