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以上良くなったことになる。 ...

2026年10月14日 · 1 分 · 137 文字 · kingsworksub-jpg

Whisperの日本語文字起こしはどのサイズから実用になるか、tinyからlarge-v3-turboまで

打ち合わせの録音や、歌詞を口で吹き込んだボイスメモを文字にしたいとき、手元のPCで動くWhisperは便利な道具だ。音声を外部のサービスに送らずに済むので、未発表の曲の話をしている録音でも気にせず流し込める。ただ、使い始めるとすぐに迷うのがモデルの大きさだ。tinyからlargeまで6段階あり、さらにlarge-v3-turboという軽量版もある。動かす実装もOpenAI本家のほかにfaster-whisperとwhisper.cppがあって、組み合わせは思った以上に多い。 このメモでは、日本語で使う前提に絞って、モデルの大きさごとの文字誤り率、必要なメモリ、処理の速さを一つの表にまとめ直した。数字はOpenAIのリポジトリと、各実装・各モデルの配布元が公表している値だけを使っている。自分の録音で回す前に当たりをつけておけば、試す組み合わせを2つか3つに絞れる。最後に、自分の音声で確かめるときの手順も書き残しておく。 6つのサイズと、それぞれに必要なVRAM 音声をメルスペクトログラムに変え、エンコーダーで読み取ってからデコーダーが文字を1つずつ書き出すImage: Alec Radford, Jong Wook Kim, Tao Xu, Greg Brockman, Christine McLeavey, Ilya Sutskever / MIT Whisperは、音声を30秒ずつ区切ってメルスペクトログラムという画像のような形に変え、それをエンコーダーで読み取ってから、デコーダーが文字を1つずつ書き出していく仕組みになっている。モデルの大きさは、このエンコーダーとデコーダーの層の数と幅で決まる。OpenAIのリポジトリには、大きさごとのパラメータ数と、動かすのに必要なVRAMの目安、largeを1としたときの相対的な速さが載っている。 モデル パラメータ数 VRAMの目安 相対速度 英語専用版 tiny 3,900万 約1GB 約10倍 あり base 7,400万 約1GB 約7倍 あり small 2億4,400万 約2GB 約4倍 あり medium 7億6,900万 約5GB 約2倍 あり large(v3) 15億5,000万 約10GB 1倍 なし turbo(large-v3-turbo) 8億900万 約6GB 約8倍 なし 相対速度は英語の音声をA100というデータセンター向けのGPUで処理したときの値なので、家庭用のGPUや日本語の音声では比率が変わる。それでも、大きさが1段上がるごとに処理時間がおよそ倍になっていく感覚はつかめる。 日本語で使うときに最初に確認しておきたいのは、末尾に「.en」の付いた英語専用版を選ばないことだ。tiny.enやsmall.enは英語に特化して精度を上げた版で、日本語の音声を渡してもまともな結果にはならない。largeとturboにはそもそも英語専用版が無く、多言語版だけが配られている。 largeには世代があり、現行のlarge-v3は2023年11月に公開された。それ以前のlarge-v2と比べると、メルスペクトログラムの周波数の刻みが80から128に増え、学習に使った音声も大きく増えている。具体的には、ラベル付きの音声100万時間に加えて、large-v2で書き起こした音声400万時間を学習に使った。OpenAIが公開している公式のモデルとしては、2024年9月末のlarge-v3-turboがいまのところ最後で、それより新しい世代は出ていない。 日本語の文字誤り率は、smallとmediumのあいだで落ち着く 文字起こしの精度は、モデルの大きさと同じくらい、録音の条件にも左右されるPhoto: smaedli / CC BY 2.0 日本語の精度を見るときは、単語の誤り率(WER)ではなく文字の誤り率(CER)を使う。日本語は単語の区切りに空白を入れないので、単語単位で数えると区切り方の違いまで誤りとして数えられてしまい、数字が実感よりずっと悪く出るためだ。CERは、正解の文字数に対して、置き換え・抜け・余分な挿入がどれだけあったかの割合を表す。 日本語向けにWhisperを改良したkotoba-whisperの配布元が、OpenAIの各モデルを同じ条件で測った表を公開している。テストに使われているのは3種類の音声だ。CommonVoice 8は一般の人が文章を読み上げた録音、JSUTはスタジオで一人の話者が読み上げた音声、ReazonSpeechはテレビ放送から切り出した音声で、背景音や早口が混ざる、いちばん厳しい条件になる。 モデル CommonVoice 8 JSUT ReazonSpeech tiny 53.7% 36.5% 137.9% base 28.6% 24.9% 70.4% small 15.1% 14.2% 41.5% medium 11.5% 10.0% 33.2% large(初代) 10.0% 8.9% 34.1% large-v2 9.7% 8.2% 28.1% large-v3 8.5% 7.1% 14.9% 読み上げ音声の2つを見ると、tinyからsmallまでは1段上がるごとに誤り率がほぼ半分になり、smallからmediumで15%前後から10%前後まで下がる。その先のlarge系は、世代を重ねても1〜3ポイントずつしか縮まない。はっきりした読み上げ音声なら、mediumあたりで伸びが緩やかになると見てよさそうだ。 ...

2026年10月13日 · 1 分 · 184 文字 · kingsworksub-jpg