Model and audio compatibility

September 9, 2026 ยท View on GitHub

Python

MSST supports CPython 3.10, 3.11, 3.12, and 3.13. The package metadata enforces Python >=3.10,<3.14; CI exercises the oldest and newest supported versions. Compatibility also depends on whether the selected model extra publishes wheels for the target Python, operating system, and GPU stack.

PyTorch and CUDA

MSST supports torch>=2.0.1,<2.12. Training and model extras that use TorchAudio apply the same version range; TorchAudio's own metadata selects the matching Torch release.

CUDA binaries are not bundled by MSST. On a GPU system, install the wheel from the appropriate PyTorch package index before installing MSST so pip keeps the hardware-compatible build. Verify that the selected wheel includes kernels for the target GPU architecture; the newest CUDA wheel does not necessarily support every older architecture.

Triton, Torch-TensorRT, and TorchAO are not MSST runtime dependencies.

Model extras

Install only the dependencies needed by the selected model_type:

pip install "msst[mel_band_roformer]"
pip install "msst[train,mel_band_roformer]"

Python package extras normalize hyphens and underscores, so both mel_band_roformer and mel-band-roformer are accepted by pip.

Install dependencies for all generally available model families with:

pip install "msst[all-models]"

all-models excludes dependencies restricted to a narrow platform. These stay in the extra for their architecture, which prevents one unavailable model from blocking installation of the others. In particular, BSMamba2 requires msst[bs_mamba2] on a supported system. Pip treats one installation command as a single transaction and cannot otherwise skip an arbitrary dependency that fails to install.

model_typepip extraNotes
apolloapollo
banditbanditFull BandIt runtime stack.
bandit_v2bandit_v2
bs_conformerbs_conformer
bs_mamba2bs_mamba2mamba-ssm is supported here only on Linux x86_64 with a compatible CUDA build.
bs_roformerbs_roformerIncludes optional PoPE support.
bs_roformer_experimentalbs_roformer_experimental
conformerconformer
experimental_mdx23c_sthtnoneBase dependencies are sufficient.
htdemucshtdemucs
mdx23cnoneBase dependencies are sufficient.
mel_band_conformermel_band_conformer
mel_band_roformermel_band_roformerIncludes optional PoPE support.
mel_band_roformer_experimentalmel_band_roformer_experimental
moises_lightmoises_light
scnetnoneBase dependencies are sufficient.
scnet_maskednoneBase dependencies are sufficient.
scnet_transcnet_tran
scnet_unofficialscnet_unofficialDoes not require mamba-ssm.
segm_modelssegm_modelsPretrained encoder weights are used only for a new training run, not inference or checkpoint resume.
swin_upernetswin_upernetInference construction is offline and does not download Hugging Face weights.
torchsegtorchsegPretrained encoder weights are used only for a new training run.

OptionalDependencyError reports the matching install command. BSMamba2 gives a platform-specific message on unsupported systems instead of suggesting an installation that cannot succeed.

Input audio

MSST first filters folder entries by extension, then asks librosa/SoundFile to decode and resample them. The following formats are decoded natively by the libsndfile build bundled with current SoundFile wheels and were covered by the package validation matrix:

FamilyExtensions
Wave.wav, .wave, .rf64, .w64
Lossless.flac, .aif, .aifc, .aiff
Ogg.ogg, .oga, .opus
MPEG audio.mp3
Other libsndfile containers.au, .snd, .caf, .voc

Actual codec availability still depends on the installed SoundFile/libsndfile build. A recognized but unreadable file raises AudioFileError containing the path and underlying decoder error.

These extensions are accepted conditionally: .3gp, .aac, .ac3, .amr, .m4a, .m4b, .mka, .mp4, .webm, and .wma. They need a compatible system decoder, normally FFmpeg. They are not portable guarantees: librosa's current audioread fallback is deprecated and is scheduled for removal in librosa 1.0. Prefer WAV or FLAC for datasets, evaluation, and long-lived pipelines. See the official librosa I/O formats guide and librosa.load documentation.

Lossy codecs can add encoder delay or padding. In validation, M4A/AAC decoded to a slightly different sample count, so it must not be used where sample-exact alignment matters.

Unknown extensions are ignored during folder processing and rejected by Separator.separate_file. A corrupt file with a recognized extension raises a clear per-file error. With skip_errors=True, folder processing logs it and continues.

Output audio

The supported output containers are intentionally narrow:

OutputDefault subtypeAllowed public subtypes
WAVFLOATFLOAT, PCM_24, PCM_16
FLACPCM_24PCM_24, PCM_16

flac_file=True, pcm_type="FLOAT" is rejected before model execution; it is never silently changed to another subtype.

The default output template is {relative_path}/{instr}. It preserves input subfolders, prevents albums containing identically named tracks from overwriting one another, and rejects any remaining collision. When a directory contains the same basename in multiple codecs, add {extension} to the template, for example {relative_path}_{extension}/{instr}.

Device behavior

  • device_ids accepts one integer, a sequence of integers, or the legacy string form such as "0,1".
  • Empty, negative, duplicate, non-integer, and out-of-range CUDA IDs are rejected with the requested IDs and detected GPU count in the message.
  • force_cpu=True takes precedence over CUDA availability.
  • If CUDA is not available and CPU was not explicitly requested, inference falls back to CPU. Model failures are not silently converted to CPU retries.