ZFTurbo/Music-Source-Separation-Training
ZFTurbo/Music-Source-Separation-Training has 1,625 GitHub stars and 230 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-07 04:08 UTC. Last push 2026-10-30.
Repository for training models for music source separation.
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalMusic Source Separation Universal Training Code
Repository for training models for music source separation. Repository is based on kuielab code for SDX23 challenge. The main idea of this repository is to create training code, which is easy to modify for experiments. Brought to you by MVSep.com.
Models
Model can be chosen with --model_type arg.
Available models for training:
- MDX23C based on KUIELab TFC TDF v3 architecture. Key:
mdx23c. - Demucs4HT [Paper]. Key:
htdemucs. - VitLarge23 based on Segmentation Models Pytorch. Key:
segm_models. - TorchSeg based on TorchSeg module. Key:
torchseg. - Band Split RoFormer [Paper, Repository] . Key:
bs_roformer. - Mel-Band RoFormer [Paper, Repository]. Key:
mel_band_roformer. - Swin Upernet [Paper] Key:
swin_upernet. - BandIt Plus [Paper, Repository] Key:
bandit. - SCNet [Paper, Official Repository, Unofficial Repository] Key:
scnet. - BandIt v2 [Paper, Repository] Key:
bandit_v2. - Apollo [Paper, Repository] Key:
apollo. - BSMamba2 [Paper, Repository] Key:
bs_mamba2. - Conformer [Paper, Repository] Key:
conformer. - DTTNet [Paper, Repository] Key:
dttnet. - BS Conformer Key:
bs_conformer - SCNet Tran Key:
scnet_tran. - SCNet Masked Key:
scnet_masked.
- Note 1: For
segm_modelsthere are many different encoders is possible. Look here. - Note 2: Thanks to @lucidrains for recreating the RoFormer models based on papers.
- Note 3: For
torchseggives access to more than 800 encoders fromtimmmodule. It's similar tosegm_models.
How to: Train
To train model you need to:
- Choose model type with option
--model_type, including:mdx23c,htdemucs,segm_models,mel_band_roformer,bs_roformer. - Choose location of config for model
--config_path<config path>. You can find examples of configs in configs folder. Prefixesconfig_musdb18_are examples for MUSDB18 dataset. - If you have a check-point from the same model or from another similar model you can use it with option:
--start_check_point<weights path> - Choose path where to store results of training
--results_path<results folder path>
Training example
python train.py \
--model_type mel_band_roformer \
--config_path configs/config_mel_band_roformer_vocals.yaml \
--start_check_point results/model.ckpt \
--results_path results/ \
--data_path 'datasets/dataset1' 'datasets/dataset2' \
--valid_path datasets/musdb18hq/test \
--num_workers 4 \
--device_ids 0
All training parameters are here.
Training with LoRA
Look here: LoRA training
How to: Inference
Inference example
python inference.py \
--model_type mdx23c \
--config_path configs/config_mdx23c_musdb18.yaml \
--start_check_point results/last_mdx23c.ckpt \
--input_folder input/wavs/ \
--store_dir separation_results/
All inference parameters are here. Convert models to ONNX and TensorRT formats here.
Useful notes
- All batch sizes in config are adjusted to use with single NVIDIA A6000 48GB. If you have less memory please adjust correspodningly in model config
training.batch_sizeandtraining.gradient_accumulation_steps. - It's usually always better to start with old weights even if shapes not fully match. Code supports loading weights for not fully same models (but it must have the same architecture). Training will be much faster.
Code description
configs/config_*.yaml- configuration files for modelsmodels/*- set of available models for training and inferencedataset.py- dataset which creates new samples for traininggui-wx.py- GUI interface for codeinference.py- process folder with music files and separate themtrain.py- main training code for single GPUtrain_ddp.py- training code for Multi GPU config. Faster thantrain.py. Use it for 2 or more GPUs.utils.py- common functions used by train/validvalid.py- validation of model with metricsensemble.py- useful script to ensemble results of different models to make results better (see docs).
Pre-trained models
Look here: List of Pre-trained models
If you trained some good models, please, share them. You can post config and model weights in this issue.
Dataset types
Look here: Dataset types
Augmentations
Look here: Augmentations
Graphical user interface
Look here: GUI documentation or see tutorial on Youtube
Package installation
pip install msst
- Getting started — getting started with MSST package
- Python API — signatures, parameters, return values, and errors.
- Command-line interface — command syntax and shell examples.
- Compatibility — model extras, devices, and audio formats.
- Experiments — portable organization and tracking.
Citation
@misc{solovyev2023benchmarks,
title={Benchmarks and leaderboards for sound demixing tasks},
author={Roman Solovyev and Alexander Stempkovskiy and Tatiana Habruseva},
year={2023},
eprint={2305.07489},
archivePrefix={arXiv},
primaryClass={cs.SD}
}
Explore related projects
ytdl-org/youtube-dl
Command-line program to download videos from YouTube.com and other video sites
141,474 starsexcalidraw/excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
135,243 starsgodotengine/godot
Godot Engine – Multi-platform 2D and 3D game engine
119,656 starsmrdoob/three.js
JavaScript 3D Library.
117,669 stars