Today I discovered a very cool tool, which excited me so much, that I started a complete new section on my website (behold, the birth of the “cool tools” section on this blog).

Disclaimer: I am an aspiring drummer and have been playing/messing with drums (on and off) for more than 4 years now.

In the exciting world of playing or learning to play instruments, active listening is equally challenging to playing the instrument. For example, playing the drum section of a record usually requires listening to the variation of the beats at different sections of the record (chorus, verse, solo, bridge), figuring out the transition fills, counting the duration of the sections (usually in bars) etc… Don’t forget that all of this is done, while fending off the sound from other instruments and concentrating on the drum section of the song. Though learning to separate these things by ear is very useful, it can be very difficult, especially at the beginning. As it is for many of the world problems, technology has also tried to solve this problem. As such, there are many software tools that extract the sound of only one instrument (drums, guitar, bass, vocal etc…) from a song. But most of these tools (at least the once I tried) usually come short due to one or more of the following reasons: (i) they are not easy to use, (ii) they are not free, and (iii) they have a sub-optimal performance. Here is where Spleeter comes in.

On the face of it, Spleeter is another tool to separate the different tracks in a music. But it is different from other separation software as it uses machine learning/AI instead of a fixed (custom) algorithm to do the job. It comes in the form of a Python Library based on Tensorflow, with pretrained models for 2, 4 and 5 track separation. The model is trained with such kinds of dataset. The pre-trained model has two modes of operation: In the first mode, it only separates the vocal part from the accompanying music, meanwhile in the second mode it goes even deeper and splits the song into the drum, bass, piano, vocal and other sections. In this case, other refers to the mix of the guitar, saxophone, etc… sections of the song. I haven’t exactly checked, but I presume that, anyone who is interested in including the separation of the guitar, saxophone, etc… can do so by retraining the model.

What got me interested in writing this blog is actually the second mode of operation of Spleeter. Due to my not so developed listening skills, I needed the help of Spleeter to help learn the drumming sections of some songs such as this, this and even some Ethiopian songs such as this. The coolest thing about Spleeter was that once I had studied the drum section of a song by separating it from the other tracks, I was actually able to play the song without the drum section by combining the other non-drum sections (bass, piano and other sections) that were already split using Spleeter. This is what you call a double win.

How to use Spleeter

If you are able to do stuff in python and have experience with ML tools such as anaconda, tensorflow… and also want to install the tool on your machine, then go ahead and read this. If you have experience in python and ML tools but want to use the cloud-based version of the tool use this. Finally, if you are none of the above but want to try the tool, then follow these steps.

  1. First go to this Google-colab notebook
  2. upload your song (clicking the button 1 on the image) and wait until your song is uploaded
  3. change the name input song with the name of the uploaded song (shown in 2 on the image)
  4. click on Runtime (shown in 3 on the image) and click on Run all.

That’s it. When spleeter finishes, the outputs should be found in the separated_tracks/name_of_song folder. If you don’t see the separated_tracks folder, just click on the refresh button (the one next to the upload button).

Don’t forget to download the separated tracks into your computer by right clicking on the track and selecting the download button .

Happy practice 🙂