🧠
Mel-Band RoFormer Karaokeモデル分析 — リードボーカルだけを抽出する913MBの秘密
RoPE + メルスケール周波数分解 + 階層的時間・周波数Transformer — コードと設定まで
モデルファイル情報
| 項目 | 値 |
|---|---|
| ファイル名 | mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt |
| サイズ | 913 MB |
| 形式 | PyTorch pickleチェックポイント |
| 設定ファイル | config_mel_band_roformer_karaoke.yaml(1.72 kB) |
| ホスティング | HuggingFace |
RoFormer — Rotary Position Embedding
RoFormerは標準の位置エンコーディングの代わりにRoPE(Rotary Position Embedding)を使う。QueryとKeyベクトルを位置に応じて回転させ、遠いトークン間のアテンションが自然に減衰する。
from rotary_embedding_torch import RotaryEmbedding
time_rotary_embed = RotaryEmbedding(dim=64)
# Attention.forward()内:
q = self.rotary_embed.rotate_queries_or_keys(q)
k = self.rotary_embed.rotate_queries_or_keys(k)
時間軸と周波数軸にそれぞれ別のRoPEを使用。
Mel-Band vs Band-Split
| BS-RoFormer | Mel-Band RoFormer | |
|---|---|---|
| バンド分割 | ヒューリスティック、非重複、62バンド | メルスケール、50%重複、60バンド |
| 知覚的重み付け | なし | あり(人間の聴覚に合致) |
| パラメータ(L=6) | 72.2M | 84.2M |
メルスケールは人間が低周波と高周波の差を異なる感度で知覚する特性を反映。50%重複はバンド境界でのアーティファクトを低減。
推論パイプライン全体
- STFT: ステレオオーディオ→複素スペクトログラム
- メルバンドプロジェクション: 1025周波数ビン→60メルバンド→線形投影→[batch, time, 60, 384]
- 階層的Transformer(6層): 時間軸と周波数軸のTransformerをRoPE付きで交互実行
- マスク推定: バンドごとのMLP→複素マスク→元のSTFTに乗算
- ISTFT: 時間ドメイン音声を復元
なぜカラオケ専用か
学習設定:
instruments: [karaoke, other]
target_instrument: karaoke
karaoke = 伴奏+バッキングボーカル。other = リードボーカルのみ。モデルがkaraokeステムを出力し、残差がクリーンなリードボーカルになる。
SDR 10.1956の位置づけ
| モデル | Vocal SDR |
|---|---|
| Spleeter(2020) | ~5.91 dB |
| HTDemucs(2022) | ~9.20 dB |
| このモデル | 10.20 dB(リードのみ — より難しいタスク) |
| Mel-RoFormer L=6(論文) | 11.21 dB(全ボーカル) |
テスト方法
pip install audio-separator[gpu]
audio-separator song.mp3 --model_filename mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt
キーソースファイル:
mel_band_roformer.py(471行)— アーキテクチャ全体mdxc_separator.py— 推論オーケストレーションseparator.py— エントリポイント
キーコンセプト
1
STFT — ステレオオーディオを複素スペクトログラムに変換(n_fft=2048, hop=441)
2
メルバンドプロジェクション — 1025周波数ビンを60個の重複メルバンドに分解+線形埋め込み
3
階層的Transformer×6 — 時間軸→周波数軸Transformerを交互実行(RoPE)
4
マスク推定 — バンドごとのMLPで複素マスク生成→元のSTFTに乗算
5
ISTFT — マスクされたスペクトログラムを時間ドメイン波形に復元
6
残差計算 — 原本 - karaoke(モデル出力) = リードボーカル
ユースケース
カラオケ伴奏生成 — リードボーカルのみ除去、バッキングボーカル・コーラスは維持
ボーカル抽出 — クリーンなリードボーカルのみ分離(WhisperX転写入力に活用)
MLアーキテクチャ学習 — Transformerベースオーディオ処理パイプラインの理解