Singing Voice Separation via Recurrent Inference and Skip-Filtering Connections - PyTorch Implementation. Demo:
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Singing Voice Separation via Recurrent Inference and Skip-Filtering connections

Support material and source code for the method described in : S.I. Mimilakis, K. Drossos, J.F. Santos, G. Schuller, T. Virtanen, Y. Bengio, "Monaural Singing Voice Separation with Skip-Filtering Connections and Recurrent Inference of Time-Frequency Mask", in arXiv:1711.01437 [cs.SD], Nov. 2017. This work has been accepted for poster presentation at ICASSP 2018.

Please use the above citation if you find any of the code useful.

Listening Examples :

Extensions :

  • An improvement of this work, which includes a novel regularization technique using TwinNetworks, can be found here: .
  • New branch called "nmr_eval". Contains our L1 penalized model as an alternative to recurrent inference algorithm. That system was submitted to SiSEC-MUS18 and is denoted as "MDL1" & "MDLT". In addition to this, it is possible to use an additional variable, the inverse masking threshold, that can be used inside the cost function. The latter approach is ongoing work that deals with perceptual evaluation.

Requirements :

  • Numpy : numpy==1.13.1
  • SciPy : scipy==0.19.1
  • PyTorch : pytorch==0.2.0_2 (For inference and model testing pytorch==0.3.0 is supported. Training needs to be checked.)
  • TorchVision : torchvision==0.1.9
  • Other : wave(used for wav file reading), pyglet(used only for audio playback), pickle(for storing some results)
  • Trained Models : DOI Download and place them under "results/results_inference/"
  • MIR_Eval : mir_eval=='0.4' (This is used only for unofficial cross-validation. For the reported evaluation please refer to:

Usage :

  • Clone the repository.
  • Add the base directory to your Python path.
  • While "mss_pytorch" is your current directory simply execute the "processes_scripts/" file (iPython is prefered if the base directory was not setted up correctly.)
  • Arguments for training and testing are given inside the main function of the "processes_scripts/" file.

Acknowledgements :

The research leading to these results has received funding from the European Union's H2020 Framework Programme (H2020-MSCA-ITN-2014) under grant agreement no 642685 MacSeNet.