KUON SEPARATOR の仕組み
Meta の Demucs v4(htdemucs)ハイブリッド U-Net が、どうやって 1 本のミックス音源から、ボーカル・ドラム・ベース・楽器の 4 ステムを取り出すのか。
音源分離とは何か
音源分離とは、1 本のミックス録音から、個々の音源を取り出す処理のことです。ポップソングのステレオマスターを入力すると、出力として 4 本の独立したトラック(リードボーカル、ドラムキット、ベースライン、それ以外の楽器すべて)が得られます。人間の耳には自然な作業に感じますが、計算機にとっては信号処理の中でも最も難しい問題のひとつです。
なぜこれが数学的に難しいのか
音源分離は古典的なブラインド音源分離(BSS)問題です。観測信号 x(t) と未知の音源 s₁(t)…sₙ(t) があるとき、ミックスは x(t) = Σᵢ sᵢ(t) と書けます。1 本の観測から n 本を取り出そうとしているので、この方程式系は劣決定系(underdetermined)です — 和が x になる n 組の組み合わせは無限に存在します。
独立成分分析(ICA)と非負値行列因子分解(NMF)が古典的な解法でした。ICA は音源と同数以上のマイクが必要です。NMF は非負スペクトルテンプレートという強い構造仮定を必要とします。どちらも、1 本のステレオファイルに十数個の楽器と 3 系統のエフェクトバスが収まっている実際のポップスには通用しません。現代の答えであるディープニューラルネットワークは、数学的にこの方程式を解くのをやめ、代わりに「ボーカル、ドラム、ベース、その他楽器」の統計的な形を、数百万の学習例から学習します。学習した事前確率を使って最も尤もらしい分解を選び取るのです。
Demucs v4:ハイブリッド U-Net アーキテクチャ
Meta AI Research は 2019 年に Demucs を公開し、バージョン 4 まで改良を重ねてきました。Demucs v4(htdemucs / hybrid-transformer-Demucs)は、2 本の U-Net ブランチを並列に走らせます — 一方はスペクトログラム、もう一方は生波形を処理 — そして cross-domain transformer でそれらを融合します。このハイブリッド設計が、Demucs v4 が過去の SOTA を超えた最大の理由です。
なぜスペクトログラム+波形の二刀流なのか
スペクトログラム(STFT 振幅+位相)は、和音・持続するボーカル・倍音のような、トーナル(音程のある)な成分に向いた表現です。これらは周波数-時間グリッド上で水平に伸びる明瞭な線として現れます。一方、波形ドメインのモデルは位相を正確に保持し、スネアの一発、破裂子音、弦のピッキングといった過渡的な事象を正しく捉えます — これらはスペクトログラムでは複数のビンにまたがって滲んでしまいます。どちらが上というわけではなく、それぞれが信号に対して異なる「視点」を持っています。Demucs v4 は両方を並列に処理し、cross-domain transformer にフレームごとの融合を任せます。だから Demucs のドラムステムはトランジェントがパキッとしており、ボーカルステムはピッチが綺麗に残るのです。
Cross-Domain Transformer
U-Net のボトルネック層で、スペクトログラム特徴量と波形特徴量は、双方向 cross-attention を持つ transformer に合流します。平たく言えば、時間フレームごとに、スペクトログラムブランチが波形ブランチに「ここの過渡はどう見えた?」と尋ね、逆もまた然り。これは独立した予測を平均するアンサンブルとは逆の発想です — 2 本のブランチが推論の途中で互いに条件付けし合っているのです。Meta の論文では、この cross-attention が SI-SDR で約 0.5 dB の改善に寄与すると報告されています。SOTA のこの水準では巨大な差です。
学習データ:MUSDB18-HQ
Demucs は MUSDB18-HQ で学習されます — 完全にミックスされたステレオマスターと、それに対応する 4 本の孤立したステム(ボーカル、ドラム、ベース、その他)が揃った 150 曲のデータセット。訓練に 100 曲、テストに 50 曲。教師あり学習の魔法は、ネットワークがミックスを見て 4 ステムを予測し、ground-truth ステムとの L1 / SI-SDR 損失で罰せられ、その勾配が両方の U-Net ブランチと cross-domain transformer を逆伝搬していくこと。約 12 万ステップの学習を経て、ネットワークはボーカル・ドラム・ベース・「その他」が単独でどう鳴るかを、特定の 1 曲に依存しない形で内在化します。
SI-SDR:「本当に動いている」ことをどう検証するか
Scale-Invariant Signal-to-Distortion Ratio(SI-SDR)は、音源分離の品質を測る業界標準の指標です。分離信号を最適にスケーリングしたあと、信号エネルギーと残留歪みエネルギーの比を計算します。SI-SDR = 0 dB は「歪み = 信号」を意味します。Demucs v4 は MUSDB18-HQ テストセットで、ボーカル 9.0 dB、ドラム 10.8 dB、ベース 9.6 dB、その他 7.6 dB を達成しています。参考までに、2021 年時点のシングルドメイン最良モデルはボーカルで 7-8 dB あたりでした。
KUON SEPARATOR は、これを実際にどうデプロイしているか
KUON SEPARATOR は Demucs v4 を Google Cloud Run の asia-northeast1 リージョンで走らせています。コンテナイメージは 1.4 GB(PyTorch CPU 版 + demucs + htdemucs モデルをイメージに焼き込み済み — cold start 時のモデルダウンロード不要)。各インスタンスは 4 vCPU と 16 GB RAM。ピーク推論での OOM 回避のため、concurrency は instance あたり 1 に設定。リクエストのライフサイクル:ユーザーが R2 にアップロード → Next.js がジョブを署名して Cloud Run を呼ぶ → Cloud Run が R2 からダウンロード、推論(4 分の曲で 4-6 分)、4 本のステム WAV を R2 にアップロードし戻す → Next.js が pre-signed なダウンロードリンクを返す。R2 の 24 時間ライフサイクルルールが、何も残らないことを保証します。
プライバシー:学習せず、24 時間で自動削除
多くのクラウド AI サービスがユーザーデータで追加学習して収益化するのと違い、KUON SEPARATOR の Demucs の重みは凍結されています。Meta は学習済みの htdemucs モデルを MIT ライセンスで公開しており、私たちはそれをそのまま使っています。アップロードされた音声は推論だけを通過し、一度も学習には入りません。R2 バケットのオブジェクトは、バケットレベルで 24 時間の自動削除ルールがかかっています。あなたがダウンロードリンクを放置したとしても、ファイルは 1 日後に消えます。Next.js プロキシと Cloud Run の間の認証は 32 バイトのシークレット bearer トークンで行われ、プロキシ以外の誰もワーカーには到達できません。
実用的な品質:Demucs が得意なこと
実際のところ、Demucs v4 の出力ステムはカラオケ・マイナスワン練習トラック・リミックス・採譜に、そのまま使える品質があります。密度の高いミックスでもボーカルは伴奏から綺麗に分離されます。ドラムはキックとスネアのアタックがパキッと残り、ボーカルの混入はごく僅か。ベースは、ベースラインがキックの基音から離れている場合によく分離します。「その他」ステムはギター・鍵盤・ストリングス・ブラス・エフェクトバスを全部含みます — 楽器別ではなく、意図的にまとめたステムです。苦手なケース:語りオーバーダブ、ボコーダーの重い処理、リバーブの深いライブ録音では、Demucs は滲むことがあります。
ロードマップ:分離から「理解」へ
音源分離は入口であって終点ではありません。KUON SEPARATOR は下流のパイプラインに接続されます:KUON TRANSCRIBER(ステム → MusicXML 楽譜、basic-pitch 経由)、KUON INTONATION ANALYZER(ステム → セント精度のピッチ時系列)、KUON MINUS-ONE GENERATOR(ステム別ミュートでガイドボーカル付きマイナスワン)、KUON HARMONY ANALYZER(「その他」ステムから music21 でコード抽出)。それぞれが独立したアプリですが、連携します:一度分離すれば、あとは採譜・分析・練習を積み上げていけます。これが Pro サブスクリプションのフライホイールです。