fakufaku / sdr_medium_rare

Code to reproduce results in the paper "SDR - Medium Rare with Fast Computations"

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SDR — Medium Rare with Fast Computations

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.

Author

Robin Scheibler

Quick Start

Get the Code

git clone https://github.com/fakufaku/sdr_medium_rare.git

Install Dataset

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

Run Experiments

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.

fast_bss_eval Benchmark Result

We compare to mir_eval and sigsep implementations.

Speed

Numerical Accuracy vs mir_eval

License

2021 (c) Robin Scheibler, LINE Corporation

This code is released under MIT License.

About

Code to reproduce results in the paper "SDR - Medium Rare with Fast Computations"

License:MIT License


Languages

Language:Python 99.4%Language:Shell 0.6%