This repository contains the code to reproduce some of the experiments of in the paper SDR — Medium Rare with Fast Computation. This is essentially a benchmark of the fast_bss_eval Python package for the evaluation of blind source separation algorithms.
Abstract — We revisit the widely used bss eval metrics for source separation with an eye out for performance. We propose a fast algorithm fixing shortcomings of publicly available implementations. First, we show that the metrics are fully specified by the squared cosine of just two angles between estimate and reference subspaces. Second, large linear systems are involved. However, they are structured, and we apply a fast iterative method based on conjugate gradient descent. The complexity of this step is thus reduced by a factor quadratic in the distortion filter size used in bss eval, usually 512. In experiments, we assess speed and numerical accuracy. Not only is the loss of accuracy due to the approximate solver acceptable for most applications, but the speed-up is up to two orders of magnitude in some, not so extreme, cases. We confirm that our implementation can train neural networks, and find that longer distortion filters may be beneficial.
git clone https://github.com/fakufaku/sdr_medium_rare.git
We use the wsj1_2345_db dataset for the experiments.
To create the dataset, follow the instructions given in the dataset repository and use the config_dataset_wsj1_2345_db.json
file.
git clone https://github.com/fakufaku/create_wsj1_2345_db.git
cd create_wsj1_2345_db
python ./make_dataset.py <some_path>/sdr_medium_rare/config_dataset_wsj1_2345_db.json <path_to_original_datasets> <path_to_output>
Then, create a symbolic link in the sdr_medium_rare
folder.
cd <some_path>/sdr_medium_rare
ln -s <path_to_output>/wsj1_2345_db wsj1_2345_db
Assuming use of anaconda
cd <some_path>/sdr_medium_rare
conda env create -f environment.yml
conda activate 2022_sdr_medium_rare
./run_experiments.sh
This will produce some data in the output
folder and figures in the figures
folder.
We compare to mir_eval and sigsep implementations.
2021 (c) Robin Scheibler, LINE Corporation
This code is released under MIT License.