End-to-end Music Source Separation
jordipons.me
jordipons.me
"Currently the project requires Keras 2.1 and Theano 1.0.1, the large dilations present in the architecture are not supported by the current version of Tensorflow"
That's all I can glean from context, anyway.
I can't speak to the research presented in this link in context, but the first segment provides a good introduction to the problem domain: http://spandh.dcs.shef.ac.uk/chat2017/presentations/CHAT_201...
Is very interesting that you mention that! Actually, we used source separation to remix music to improve the musical experience of cochlear implant users!
Basically, music perception remains generally poor for cochlear implant users (due to the complexity of music signals). In order to simplify music for them, we remove the accompanying instruments to enhance vocals and beat (drums and bass), that is what they perceive the best.
This was a nice source separation application that helped many people! :)
It might even be a significant revenue source as there are plenty of audiophiles that would pay for being able to change the volume of the string section compared to the flute section, etc cetera. Or DJs making remixes.
That's exactly this, targeted for DJs, already available and widely used.
For example, many mix engineers - most, probably - use a buss compressor as "glue" to help blend the whole mix together. Take out something loud like lead vocals or drums, and the buss compressor behavior changes, changing the rest of the mix. A lot of mixers also use sidechain compression to duck parts depending on other parts (like the kick drum taking a few db out of the bass).
And besides the mix, it needs mastered (which costs money), and packaged separately from the rest of the album, making it a different product, to be sold separately.
On the other hand, some fields actually do instrumental tracks with vocals stripped out as regular products - karaoke and hip-hop tracks are often made from the original mixes.
Personally, as a mix engineer, I don't want some home genius second-guessing my mixing decisions.
But the home user could start from your default settings?
Here's an example. I listen critically to a lot of mixes, in order to learn from them, so I hear flaws everywhere. One badly flawed classic song, to my ear, is Al Stewart's "Year of the Cat". It's extremely sibilant on the vocals. Listen to it on bright-sounding headphones, and every S sound in the vocal is shrill and hissy-sounding. Adjusting the level won't fix that. I want to run a de-esser on the vocal. And it's not a knock on the mix in general, which is mostly gorgeous, lush, classic 1970s Abbey Road sound. 98% of it is magic beyond my meager skills. But oh god the sibilance.
edit: I should add here that individual tracks, solo'd outside the context of a mix, can sound really weird and wrong - they get manipulated to blend into the whole, not to sound great on their own. For example, I high-pass most guitars at 250-300hz, even though the low E string is way down at 82hz. The reason is to get them out of the bass space, freeing it for the bass guitar/synths and kick drum. So if you solo the guitar, it can sound thin and wrong. But in the mix, you'll never notice the difference - but you'll hear clearer bass.
Note that in our second part of the demo, besides separating vocals, we also separate drums and bass. See: http://jordipons.me/apps/end-to-end-music-source-separation/
For your example, what would be done when vocals sync up with rhythm instruments (straight 1/8's or 1/4 notes played on guitar, sung as well). Happens all the time, often only a bar at a time, but sometimes longer. e.g. The Strokes - Last Nite (https://youtu.be/TOypSnKFHrE?t=62) @1:03 "they don't under-stand" (repeated) could trick the detection into thinking it's some sort of rhythm instrument.
My point is, all music is extremely rhythmic and requires everything else in the band to be rhythmic as well.
The reason why we don't use audio stems as training data is because during the preparation of the MUSDB dataset, conversion to WAV can sometimes halt because of an ffmpeg process freezing that is used within the musdb python package to identify the datasets mp4 audio streams. This seems to be an error ocurring upon the subprocess.Popen() used deep within the stempeg library. Due to its random nature, it is not currently known how to fix this.
I'd suggest the authors try something like an autoencoder in the waveform domain. That would be a more close analog to the ICA methods.
Here's another intriguing (very different) recent paper on time-domain source separation: https://arxiv.org/abs/1810.12679
You both are right! We basically mention ICA/sparse coding as prior work on waveform front-ends for source separation.
Our method is supervised, and we did not explore the unsupervised learning approach. However, some people are doing that! Check S. Venkataramani and P. Smaragdis work! https://scholar.google.es/citations?user=hCSSNZwAAAAJ&hl=es&...
Although we did our best via comparing against DeepConvSep and Wave-U-Net, I agree that it would be useful to properly benchmark all that!
Note: I'm the author of towave-j, a tool for game music splitting.