2014:Singing Voice Separation

From MIREX Wiki
Revision as of 23:08, 11 September 2014 by Tak-Shing Chan (talk | contribs) (Packaging submissions)


The singing voice separation task solicits competing entries to blindly separate the singer's voice from pop music recordings. The entries are evaluated using standard metrics (see Evaluation below).

Task specific mailing list

All discussions take place on the MIREX "EvalFest" list. If you have an question or comment, simply include the task name in the subject heading.


A collection of 100 clips of recorded pop music (vocals plus music) are used to evaluate the singing voice separation algorithms.

Collection statistics:

  1. Size of collection: 100 clips
  2. Audio details: 16-bit, mono, 44.1kHz, WAV
  3. Duration of each clip: 30 seconds


For evaluation we use Vincent et al.'s (2012) Source to Distortion Ratio (SDR), Source to Interferences Ratio (SIR), and Sources to Artifacts Ratio (SAR), as implemented by bss_eval_sources.m in BSS Eval Version 3.0. More specifically, their function will be invoked as follows:

>> trueVoice = wavread('trueVoice.wav');
>> trueKaraoke = wavread('trueKaraoke.wav');
>> trueMixed = trueVoice + trueKaraoke;
>> [estimatedVoice, estimatedKaraoke] = wrapper_function_calling_your_separation_algorithm(trueMixed);
>> [SDR, SIR, SAR] = bss_eval_sources([estimatedVoice estimatedKaraoke]', [trueVoice trueKaraoke]')

 SDR =

 SIR =

 SAR =

The final scores will be determined by the average scores over all 100 clips:




Submission format

Participants are required to submit an entry that takes in an input filename (full native pathname ending in *.wav) and an output directory as arguments. The entries must send their voice-separated outputs to *-voice.wav and *-music.wav under the output directory. For example:

function singing_voice_separation(infile, outdir)
[~, name, ext] = fileparts(infile);
your_algorithm(infile, fullfile(outdir, [name '-voice' ext]), fullfile(outdir, [name '-music' ext]));

function your_algorithm(infile, voiceoutfile, musicoutfile)
mixed = wavread(infile);

% Insert your algorithm here

wavwrite(voice, 44100, voiceoutfile);
wavwrite(music, 44100, musicoutfile);

Following the convention of other MIREX tasks, an extended abstract is also required (see MIREX 2014 Submission Instructions below).

Packaging submissions

All submissions should be statically linked to all libraries (the presence of dynamically linked libraries cannot be guaranteed).

  1. Be sure to follow the Best Coding Practices for MIREX
  2. Be sure to follow the MIREX 2014 Submission Instructions

All submissions should include a README file including the following the information:

  1. Command line calling format for all executables and an example formatted set of commands
  2. Number of threads/cores used or whether this should be specified on the command line
  3. Expected memory footprint
  4. Expected runtime
  5. Approximately how much scratch disk space will the submission need to store any feature/cache files?
  6. Any required environments/architectures (and versions), e.g. python, java, bash, matlab.
  7. Any special notice regarding to running your algorithm

Note that the information that you place in the README file is extremely important in ensuring that your submission is evaluated properly.

Time and hardware limits

Due to the potentially high number of particpants in this and other audio tasks, hard limits on the runtime of submissions are specified.

A hard limit of 24 hours will be imposed on runs. Submissions that exceed this runtime may not receive a result.

Potential Participants

name / email