ZFTurbo/Music-Source-Separation-Training

Repository for training models for music source separation.

Music Source Separation – Universal Training Code (MSST)

何であるか – 深層学習モデルを用いて音楽トラックをボーカル、ドラム、ベース、その他の音源に分離するためのPythonライブラリとスクリプト群。このリポジトリには、すぐに使えるモデル実装、設定ファイル、データ処理ユーティリティ、および小さなGUIが含まれており、実験を迅速かつ再現可能にする目的で設計されている。

重要性 – 音声信号処理における中心的なタスクであり、生成モデルおよび判別モデルの一般的なベンチマークとして広く用いられる音楽ソース分離。本プロジェクトは、数十種類の最先端アーキテクチャ(MDX23C、Demucs-HT、RoFormerベースモデル、Swin-Upernet、SCNet、Conformerなど)をサポートする、拡張可能な単一のトレーニングフレームワークを提供する。これにより、研究者や趣味のユーザーはボイラープレートコードを再実装せずに、アイデアを比較できる。

主なコンポーネント

  • モデルズーライブラリ – --model_type で選択可能な十数種類のアーキテクチャ。多くのモデルは既存のオープンソースプロジェクト(例:LucidrainsのRoFormer、Segmentation-Models-Pytorchライブラリ、元のDemucs-HTコード)をラップした薄いラッパー。ラッパーはトレーニングループとチェックポイントの取り扱いを標準化している。
  • 設定駆動型トレーニング – configs/ ディレクトリ内のYAMLファイルで、データセットパス、ハイパーパラメータ、バッチサイズ、学習率スケジュールなどを記述。MUSDB18ベンチマーク用の例も提供されている。
  • トレーニングスクリプト – 単一GPU用の train.py、マルチGPU用の train_ddp.py(PyTorch Distributed Data Parallel)。両方とも docs/LoRA.md ガイドに従ってLoRA微調整をサポート。
  • 推論ユーティリティ – inference.py はチェックポイントを読み込み、wavファイルのフォルダを処理し、分離されたステムを出力ディレクトリに書き出す。
  • アンサンブル – ensemble.py は複数モデルの予測を統合し、SDRスコアを向上させる。
  • GUI – ポイントアンドクリックワークフローを好むユーザー向けの軽量なwxPythonインターフェース(gui-wx.py)。
  • パッケージング – pip install msst でインストール可能。Python API、CLI、および docs/ にドキュメントが提供される。

一般的なワークフロー

  1. モデルを選択 – 例:mel_band_roformer。
  2. 設定を選択 – 例:configs/config_mel_band_roformer_vocals.yaml(パスやバッチサイズなどをカスタマイズ)。
  3. トレーニングを開始 –
    python train.py \
        --model_type mel_band_roformer \
        --config_path configs/config_mel_band_roformer_vocals.yaml \
        --results_path results/ \
        --data_path datasets/train1 datasets/train2 \
        --valid_path datasets/musdb18hq/test \
        --num_workers 4 \
        --device_ids 0
    
  4. 推論を実行 –
    python inference.py \
        --model_type mel_band_roformer \
        --config_path configs/config_mel_band_roformer_vocals.yaml \
        --start_check_point results/last.ckpt \
        --input_folder input/wavs/ \
        --store_dir separation_results/
    
  5. (オプション)ensemble.py で複数のチェックポイントをアンサンブルして分離品質を向上させる。

ハードウェアの注意点 – デフォルトのバッチサイズはNVIDIA A6000(48 GB)をターゲットとしている。VRAMが少ないユーザーはYAML設定ファイルで training.batch_size を下げ、または training.gradient_accumulation_steps を増やすこと。

事前学習済みモデル – リポジトリはサポートされるアーキテクチャの多くについて、公開されたチェックポイントのリスト(docs/pretrained_models.md)を維持しており、迅速な推論や微調整の初期化に有用。

コミュニティと引用 – このプロジェクトは MVSep.com のチームによって維持されており、SDX23チャレンジのKUIELabコードに基づいている。このコードを使用して研究成果を発表する場合、READMEにリンクされたベンチマーク論文を引用すること。


結論 – MSSTは実用的で、ドキュメントが充実したツールボックスであり、音楽ソース分離研究における繰り返し作業を抽象化し、モデルのアイデア、データ拡張、大規模実験に集中できるようにする。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト