Iterative Ensemble Colab by IntroC
(for instrumentals)
https://colab.research.google.com/github/Qupci/Iterative-Ensemble/blob/main/Iterative_Ensemble.ipynb
By default it uses models from the end of 2025 (V1e, Resurrection, Revive3e, SCNet), but it's a subject for further development. It performs many iterations of separations with slowing down and mid-side processing for the ensemble. As the final step called "finisher" uses MVSEP's BS-Roformer 2025.07 model - you need to provide your MVSEP API key from here when you log in to the site to make it work (it can be a free account).
With 4 minute file, and 1 or 0 current MVSEP users in the queue (while usually 14 files normally being processed at the same time, e.g. 3:30 AM EU time), the whole Colab execution can take around 20 minutes.
First, you must create “output” and “input” folders on your GDrive manually.
In the current version, the output will be saved to "[filename]_mvsep_only_ensemble_side.wav" in "GDrive\output\mvsep_only" folder, and end up with "Finisher variants processing complete”. Progress cannot be tracked in real-time. MVSEP model processing starting with [DEBUG] is started currently near the end.
You should also abbreviate your input file name to a short title at times (if it has a lot of hyphens at least).
You could try unchecking "amplify_masked_details" for less residues, although it makes e.g. snares more muddy, and not so punchy.
But maybe even ensembling both would be beneficial, it also has its own flavor.
And surprisingly, it left one quiet vocal residue the setting unchecked by default didn't have, despite drums being a bit muddier, but not even in all places, so cutting it and piecing together might work too.
Also, the option seems like to make all scratches in hip-hop and their vocal chops much quieter, so in such cases consider separating with both settings, and ensure the old result file won't be replaced (e.g. rename it at best).
“You should remove the checkpoints folder each time you want to process something new or if you want to resume (unless you already got a final iteration; it's not broken there)”
You can just open the file manager in the Colab, and drag and drop the checkpoints folder to any other folder (you cannot delete it from the manager).
It takes ~3.7GB for intermediate files called "checkpoints" on GDrive if you want to save them for testing purposes (the Colab makes many iterations of the same file for the same model).
It can also happen that the next task will cause an out of memory error, although it won't be stopped. Then stop it manually and wait a minute or two and retry.
If you're on the phone, you can't switch tabs or let the screen go to sleep during the process (change it in phone settings), otherwise the environment will be shut down.
Colab quota for previously unused accounts is 5 hours, so you should be fine with leaving the process overnight with your phone on the charger. FYI, the Colab seems to consume more than 6GB VRAM (with possible spikes to 10+, can't remember). More.
“I guess there shouldn't be any trouble in making Iterative Ensemble local. Clone my fork of jarredou colab fork of Music Source Separation Training
git clone -b colab-inference-iterative-method https://github.com/Qupci/Music-Source-Separation-Training
where all the necessary files of Iterative Ensemble reside. In the
Cell-Iterative Method.py
you need to specify your own path for the temporary files folder `ckpt_root` and the input/output folders (i.e., `input_folder` and `output_folder`), and you can comment out the first line that points to the fork's directory and just run
python Cell Iterative-Method.py
and I believe it should work (...)
The explanation of how Iterative Ensemble works is described in the very bottom cell of the colab. But basically, yeah, you combine all the noise that each fullness model produces with Max Spec, then get the difference of it with the source mixture (that will be just vocals), you then reduce that difference in the mixture, and run all those fullness models again. For example, combining v1e and v1e+ will not make much difference, since their Max Spec is pretty much equal to the v1e model noise. While combining v1e and Resurrect does make a lot of difference in the Max Spec, where Resurrect makes the lower frequencies sound fuller in comparison with the v1e better higher frequencies. With each iteration, this ensemble and difference reduction basically adds more depth, since those fullness models try to interpret the masked instrumental based on the context, i.e., using surrounding frequencies, where this getting difference and reducing it in the mixture process specifically keeps all this noise from the previous iterations in order to aid that context interpretation. And the final good SDR model is essential to get rid of the remaining vocal-shaped noise and faint remaining vocals (since with all of this vocal reduction, they're getting more difficult for average SDR models to pick up).
Those additional "finisher" variants with BS Resurrect and other fullness models were intended for 3 iterations only, since otherwise it will cause noticeable bleeding. But yeah, they're good for keeping certain parts sounding more full... but generally, their results are not very stable (and noisy). I'll redesign this part to somehow keep the best of both worlds automatically... I believe I had some ideas written for this part…
But yeah, it's better to keep the default options as is. You can search for "bleeding" keyword in the colab to find some documentation and get an idea on how to control this issue with the available options.
” - IntroC