複数の音が混ざった録音から、それぞれの音を再び引き剥がす作業を音源分離という。映画のサウンド復元、音楽のリミックス、議事録の字幕起こしのように「混ざったものをほどく」場面で使われる。
分離器に音を入れるには、まず周波数軸を細かく刻む。その断片は数百〜数千個にもなるので、まるごと入れると計算が重い。そこで最近のモデルは、断片をいくつかの束(バンド)にまとめて入れる。束ひとつがモデルが一度に処理する情報の単位、つまりトークンひとつだ。
問題は、その束ねる境界を人があらかじめ固定している点にある。ベースが鳴っている区間とバイオリンのソロ区間とでは情報が集まる場所が違うのに、仕切りはどんな音が入ってきても同じだ。この論文は、仕切りの数はそのままに、仕切りの位置だけを入力に合わせて動かす。名前は動的バンド分割(Dynamic Band Splitting, DBS)である。
映画型の混合音ベンチマークDnR v2で、同じ128バンドを使いつつ境界を固定したBSRNNは平均SI-SDR 7.69 dB、境界を動かしたDBS版は9.07 dBだった(SI-SDRは分離された音が正解にどれだけ近いかを測る指標で、高いほどよい)。トークン数はそのまま。ただし後で見るように、この設定では演算がより多くかかる。
ところが「どこで区切るか」をモデルが決めるという看板とは裏腹に、スコアを最も大きく支えていたのは境界そのものではなかった。そこまで見ていこう。
こうした工夫は二つの流派のあいだにある。一方はバンド境界を設計時に打ち込み、すべての入力で共有する(BSRNN、BS-RoFormer、Mel-Band RoFormer、TIGERなど)。もう一方は周波数のフロントエンド自体をまるごと学習させ、自由に変える。DBSは真ん中を選ぶ。フロントエンドの構造と元の周波数格子はそのままにして、連続するバンド間の境界だけを入力に応じて動かす。なぜわざわざ真ん中なのかは結果が語ってくれる。
音をSTFT(短時間フーリエ変換、音を周波数-時間の格子に広げる変換)に変えると、周波数軸は数百〜数千個のビン(いちばん小さい周波数の区画)に伸びる。バンド分割はこのビンをあらかじめ決めたレイアウトで束ね、数十〜数百個のバンドに圧縮する。トークンが減って計算は軽くなるが、束ねる場所はいつも固定だ。
固定境界は二か所から漏れる。性格の違う成分を広いひとつの区画に押し込めてしまうか、たいした中身のない区間に細かい区画を無駄遣いするか。区画を増やせば解像度は上がるが、分離器のコストも一緒に上がる。だから手を入れるべき場所ははっきりしている。区画の数は固定したまま、その解像度をどこに集中させるかだけを入力ごとに変えればいい。
DBSは三ステップで動く。
まず境界を選ぶ。周波数軸をたどりながら「ここで音の質感がガラッと変わる」と思える地点に高いスコアを与え、上位から決められた数だけ拾う。境界の位置とバンド幅は入力ごとに変わるが、数は変わらない。
次は束ねる工程。幅がまちまちなバンドを、バンドあたりトークンひとつに圧縮する。幅に関係なく同じサイズのトークンが出なければ分離器が受け取れない。
最後が復元だが、ここが厄介だ。広いバンドひとつをトークンひとつに押し込めたので、戻すときに元の解像度をタダでは復元できない。境界付近で値が階段状に跳ね、ひとつの区画に押し込めた細部は失われる。そこで境界確率で遷移部分を滑らかに整え、隣り合う周波数の情報を混ぜ直して元の格子へ広げる。
境界をひとつも割り当てられない区間が生じないよう、安全装置を設けた。周波数軸をまず大きなブロック4つに分け、ブロックごとに最小予算を割り当てる。境界はブロックの内側でしか動かない。静かなバンドだからといってまるごと捨てられることはない。
残るは学習だ。「スコアのいちばん高いものだけをきっぱり選ぶ」という決定は、切り取る瞬間に微分が途切れるため、ふつうは最終誤差が境界を選ぶ段階まで遡れない。DBSは推論時には境界を実際にきっぱり切って選ぶ一方、学習時にはその選択スコアを少しずつ調整できるよう近似する。おかげで分離がまちがった分だけが境界予測器まで戻される。
各ブロックの実部・虚部を時間方向の畳み込みで処理したあと、周波数ビンごとに三つの大きさ統計(時間平均、ピーク対平均比、標準偏差対平均比)を取り出す。BiLSTMがビンごとに文脈ベクトル(周辺も一緒に反映した要約ベクトル)へ整理し、隣り合う二つのビンのあいだの境界候補ごとにスコアを付ける。スコアは二つの軸で構成される — 特徴項(隣接ビンの学習された表現の比較)と大きさ項(隣接ビンの音響統計がどれだけ変わるか、これを音響遷移事前分布と呼ぶ)。選択はHard Top-Kで、ブロックごとに上位の境界を決められた数だけ選び、最初のビンは常に境界としておく。幅がまちまちなバンドは内容ベースの重み付きプーリングで束ね、重みを時間フレームにわたって共有することで幅に依らず同じ次元のトークンを出す。学習はstraight-through estimator(順伝播はハードな選択、逆伝播は滑らかな近似を通す手法)で境界予測器を分離損失と一緒に回し、ブロックごとの目標圧縮比を合わせる正則化項を加える。
復元段は確率ベースの平滑化(Probability-Guided Smoothing、境界確率を使って境界の遷移を滑らかに整える)を経て、トークンを元のSTFT格子へ広げたのち周波数リファインメントで隣接ビンの特徴を混ぜる。そのあと周波数共有ヘッドで複素マスク(実部・虚部)をデコードし、逆STFTで波形を復元する。平滑化と名前が紛らわしい信頼経路(confidence path)はこれとは別の仕掛けだ — 順伝播の値はそのままにし、逆伝播のとき境界確率へ勾配を追加で流し込んで境界予測器の学習を助ける。
性格の違うベンチマークを3つ使った。DnR v2は音楽・話し声・効果音の3ソースが混ざった映画型の混合音、MUSDB18-HQはボーカル・ドラム・ベース・その他楽器(other、ボーカル/ドラム/ベース以外をまとめたステム)の4ステム音楽分離、EchoSetはノイズ・残響が乗った2話者の音声だ。分析周波数幅もわざと分けた。前の2つは0〜22.05 kHzの広帯域、EchoSetは0〜8 kHz。帯域幅が違っても適応配分が通用するかを見るための設計だ。
トークン予算はデータセットごとに固定した。DnR v2・MUSDB18-HQはSTFTビン1025個を128トークンへ、EchoSetは321個を67トークンへ束ねる。分割は推論ウィンドウごとに一度計算し、エンコードと復元に同じものを使う。
指標は性格に合わせた。DnR v2はソースごとのSI-SDRとその平均、MUSDB18-HQはステムごとのSDR、EchoSetはSDRi・SI-SDRiだ。ただしこれらの指標は波形が正解にどれだけ近いかを測るだけで、体感の音質や遅延は測らない。そこでパラメータ数と毎秒MACs(積和演算量)を別途報告してコストも一緒に示す。
三層に分けて読むと、それぞれの数字がどこまでを語っているかがはっきりする。
DnR v2でDBS-BSRNNは9.07 dB、同じ128バンド固定のBSRNNは7.69 dB。差の+1.38 dBが、同条件でDBS構成全体が上乗せした分だ。要約の「29.0%の相対向上」は基準が違う。オリジナルBSRNNの報告値7.03 dBに対して9.07 dBなので、この二つの数値を混ぜて語ってはいけない。TIGERも固定版8.74からDBS版10.13へ+1.39、3ソースすべてで上がった。
MUSDB18-HQ(外部データなしの単一モデルで4ステム同時分離、4ステム平均SDR)
| バックボーン | 固定版 | DBS版 |
|---|---|---|
| BSRNN | 5.09 | 5.43 |
| BS-RoFormer | 4.50 | 6.34 (+1.84) |
| MelRoFormer | 7.25 | 8.07 |
EchoSet(報告された基準モデルに対する改善幅)
| モデル | SDRi | SI-SDRi |
|---|---|---|
| DBS-BSRNN | +0.46 | +0.43 |
| DBS-TIGER | +0.33 | +0.31 |
MUSDB18-HQは、一つのモデルが外部データなしで4ステムを一度に分離した設定だ。ステムごとに専用モデルを使う音楽分離SOTAとは条件が違うので、直接並べて比べる値ではない。ここで見ているのは「同じ枠の中でDBSが固定版に勝つか」だけであり、バックボーンを問わず勝った。
境界を機械的に均一に分けて学習したUniformは8.00 dB。同じ構造・スケジュールでDBSが+1.07高い。これは「境界を内容に合わせて置く学習」の分だ(Mel帯域で固定すると5.87とさらに低い)。学習済みの重みはそのままに、推論時に境界だけを元のBSRNNレイアウトへすげ替えると、9.07から8.62へ下がる。境界の位置だけを元に戻したときの損失、すなわち0.45 dBだ。境界は実際に入力ごとに動いた。DnR v2のテスト混合音64個はすべて異なる分割を出し、同じ録音の中でも隣り合うウィンドウどうしで違っていた。逆に同じ入力を繰り返すと、いつも同じ分割が出た。入力には適応するが、結果は決定的だ。
構成要素を一つずつ外してみると、重心があらわれる。復元側の周波数リファインメントを外すと、9.07から3.92へ落ち込んだ(-5.15)。境界スコアから音響遷移事前分布を外すと-4.98、ブロックを4→2→1個に減らすと9.07→8.32→6.30、学習された特徴なしで統計だけを使うと-2.14、信頼経路を外すと-1.54だった。
ここでタイトルと結果が食い違う地点が見える。境界を自分で選ぶことがこの論文の看板だが、推論時に境界だけを戻したときの損失(0.45)よりも、復元段ひとつを外したときの損失(5.15)のほうがはるかに大きい。性能は、情報をどこで束ねるかと、それをどう再び広げるかが一緒になって作られる。境界をうまく捉えても、広げる段が手薄ならスコアは大きく折れる。
ただし、下落幅で要素をそのまま並べるのは難しい。ある要素を外すと別の要素が役割を一部肩代わりしたり、後段が壊れて前段の利得まで活かせなくなったりする。下落幅は「その要素が抜けた全体がどれだけ持ちこたえるか」であって、「その要素ひとつの純粋な寄与」ではない。
DBSが付くと演算量がどう変わるかは、データセット・バックボーンによって分かれる。DnR v2のDBS-BSRNN(128)はパラメータが4.7Mで固定BSRNNの35.5Mよりずっと小さいが、毎秒MACsは124.0で固定版の76.6より高い。毎回境界を予測し、復元段を余計に経る分の値だ。逆にMUSDB18-HQではBSRNNが21.8→20.8、BS-RoFormerが292.7→290.5 G/sとむしろ減り、EchoSetのBSRNNは98.7→38.1 G/sと大きく減った。パラメータが減れば必ず軽くなるわけでも、DBSを付ければ必ず重くなるわけでもない — 演算量はデータセットとバックボーン次第だ。
著者たちも線を引いている。バンドの数は固定で、推論ウィンドウごとに分割は一つだ。一つのウィンドウの途中で音が変わっても境界はウィンドウの間ずっとそのままなので、ウィンドウより短い変化には追従できない。数まで学習させた予備の変形は、ブロックごとに許された最大予算を使い切ろうとする方向へ偏った。数を柔軟にしたいなら、複雑さに別途の制約が必要だと見ている。
先に後回しにした「なぜわざわざ真ん中なのか」も、ここで答えになる。フロントエンドをまるごと学習させる最も自由な側(学習型フィルタバンク)は、同じ設定で-11.72 dBへ崩れ落ちた。自由度を上げれば表現力は増すが、復元と順序あるバンド構造を同時に合わせるのがそのぶん難しくなる。構造は残して境界だけを動かす折衷は、この難所を避けた選択だ。
ONTLEはAIプロジェクトマネージャーを付けてくれるサービスだ。DBSをそのまま持ってきて使うことはできなくても、原理ひとつは借りる価値がある。固定された検討予算の中で、どこにも最小限の点検量は保証しつつ、余った分を変化の大きいところへ集中させる、ということ。
場面をひとつ。ある顧客が「納期を3日前倒ししてほしい」というメッセージを送ってきた。AI PMが一日に深く見られる量(演算・コンテキスト)は決まっている。基本はすべてのプロジェクトに最小点検を回しつつ(ブロック予算のように)、いま期限が変わったこのプロジェクトに追加の検討を集中させる。スケジュールの組み直し、先行作業の衝突、担当者の余力をより深く見る。その間、普段どおり流れる他のプロジェクトは軽い要約だけ。
借りてくるシグナルは「状態が普段とどれだけ変わったか」だ。タスク状態の変更頻度、期限の変更といったもの。これが得かどうかは三つの数字で確かめる。すべてを等しく点検するときと比べて、取りこぼしが減ったか(見落とし率)、その配分にかかる検討コストはいくらか、応答が遅くなっていないか。DBSがある設定ではパラメータを減らしつつMACsを増やしたように、「必要なところへ集中させる判断」そのものがコストになりうる。節約する分よりそのコストが大きくなれば、やらないほうがましだ。適用はここから検討課題になる。
それが設計目標です。DBSはトークンの数と次元を保存するように作られており、既存のバックボーンがトークンを受け取っていた入力口にそのまま入ります。論文はBSRNN・TIGER・BS-RoFormer・MelRoFormerの4つに載せ、すべて固定版より良い結果を出しました。ただし、境界予測器は分離器と最初から一緒に学習しないと効果が出ません。
音をきちんと戻すには、各周波数の強度だけでなく位相(波形のタイミング)情報が必要だからです。実部と虚部を一緒に推定して初めて位相が生きます。
論文はバックボーンごとの向上幅の理由を個別に特定していません。固定版のスコア(4.50)が他のバックボーンより低かった位置で、適応の利得が大きく出たと読める程度です。
論文の要約にコードとオーディオデモのアドレスが公開されています(https://cslikai.cn/Dynamic-Band-Splitting)。本文は下のarXiv・HuggingFaceのリンクから確認できます。