ZFTurbo/Music-Source-Separation-Training
Repository for training models for music source separation.
音乐源分离 – 统一训练代码 (MSST)
是什么 – 一个用于训练、评估和运行多种深度学习模型推理的 Python 库和脚本集合,这些模型可将音乐轨道分离为各个声源(人声、鼓、贝斯、其他)。该仓库包含可直接使用的模型实现、配置文件、数据处理工具以及一个小型 GUI,旨在使实验快速且可复现。
为何重要 – 音乐源分离是音频信号处理的核心任务,也是生成式和判别式音频模型的常用基准。通过提供一个支持数十种前沿架构(MDX23C、Demucs-HT、基于 RoFormer 的模型、Swin-Upernet、SCNet、Conformer 等)的单一、可扩展的训练框架,该项目使研究人员和爱好者无需重写样板代码即可比较各种想法。
核心组件
- 模型库 – 通过
--model_type可选择十余种架构。许多模型是现有开源项目(如 Lucidrains 的 RoFormer、Segmentation-Models-Pytorch 库、原始 Demucs-HT 代码)的轻量封装。封装统一了训练循环和检查点处理。 - 配置驱动训练 –
configs/中的 YAML 文件描述数据集路径、超参数、批量大小、学习率调度等。提供了 MUSDB18 基准的示例配置。 - 训练脚本 –
train.py用于单 GPU,train_ddp.py用于多 GPU(PyTorch 分布式数据并行)。两者均支持通过docs/LoRA.md指南进行 LoRA 微调。 - 推理工具 –
inference.py加载检查点并处理一个 wav 文件夹,将分离出的音轨写入输出目录。 - 集成 –
ensemble.py可组合多个模型的预测以提升 SDR 分数。 - GUI – 为偏好点按操作流程的用户提供的轻量级 wxPython 界面(
gui-wx.py)。 - 打包 – 可通过
pip install msst安装,提供 Python API、CLI 和docs/中的文档。
典型工作流程
- 选择模型 – 例如
mel_band_roformer。 - 选择配置 – 例如
configs/config_mel_band_roformer_vocals.yaml(自定义路径、批量大小等)。 - 启动训练 –
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 - 运行推理 –
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/ - (可选)使用
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 是一个实用且文档完善的工具箱,抽象了音乐源分离研究中的重复性工作,让您能专注于模型构思、数据增强或大规模实验。
相关
- 项目
- 项目
- 项目
- 项目
- 项目