Hi all,
I've spent some time working on music demixing or music source separation algorithms, which take in a mixed song and output estimates of isolated components (e.g. vocals, drums, bass, other).
I took a popular PyTorch model with good performance (Open-Unmix, UMX-L weights), reimplemented the inference steps in C++, and compiled it to WebAssembly for a free client-side music demixer.
I have tried many sources and method over the years and settled on spleeter [0]. Works well even for 10+ minute songs, varying styles from flamenco to heavy metal.
[0] https://github.com/deezer/spleeter