BandIt: Cinematic Audio Source Separation

July 29, 2025 ยท View on GitHub

Please consider giving back to the community if you have benefited from this work.

If you've benefited commercially from this work, which we've poured significant effort into and released under permissive licenses, we hope you've found it valuable! While these licenses give you lots of freedom, we believe in nurturing a vibrant ecosystem where innovation can continue to flourish.

So, as a gesture of appreciation and responsibility, we strongly urge commercial entities that have gained from this software to consider making voluntary contributions to music-related non-profit organizations of your choice. Your contribution directly helps support the foundational work that empowers your commercial success and ensures open-source innovation keeps moving forward.

Some suggestions for the beneficiaries are provided here. Please do not hesitate to contribute to the list by opening pull requests there.


BandIt: Cinematic Audio Source Separation

Code for "A Generalized Bandsplit Neural Network for Cinematic Audio Source Separation" by Karn N. Watcharasupat, Chih-Wei Wu, Yiwei Ding, Iroro Orife, Aaron J. Hipple, Phillip A. Williams, Scott Kramer, Alexander Lerch, William Wolcott. [open-access paper]

Cinematic audio source separation is a relatively new subtask of audio source separation, with the aim of extracting the dialogue, music, and effects stems from their mixture. In this work, we developed a model generalizing the Bandsplit RNN for any complete or overcomplete partitions of the frequency axis. Psychoacoustically motivated frequency scales were used to inform the band definitions which are now defined with redundancy for more reliable feature extraction. A loss function motivated by the signal-to-noise ratio and the sparsity-promoting property of the 1-norm was proposed. We additionally exploit the information-sharing property of a common-encoder setup to reduce computational complexity during both training and inference, improve separation performance for hard-to-generalize classes of sounds, and allow flexibility during inference time with detachable decoders. Our best model sets the state of the art on the Divide and Remaster dataset with performance above the ideal ratio mask for the dialogue stem.

For the query-based music source separation model, Banquet, go here.

For Demo

Go here for demo of selected models using the first 10 files from DnR test set. Go here for exhaustive inference on the entire DnR test set for selected models.

For Replication

  • Install required dependencies from environment.yaml.
  • Obtain DnR dataset from here and MUSDB18-HQ from here.
  • Run each dataset's respective proprocess.py.
  • python train.py expt/path-to-the-desired-experiment.yaml.
  • python test.py expt/path-to-the-desired-experiment.yaml --ckpt_path=path/to/checkpoint-from-training.ckpt.

For Inference

  • Get the checkpoints from Zenodo.
  • Get the corresponding yaml config file from expt.
  • Put the checkpoint and the yaml config file into the same subfolder. Rename the config file hparams.yaml.
  • If you run into CUDA OOM, try reducing the batch size in the inference config. Another way without changing the config itself is by setting the system.inference parameter to "file:$PROJECT_ROOT/configs/inference/default16.yaml", or default8.yaml.
  • If you run into a CPU OOM, this is probably due to the resampler. You might want to get your audio file to 44.1 kHz beforehand, especially if it's big. A fix is coming (soon??).
  • Please do not hesitate to report other OOM cases.
python inference.py inference \
  --ckpt_path=path/to/checkpoint.ckpt \
  --file_path=path/to/file.wav \
  --model_name=model_id

or

python inference.py inference_multiple \
  --ckpt_path=path/to/checkpoint.ckpt \
  --file_glob=path/to/glob/*.wav \
  --model_name=model_id

Complexity Benchmark

  • Intel Core i9-11900K CPU + NVIDIA GeForce RTX 3090 GPU.
  • Note that this is benchmarked on one 6-second chunk. The memory usage in practice will scale according to your inference batch size plus some OLA overhead.
ModelBandGFlopsParams (M)Peak Memory (MB)Batch per second (GPU)Batch per second (CPU)GPU speedup
BSRNN-GRU8 (per stem)Vocals V7238.215.8416.212.350.6120.2
BSRNN-LSTM12 (per stem)Vocals V7462.225.8505.47.990.613.4
BandItBark 48290.664.564310.220.3926.1
BandItERB 48274.232.6519.510.310.4125
BandItMel 48274.332.8519.310.150.3826.6
BandItMusic 48274.733.5524.210.220.4323.5
BandItTriBark 48274.232.7519.910.30.425.5
BandItBark 64387.682.6828.58.640.421.9
BandItERB 64363.536649.18.680.4220.7
BandItMel 64363.636.1648.98.710.3227.2
BandItMusic 64364.1376538.690.3127.7
BandItTriBark 64363.536648.78.680.4220.6
BandItVocals V7243.225.745411.340.618.8
Hybrid Demucs8583.6552.517.041.115.5
Open-Unmix5.722.1187.852.520.772.5

Citation

@article{Watcharasupat2023Bandit
  author={Watcharasupat, Karn N. and Wu, Chih-Wei and Ding, Yiwei and Orife, Iroro and Hipple, Aaron J. and Williams, Phillip A. and Kramer, Scott and Lerch, Alexander and Wolcott, William},
  journal={IEEE Open Journal of Signal Processing}, 
  title={A Generalized Bandsplit Neural Network for Cinematic Audio Source Separation}, 
  year={2024},
  volume={5},
  number={},
  pages={73-81},
  doi={10.1109/OJSP.2023.3339428}}