DOSE Drum One-Shot Extraction from Music Mixture
https://scrapbox.io/files/67fbbeaf3481c2c4006ebfe4.png
文献情報
S.Hwang et al. (Seoul National Univ.)
ICASSP 2025
要は何?
ドラムサンプル(キック、スネア、ハイハット)を混合音から抜き出す
問題意識と解決策
ドラム音を考えることは音楽制作において非常に重要、ドラムサンプルの合成技術がこれまで発達
音楽制作において、既存の曲からドラムサンプルを探し抽出して、リミックスやカバーの作成などに用いるというシナリオがあり得る
この既存曲からドラムサンプルを抽出するタスクを"Drum one-shot extraction"と名づけ、タスクを解く方法を探求したい
既存の手法で考えられるのは、ドラム音分離→パート推定及びさらなる分離;(separation-based approach)
しかし、この方法では分離とパート推定が一貫性のある抽出を保証せず、アーティファクトを含むサンプルを抽出することも
そこで、混合音に含まれるドラムサンプルを、分離を介さず直接生成するというアプローチ(DOSE)を提案
生成にはneural audio codecと各パートごとのdecoder only transformerを利用
さらに、このタスクのためのデータセットRandom Mixture One-shot Dataset (RMOD)を構築。
関連研究
Drum One-shot Generation
ドラム音を生成するもの(not混合音からの抽出)
条件付けの生成モデルが広く使われてきた
DrumGANやStyleWaveGANなど、semanticな条件付けをするGANなど
Drum source separation
ドラム音の分離
通常の音源分離は4-stem分離。vocal,bass,drum,other
Neural Audio Codec language modeling
soundstream, encodec, DACなど、離散トークンで音の情報を圧縮した特徴表現
autoregressiveな生成モデル(MusicGen, MusicLM)に用いられ、高品質な音楽生成を支えている
手法
MusicGenをインスパイアした構造
混合音をDACエンコーダ+decoder-only transformer入力しDACのトークンを生成
→抽出対象のDACのトークンと一致するように学習する
→その音をDACデコーダに通すとドラムサンプルが生成される
transformerの生成パターンはdelayモードを利用
https://scrapbox.io/files/67fbc937098f38d46839ab79.png
https://scrapbox.io/files/67fbc73826d6d9c4505635a5.png
ロスは以下の2つの和を最適化
full-length cross-entropy :ドラムサンプル全体のトークン推定
onset loss:音色の再現を強化するため、アタックやトランジションの成分に特に着目して学習
コードブックのインデックスk、コードブックサイズKとして、ある時刻t+kからK+1までの部分でcross-entropyをとる
yamamoto.icon 図のonset lossの部分がわかりやすい
データセット
既存のデータセットに、混合音+アライメントがとれたドラムサンプルの音源を満たすデータセットはあまりない
データセットRMODを構築
https://scrapbox.io/files/67fbcd5f109167a710eeca4f.png
ドラムサンプル+他パートをミキシングしてループを合成する
ドラムサンプル&他楽器サンプル:既存のデータセット↓から各音のサンプルを収集
データ拡張
ドラムサンプルは上図mixing processを通して合成。その際のエフェクトのパラメタはランダムにする
ループ合成
midi:miditoolkitを用いて生成。4秒のループ中に1920点つけ、キックが2-4回、スネアが2-4回、ハイハットが14-18回ランダムに起こるようなループをランダム生成
yamamoto.icon 音楽的な妥当性は考慮しないっぽい?
audio rendering:
ドラムの連打は音がオーバーラップしないように前を切る
ドラム以外を組み合わせるとき、30%でそのパートが抜けるようにランダムミックス
ピッチシフトする:ベース:-6~+2, それ以外-12^+12
ミックス・マスタリングのシミュレーション:
既存楽曲のやり方にそろえるようにする
つまり、ミキシング
https://scrapbox.io/files/67fbd0cee41ea65dfc0e2958.png
の後にマスタリング
https://scrapbox.io/files/67fbd0e02897a76bddd2d1c9.png
pedalboardとpymixconsoleを利用
実験とその結果
以下のモデルを比較
Reconstruction:Ground truthをDACのencoder-decoderで再構成する。DACで生成できる上限の目安として利用
LarsNet:ドラムを直接分離するモデル
DOSE:提案手法
用いたデータセット
RMOD:先述の手法で合成したデータ;1millionを学習、10000件をvalid,testに利用。各サンプルは4秒
RMOD drum-only:ドラムのみのサブセット
Groove MIDI dataset:人間の演奏をmidiにしたもの、out-of domainの評価用
yamamoto.icon これは学習してないって認識でOK?
評価指標
MSS(Multi-scale spectral similarity)
時間周波数表現上の距離。生成音がreferenceとどれだけ近いかを評価。
64,128,256,512,1024,2048の長さでFFTしたスペクトログラムをそれぞれ作り、そのMSEロスの大きさを測る
FAD(Frechet Audio Distance)
2つの音の埋め込みの距離
ここではVGGとCLAPを利用
結果
https://scrapbox.io/files/67fbd254cc2e4b0978090215.png
再構成はコーデックの再現能力そのものとして参考程度に
DOSEはLarsNetより性能が良かった、特にハイハットは差をつけている。
オンセットロスをつけるとtransitentの精度が良くなる
→grrovemidiではそうではなかった。RMODにない他のドラムの音(トム、クラッシュシンバル、リム等)の影響を受けた可能性あり
リアルワールドのペアデータを集めることは課題
ゆくゆくは他の楽器(トムとかクラッシュ等?それともドラム以外の?)でも同様なことをやりたい
デモ
コメント
論文の構成が明瞭で、既存手法や適用手法をコンパクトにまとめており、読みやすかった
完全にランダムなドラムパターンで合成したことによる影響もありそう?と思った(が、デモを聴いたら案外でたらめに聴こえなかったのでいいのかも)
クエリとしてdecoderに条件づけして任意ワンショットサンプル分離できたら面白そう。
データセットを作る研究はやはり良き