MSST / MSST-GUI by ZFTurbo | pymms
Repository of MVSEP creator and model trainer: https://github.com/ZFTurbo/Music-Source-Separation-Training
Now you should be able to install it in Python with also:
pip install msst
MSST-GUI by Bas Curtiz (default list of models can get outdated, but you can provide file paths manually there too) other GUIs linked at the bottom. The GUI has screen reader compatibility unlike UVR 5.6.1.
PS. If the GUI script is still broken, possibly using some older version of the repo might fix the issue.
Unlike in UVR, MDX-Net v2 and VR archs are unsupported here
Don’t install Python from the MS Store, or you might get a “1920” error about privileges.
Python newer than 3.12 might not work correctly.
Works on CPU or NVIDIA GPUs - by default it uses GPU if it’s properly configured (in case of GPU acceleration issues, some commands for it are listed later below).
In some specific cases MSST can separate up to 3 times faster than UVR on some GPU archs with e.g. 8GB GPUs (but on some 4GB it might be even slower).
It was also tested on Linux and ROCm 6 and 7 on AMD GPU (instructions later below, might work with WSL on Windows which uses Ubuntu, iirc only one RX series is supported on Windows natively).
At least BS and Mel Roformers work on Mac ARM (M1-X) - maybe with GPU acceleration too (the code has some MPS references at least - otherwise check this too, for Mel read later). No DirectML support for now (unless someone found a way along the time).
(if you have a hard time setting your local Python environment with the above, you could try out portable installation of fork, but I cannot guarantee the compatibility with all the latest models - the 1.7.0 code derives from April 2025)
*. For errors while installing py file for e.g. HyperACE model in Sucial’s WebUI:
“from models.bs_roformer.attend import Attend
ModuleNotFoundError: No module named 'models'"
>“SUC-DriverOld/MSST-WebUI uses the name "modules" and ZFTurbo/Music-Source-Separation-Training use the name "models". And Unwa's bs_roformer.py that you replace with, also use "models".” - fjordfish
“In order to make it work in Sucial MSST Web UI you have to edit line [e.g.] #8 in the bsroformer.py file that is included with [e.g.] SiameseRoformer model and change the word "models" to "modules". ” - rage313_
pymms
“This [MSST-WebUI] project will soon stop being maintained. We recommend using pymss-desktop [now called [pymss-studio], which supports more comprehensive models, provides 50-100x faster inference than MSST-WebUI, and has a better-looking GUI.” or pymss (CML/webUI)
It’s a new project by Baicai and Sucial and contributors.
The Studio variant has installers pre-configured for CUDA, Mac (MLX) and CPU (and allegedly also Linux).
At the moment it’s undergoing some issues with HyperACE models, and doesn't support PolarFormer for now.
If you have an AMD GPU older than the RX 7600, acceleration won't work out of the box, and there's no DirectML support like in UVR for all GPUs supporting DX12 (although there’s universal pymss-mnn using Vulkan).
pymss + WebUI (specifically lighter pymss-core was tested) can also be managed to work with ROCm on AMD GPUs (full CuƐ guide here).
Tested with below command on RX 6800 / 6800 XT / 6900 XT / 6950 XT (gfx1030) on Windows and the latest Adrenalin driver and Python 3.12:
pip install torch torchaudio --index-url https://rocm.nightlies.amd.com/v2-staging/gfx103X-dgpu/
(or check here if the link above becomes offline; or visit here to choose your GFX other GPUs than 103X (GFX900 is the oldest listed - Vega), and paste the link in the above instead (untested); GFX legend; in case of more problems, maybe instructions from MSST and RX 7600 later below will be useful too).
Be aware that configs for models trained with MSST which are not already in pymms (iirc non-core package with model downloading) use num_overlap instead of the newer overlap_size in pymms. Using the first makes pymss fall back to 50% overlap (equivalent of 2 in UVR) which is several times slower than the latter. Models available in pymms are already configured for the new overlap. While adding a custom model, Claude suggested setting overlap_size to ~5 % of chunk_size (e.g. overlap_size: 24000 for chunk_size: 480000). TTA is also available.
BS-Roformer-SW on a 6:20 minutes track took 1:24 minutes on RX 6800 XT.
36 seconds on the same song, with becruily's vocal model.
You can also use ROCm branch in non-Studio packages with compiled source on Linux or using WSL on Windows instead (but I can't tell which one of the three will be the fastest, but differences shouldn't be big).
PolarFormer is currently unsupported.
There's also a separate pymsst package dedicated for training, and pymss-ara - VST3 plugin for separation inside your DAW in a separate process (currently Windows and CUDA supported).
(fixed in 0.0.12) It happened with certain models in pymss studio, that custom models were not detected in the software after importing the model file. You’ll need to modify the worker_models.py file on your own to fix it.
Also, for e.g. Deux on Pymms (at least on Mac) consider setting 50% overlap instead of the default 5%, otherwise you might get worse results than with default settings on MSST - SeniorPositive.
There's also pymss-mnn, which uses Vulkan backend, which can be useful for GPUs like RX 400/500/GFX803 without full ROCm support with PyTorch on Windows (at least without having to use slower ZLUDA with CUDA PyTorch with modded ROCm 5 libs and linked HIP 5.6). It's also faster than DirectML in UVR.
Alternatively you can also check:
https://github.com/chenmozhijin/BSRoformer.cpp (CML, ready to download, alternative to ROCm - Vulkan backend, faster than DirectML, requires WAV as input and converting model as input - ready Deux is shared. For “ggml_vulkan: Compute pipeline creation failed for cpy_f32_f16” error, don’t use F32 full/original precision of the model)
Or https://github.com/pymss-project/pymss-mnn
(uses MNN Vulkan, can be a bit slower, but still comparable; and optionally also CUDA).
General MSST troubleshooting
1. If you deal with dequantization error while occurring on e.g. crowd model on 1 hour mp3 file, use this repo instead:
(dead) https://github.com/jarredou/Music-Source-Separation-Training/tree/colab-inference
“It’s the one used in Colabs” - jarredou. Sometimes MSST updates might break things, while here a certain older checked commit is used.
(probably fixed here too) https://colab.research.google.com/drive/1IC6Q1hLF55_tK6mhky0SWYKGVF9T5WsY?usp=drive_link
2. “For some reason when I use unwa models it just like gives back a really quiet resampled version of whatever I put in.”
A: “Check that you are using an up-to-date version of the repo, IIRC, an edit made some months ago to Roformers code was creating weird issues similar to this for some people and was removed later”
Q: “Works now”
Hint: Requirements just for inference might be faster to install, like presented in the Installation cell in this Colab.
3. For state_dict error using existing MSST installation, update MSST to the last repo version with:
!rm -rf /content/Music-Source-Separation-Training
!git clone https://github.com/ZFTurbo/Music-Source-Separation-Training
“and you must reinstall the main branch's requirement.txt. (before it, edit requirements.txt to remove wxpython)” - Essid
wxpython is for GUI.
3.1. For “No module named wxpython”
and then
“No module named requests”
(despite it was installed)
At least on 3.14, “it was actually calling the wrong Python”.
It might be that "your pip isn't pointing to the same Python installation. Instead run pip from that Python path from cmd:
"C:\users\me\appdata\local\programs\python\python38\python.exe -m pip install wxpython"
“So unless everytime i open cmd up in MSST directory and run python gui-wx.py it SOMEHOW uses a different python version that i don't even have, it just won't work
i've tried two commands python gui-wx.py (this one give the package-name not found error) and gui-wx.py (this one just opens cmd for half a millisecond and closes instantly)
the first command is definitely more useful as it tells me specifically which package is causing issues” - isling
4. Alternatively instead of updating MSST for “unexpected keyword argument 'use_pope'” error for Polarformer BS model, use this bs_roformer.py file and execute
pip install pope-pytorch
- Officially supported AMD consumer GPUs for ROCm on Linux are:
RX 7900 XTX, RX 7900 XT, RX 7900 GRE and AMD Radeon VII on Ubuntu 24.04 LTS using Pytorch 2.6 for ROCm 6.3.3, but also RX 9070, RX 9070 XT and RX 6700 XT should be manageable to work, and probably 5700 XT with older ROCm version and iirc RX 400/500 with ROCm 5.7 (patched 6 and 7 by the community)
- For RX 7900 XTX “No special editing of the code was necessary. All we had to do was install a ROCm-compatible version of the OS, install the AMD driver, create a venv, and install ROCm-compatible PyTorch, Torchaudio, and other dependencies on it.” - unwa
- ROCm 7 officially working with Instinct MI350 CDNA 4 was released, providing 3-7x performance gains over 6.0 (more). You can try your lack with it on other GPUs by e.g:
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm7.0
- Before those nightly builds working up to Vega, there was also specific ROCm 6.4.4 released allowing using PyTorch natively on Linux and Windows on RX 7000 and 9000 was released (more), but one of our users had building errors with MSST (fix), and also separate instruction was written for MSST-WebUI (but RX 6000 support for Windows was added in nightly PyTorch builds). Instead, you could also consider using WSL on Windows (it’s Ubuntu with direct GPU access on Windows with near zero performance overlay, and even GUI support in newer WSL/Windows version, although it might use a bit more VRAM than natively), then follow e.g. the below on WSL:
- “I managed to make MSST-WebUI work [on Linux] with:
Torch 2.10.0.dev20251110+rocm7.0
on RX 7600
(...) it seems like ROCm 7.0 is about a second faster [than 6.x]”
(probably by adding just pip install before it)
turns out that if you do:
export TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTAL=1
it uses waay less VRAM and processes even faster
inst_V1e_plus batch_size=2 overlap=3 chunk_size= 485100, 51.78s/it [3:50 of audio in 61 seconds]
For ROCm 6.x (a tad slower, might work on more GPUs):
torch 2.9.0+rocm6.3 torchvision0.24.0+rocm6.3 [--index-url https://download.pytorch.org/whl/rocm6.3]
Thanks, fr4z49.
Official Linux support for PyTorch/ROCm on RX 400/500 (a.k.a. Polaris/GCN 4/GFX803) GPUs was dropped after ROCm 5, but you can follow this Ubuntu guide for unofficial ROCm 6 support or this newer one for ROCm 6 and 7 (it might not work with WSL2 as Windows drivers probably lack GPU-passthrough).
Or for ROCm 5, read this Ubuntu guide.
Also, there seems to be some Arch Linux community package to install Pytorch still compatible for these GPUs (click).
Or optionally also might be potentially supported with some other specific versions of ROC, e.g. 5.7.2 and also described above:
export ROC_ENABLE_PRE_VEGA=1 (deprecated in ROCm 6; might help for lacking dependencies or wheel building issues). Or also check out this:
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/10435#issuecomment-1555399844, or alternatively follow below instructions:
https://pytorch.org/get-started/locally/ and then execute:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.4.2
4. If you have SageAttention error, you need an arch corresponding to e.g.: RTX 5000, 4000, 3000, H100, H200 (Ada Lovelace, Hopper, Ampere, Blackwell) which will probably work out of the box. Otherwise, it will probably fall back to CPU. To fix it, make sure you have installed CUDA/Torch/Torchvision/Torchaudio compatible with your GPU
(probably it will work down to Maxwell GPUs (not sure about Kepler):
“For the [GTX] 1660 the minimum [CUDA] version is 10” (on GTX 1060, Torch 2.5.1+cu121 can be used), but pip doesn’t find such a package of Torch (and usually it fixes issues when CPU is only used on those GPUs).
Check out index-url method described later below:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
or
pip install torch==2.3.0+cu118 torchvision torchaudio —-extra-index-url https://download.pytorch.org/whl/cu118
or
pip install torch==2.3.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
and
pip install torchaudio==2.3.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
Replacing cu118 with newer cu121 seems to give a proper working URL too.
Maybe replacing 2.3.0 with 2.3.1 will work too. cu126 is the latest supported for GTX 1080, while cu128 isn’t (but supports RTX 5000 series), although it works with torch 2.7.0 which can cause unpickling errors with some models:
"pip install torch==2.7.0 torchvision --upgrade --index-url https://download.pytorch.org/whl/cu126".
JFYI, the official PyTorch page: https://pytorch.org/get-started/previous-versions/
lacks links for CUDA 10 compatible versions for older GPUs other than v1.12.1 (which is pretty old, and might be a bit slower if even compatible at all), so the only way to install newer versions for CUDA 10 is --extra-index-url trick, as executing normally “pip install torch==2.3.0+cu118” will end up with the version not found error.
Alternatively, you might also try out installing it from wheels from here by the following command:
“pip install SomePackage-1.0-py2.py3-none-any.whl” - providing a full path with the file name should do the trick. Just for the location with spaces, you also need " ". On GTX 1660 and Turing GPUs, you might seek for e.g. cu121/torch-2.3.1" and those various CP wheels (there are no newer versions). But the -extra-index-url trick above should be enough.
4.1. After performing all of these, you might still have SageAttention not found error on GPUs up to Turing arch. Then perform the following:
“Had to replace cufft64_10.dll from C:\Users\user\AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\lib
by the one from C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin”
It is even compatible with the newest Torch 2.8.0 (if you followed the instruction to fix the dict issue above) if you grab that apparently “ fixed version of cufft64_10.dll from CUDA v10.0” - dca
5. If you write Python in CMD, and it wasn't found, start with method 2 described here:
Or make sure you've checked the option to add path environmental variable during Python installation.
Also, you can try out “disabling the python executable in app execution aliases.” - neoculture
6. For state_dict = torch_load/unpickling_error
“add the following line above torch.load (at utils/model_utils.py line 479):
with torch.serialization.safe_globals([torch._C._nn.gelu]):
[So, the code like the following:]
else:
with torch.serialization.safe_globals([torch._C._nn.gelu]):
state_dict = torch.load(args.start_check_point, map_location=device, weights_only=True)
model.load_state_dict(state_dict, strict=False)
“(~unwa)
*. For “np.complex” error with incompatible Numpy (Python 12) execute:
pip install numpy==1.26.4
pip install -U librosa audiomentations
7. For: “failed to build diffq pesq” click
8. "ERROR: No matching distribution found for pedalboard~=0.8.1" when MSST requirements
fix: “downgrade python” - Stray Kids Filters
More notes:
- 4GB VRAM GPUs will give out of memory errors on for Roformers. You can use CPU instead, or potentially decreasing chunk_size as described here might help too.
- Leave the checkbox “extract instrumental” disabled for duality or potentially other models with more than one stem target (it will have worse quality than dedicated stem output)
CML guide by mesk (working on RTX 3070 Mobile):
“0 – You need Python:
https://www.python.org/downloads/
0a – I would also recommend installing Pytorch too from here: https://pytorch.org/get-started/locally/
(grab the command and enter it into the command prompt)
0b – But then you can just also double-click on guiwx.py on the repo, and it is much easier.
That's the harder method with the command prompt
1 – Go there: https://github.com/ZFTurbo/Music-Source-Separation-Training
and clone the repository (click on Code => Download as zip)
2 – Go to the repo folder, create 3 new folders: results, input and separation_results.
Place your tracks in the input folder. Place the checkpoint in results and leave the yaml at the root of the repo (where inference.py and requirements.txt are)
3 – Open command prompt, type in cd C://Users/[YOURUSERNAME]/Desktop/Music-Source-Separation-Training-main
(changes directory to the repo folder on your desktop)
4 – Type in: python install -r requirements.txt
5 – Let it install the requirements
6 – Type in: python inference.py --model_type mel_band_roformer --config_path [NAME OF YAML] --start_check_point results/[NAME OF CHECKPOINT] --input_folder input/ --store_dir separation_results/ --extract_instrumental
7 – Make sure to replace the stuff in brackets with the actual stuff you need”
If you have decent Nvidia GPU, and no GPU acceleration, maybe “Check these commands to install torch version that handle CUDA”:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
or
pip install torch==2.3.0+cu118 torchvision torchaudio —-extra-index-url https://download.pytorch.org/whl/cu118
or
pip install torch==2.3.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
or
pip install torchaudio==2.3.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
[various GPU archs will have different CUDA requirements for different Torch versions, refer to documentation]
FAQ
Q: “When running inference, I am getting tired of it creating a folder for each input file and putting individual stems inside that folder. Especially since most of the time I'm running single stem models and I only need the primary stem. I remember on a much older version, it wouldn't create folders, it would just copy the original filename and put the stem name at the end of it. So I was wondering what I could modify in newer versions to restore that behavior. I'm guessing that would be in inference.py, but don't exactly know where to look.” - Musicalman
A: “You can download the "old" version from my forked repo's "colab-inference" branch, with old behaviour for results and folders. It's the version used in my colab notebooks, it should be preselected with that link:
https://github.com/jarredou/Music-Source-Separation-Training/tree/colab-inference” (dead) - jarredou
- torch.load and load_state_dict, errors
A: “PyTorch 2.6 and later have improved security when loading checkpoints, which causes the problem. torch._C_.nn.gelu must be set to exception” or “add the following line above torch.load (at utils/model_utils.py line 479)
with torch.serialization.safe_globals([torch._C._nn.gelu]):
“don't forget to align the indentation since it's Python code.”- unwa
Also in the case of the unwa’s FNO model: “edit the model file
As I mentioned in the model card, you need to change the MaskEstimator”
Q: “I've been using a really old version of msst for a while and finally decided to update it today. I noticed that the gui-wx.py file was moved to the gui folder (it used to be in the root). So now when I try to launch the gui, I get file not found errors. Gui still works at least for screen reader users like myself, but these errors should definitely be fixed.
I'm wondering if I should be trying to launch the gui from the main msst folder, or if I should be launching it from the gui folder. Either way I get errors. I could fix them by modifying paths in gui-wx.py, just need to know which folder I should be starting from lol” - Musicalman
A: “You can use python gui/gui-wx.py and replace (130-131 strings) right now:
font_path = "gui/Poppins Regular 400.ttf"
bold_font_path = "gui/Poppins Bold 700.ttf"
I will fix it at next pull-request” Kisel