Home

Awesome

DSD100 Matlab

MATLAB scripts to parse and process the demixing secrets dataset (DSD100) as part of the Signal Separation Evaluation Campaign (SISEC). This scripts are intended to perform the full evaluation of the separation quality of your estimates on the DSD100.

Usage

We provide two functions

Function NameDescription
DSD100_separate_and_eval.mParse the DSD100 and generates estimates with a user provided function. Evaluates with BSS_EVAL and saves results.
DSD100_eval_only.mOnly evaluates existing estimates (also multiple methods) with BSS_EVAL and saves results. Good in combination with the DSD100 python package

Separate and Evaluate

The function DSD100_separate_and_eval.m should be used along with the Demixing Secret Dataset 100 (DSD100) for the purpose of music source separation. Before you start please set the dataset_folder to point to the DSD100 root folder.

The separation function should be named myfunction.m placed in the root folder, and have the following syntax:

[bass, drums, other, vocals, accompaniment] = myfunction(mixture, fs)

where mixture is a matrix of size [#samples, #channels] corresponding to the mixture, fs is the corresponding sampling frequency in Hz, and bass, drums, other, vocals and accompaniment are matrices of same size as the mixture corresponding to the estimates, i.e., the bass, the drums, the other instruments, the vocals, and the full accompaniment (i.e., bass+drums+other), respectively. If one or more sources are not meant to be estimated, the function should return an empty matrix (i.e., []). Any other parameter of the algorithm should be defined internally.

The evaluation function should then be called simply as follows:

DSD100_separate_and_eval.m

The function loops over all the 100 songs of the MSD100 data set, and, for each song, for both the "Dev" and "Test" subsets, performs source separation on the mixture mixture.wav from the folder "Mixtures" using the separation function myfunction.m and saves the estimates as bass.wav, drums.wav, other.wav, and vocals.wav (if estimated) to the folder Estimates. The function then measures the separation performance using the BSS Eval toolbox 3.0 (included in this function) and the sources from the folder "Sources," and saves the results (i.e., SDR, ISR, SIR, and SAR) in the file "results.mat," including the song name and the processing time, along with the estimates to the folder "Estimates". The function also saves the results for all the songs in a single file "result.mat" to the estimates folder, along with this function.

Evaluate only

If you already have generated the estimates before (e.g. by using the DSD100 python package you can run DSD100_eval_only.m separately. Before you start please set the dataset_folder to point to the DSD100 folder.

The variable base_estimates_directory stand for the root folder in which the script should find subdirectories containing the results of the methods you want to evaluate. each of these subdirectories must contain the exact same file structure than the DSD dataset, as produced by the DSD100_separate_and_eval_parallel.m script or the DSD100 python package. The matching is case sensitive. There is the possibility of not including all sources, and also to include the "accompaniment" source, defined as the sum of all sources except vocals.

The evaluation function should then be called simply as follows:

DSD100_eval_only.m

The function loops over all the 100 songs of the MSD100 data set, and, for each song, for both the "Dev" and "Test" subsets, performs evaluation using the BSS Eval toolbox 3.0 (included in this function) and saves the results (i.e. SDR, ISR, SIR, and SAR) in the file "results.mat," including the song name. The function also saves the results for all the songs in a single file "resultX.mat" to the estimates folder, along with this function.

A first evaluation is performed for the 4 sources vocals/bass/drums and other, and a second is performed for accompaniment.

References

We would like to thank Emmanuel Vincent for giving us the permission to use the BSS Eval toolbox 3.0

If you use this script, please reference the following paper

@inproceedings{SiSEC2015,
    TITLE = {{The 2015 Signal Separation Evaluation Campaign}},
    AUTHOR = {N. Ono and Z. Rafii and D. Kitamura and N. Ito and A. Liutkus},
    BOOKTITLE = {{International Conference on Latent Variable Analysis and Signal Separation  (LVA/ICA)}},
    ADDRESS = {Liberec, France},
    SERIES = {Latent Variable Analysis and Signal Separation},
    VOLUME = {9237},
    PAGES = {387-395},
    YEAR = {2015},
    MONTH = Aug,
}