Map of Open-Source Source Separation Projects

The open source world is filled with lots of projects for source separation! Here we want to compile a list of some of these projects to provide an overview of the landscape. This is not an exhaustive list, but it should serve as a good starting point.

Some of the terms and evaluation results (e.g. “SDR”) discussed on this page may be unfamiliar to you at the moment, but by the end of the tutorial you we hope that you will understand everything on this page. We encourage you to come back to this page at the end of the tutorial.

All projects outlined below are primarily written in the python programming language, unless otherwise noted.

Useful Audio Projects

These projects are useful for any type of python audio project you might want to do.

librosa

librosa is the de-facto standard library for all things music information retrieval. Containing implementations of many, many common and useful algorithms in this space, it is hard to imaging the field without it. Ignore it at your own peril!

Github Link

SoundFile

SoundFile is one of many ways to load audio files in python, but we find that it can handle almost any type of audio file without any problems. Use ffmpeg (below) to give SoundFile super powers. librosa, Asteroid, nussl, and many more open source projects use it under the hood.

Github Link

ffmpeg

ffmpeg is a command line application written in C that can read and manipulate many different types of media files. Use this with librosa or SoundFile to read many different audio formats (e.g. .mp3, .ogg, etc) without any hassle.

Project Link

Scaper

Scaper was originally intended for soundscape creation with the intention of creating training data for sound event detection. But some researchers realized the augmentation strategies implemented in Scaper are useful for source separation! In this tutorial, we will discuss Scaper in detail. Stay tuned!

Github Link

Source Separation Projects

These projects are more tailored to doing source separation, as opposed to the general projects we discussed above.

Source Separation Infrastructure

Before we talk about projects that contain source separation approaches, let’s talk about some projects that help with source separation.

mir_eval

mir_eval is a python library that contains reference implementations for many MIR tasks, source separation included. While this is a good starting point, we do not recommend using the source separation metrics that are implemented here as they are obsolete at this point.

Github Link

mus_eval

mus_eval has a more updated version of the source separation metrics, which fixes some of the issues that mir_eval has. Some recent developments like (SI-SDR) are missing from this library though.

Github Link

Architecture-Specific Projects

It has become increasingly common for researchers to release code accompanying their research papers. In the era of deep learning, the trained models are also sometimes released. Here is a non-exhaustive list of some recent open source projects. We have prioritized open source projects with code and downloadable trained models by the original authors of the research papers described. Papers With Code also has a nice section on many of these methods.

We will discuss some of these architectures in more detail in later sections, but here we will provide some highlights and links to their Github repositories, in alphabetical order.

ConvTasnet

See our overview here: Demucs
This implementation is from the Demucs github page.
Github Link

Weights Avail?

License

Training set

Framework

Vocal SDR

Yes

MIT

MUSDB

pytorch

5.7

Yes

MIT

MUSDB + 150 songs

pytorch

6.3

Demucs

See our overview here: Tasnet & Friends
Github Link

Weights Avail?

License

Training set

Framework

Vocal SDR

Yes

MIT

MUSDB

pytorch

5.6

Yes

MIT

MUSDB + 150 songs

pytorch

6.3

Open-Unmix

See our overview here: Open-Unmix
Github Link (pytorch)
Github Link (nnabla)

Weights Avail?

License

Training set

Framework

Vocal SDR

Yes

MIT

MUSDB

pytorch

5.3

Spleeter

Spleeter is based on a U-Net architecture. See more here: U-Net & Friends
Github Link

Weights Avail?

License

Training set

Framework

Vocal SDR

Yes

MIT

MUSDB + others

tensorflow v1

5.9

Wave-U-Net

See our overview here: Wave-U-Net
Github Link (pytorch)
Github Link (tesnorflow v1)

Weights Avail?

License

Training set

Framework

Vocal SDR

Yes

MIT

MUSDB

pytorch

3.2

Yes

MIT

MUSDB

tensorflow v1

3.2

Multi-Architecture Projects

A few existing projects aim to provide an entrypoint for multiple source separation approaches. Here we will outline some of them.

Asteroid

Asteroid is a library that enables fast prototyping of deep learning-based source separation approaches. It contains implementations of 6 recent deep learning-based source separation approaches and support for 6 speech datasets. Support for more approaches and datasets are coming in the near future, including support for MUSDB18.

Asteroid contains support for training and evaluating models, as well as pretrained models that are ready to download through Zenodo. So far Asteroid only has available pre-trained models for speech separation, but they will soon have code available to train music models. All of the code is based on the Pytorch deep learning framework.

Github Link

nussl

nussl is an object-oriented library for source separation that contains many classic and deep learning-based algorithms, hooks for datasets, and evaluation metrics all in the box. We will be discussing nussl throughout this tutorial and exploring source separation. So we will be learning more about it very soon.

Github Link

What You’ll Need for this Tutorial

In this tutorial, you will only need nussl and Scaper. These two projects have all of the components needed to use off-the-shelf source separation or develop new research.

As mentioned, we’ve included requirements.txt and environment.yml files to get set up with all of the dependencies for these projects, should you find them useful outside of this tutorial. (Recall that the coding portion of the tutorial is all through Colab or Mybinder.org).

Why We’re Teaching nussl and Scaper in this Tutorial

There are so many wonderful open source projects out there, and we would love to do a deep dive into all of them. But there’s only so much time, so we choose nussl and Scaper for a few reasons:

  • The combination of nussl+Scaper provides a solid foundation for all source separation projects. These projects provide solutions for networks, data, evaluation, and interaction all in one.

  • The lessons we will explore in these two projects extend beyond them. There are many common themes and design patterns in this area of research, and as we progress you will start to see the themes again and again. We believe that nussl+Scaper is a good way to explore these themes so that you can understand the structure of modern source separation systems.

  • We are the primary developers for these projects. We really understand these tools because, well, we built them! That means we are well equipped to answer any questions that come up. (And we can also be held accountable for mistakes you find!)

Let’s Start the Tutorial!

In the next section we’ll start digging the conceptual foundations of source separation.