• Stars
    star
    111
  • Rank 314,510 (Top 7 %)
  • Language
    Python
  • License
    MIT License
  • Created about 3 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A fast implementation of bss_eval metrics for blind source separation

fast_bss_eval

PyPI version Documentation Status black tests codecov

Do you have a zillion BSS audio files to process and it is taking days ? Is your simulation never ending ?

Fear no more! fast_bss_eval is here to help you!

fast_bss_eval is a fast implementation of the bss_eval metrics for the evaluation of blind source separation. Our implementation of the bss_eval metrics has the following advantages compared to other existing ones.

  • seamlessly works with both numpy arrays and pytorch tensors
  • very fast
  • can be even faster by using an iterative solver (add use_cg_iter=10 option to the function call)
  • differentiable via pytorch
  • can run on GPU via pytorch

Author

Quick Start

Install

# from pypi
pip install fast-bss-eval

# or from source
git clone https://github.com/fakufaku/fast_bss_eval
cd fast_bss_eval
pip install -e .

Use

Assuming you have multichannel signals for the estmated and reference sources stored in wav format files names my_estimate_file.wav and my_reference_file.wav, respectively, you can quickly evaluate the bss_eval metrics as follows.

from scipy.io import wavfile
import fast_bss_eval

# open the files, we assume the sampling rate is known
# to be the same
fs, ref = wavfile.read("my_reference_file.wav")
_, est = wavfile.read("my_estimate_file.wav")

# compute the metrics
sdr, sir, sar, perm = fast_bss_eval.bss_eval_sources(ref.T, est.T)

Benchmark

This package is significantly faster than other packages that also allow to compute bss_eval metrics such as mir_eval or sigsep/bsseval. We did a benchmark using numpy/torch, single/double precision floating point arithmetic (fp32/fp64), and using either Gaussian elimination or a conjugate gradient descent (solve/CGD10).

Citation

If you use this package in your own research, please cite our paper describing it.

@misc{scheibler_sdr_2021,
  title={SDR --- Medium Rare with Fast Computations},
  author={Robin Scheibler},
  year={2021},
  eprint={2110.06440},
  archivePrefix={arXiv},
  primaryClass={eess.AS}
}

License

2021 (c) Robin Scheibler, LINE Corporation

All of this code is released under MIT License with the exception of fast_bss_eval/torch/hungarian.py which is under 3-clause BSD License.

More Repositories

1

esp32-fft

Vanilla single-precision radix-2 FFT for the ESP32.
C
148
star
2

torchiva

Blind source separation with independent vector analysis family of algorithm in torch
Python
72
star
3

CmdArduino

Simple serial command line prompt for Arduino. Developed by Akiba from @freaklabs
C++
34
star
4

Pomodoro

A custom built timer for the pomodoro technique to be more productive.
Eagle
29
star
5

auxiva-ipa

Fast algorithm for determined blind source separation with update of demixing filters with joint adjustment of the remaining sources.
Python
27
star
6

diffusion-separation

Single channel speech source separation by diffusion process (ICASSP 2023)
Python
26
star
7

2020_interspeech_gmdp

Generalized Minimal Distortion Principle for Blind Source Separation
Python
19
star
8

piva

Performance-oriented implementation of independent vector analysis for blind source separation.
Python
18
star
9

pyramic-dataset

48-Channel Anechoic Audio Recordings of 3D Sources
Python
14
star
10

separake

Echo aware source separation
Jupyter Notebook
13
star
11

doamm

Implementation of algorithms for refinement of direction of arrival estimators by optimization
Python
12
star
12

interspeech2023-moving-iva-samples

Repository containing samples produced by the method proposed in "Multi-channel separation of dynamic speech and sound events" and presented at Interspeech 2023.
HTML
8
star
13

auxiva-iss-dnn

Code to reproduce the results in the paper "Surrogate Source Model Learning for Determined Source Separation"
7
star
14

sdr_medium_rare

Code to reproduce results in the paper "SDR - Medium Rare with Fast Computations"
Python
5
star
15

kurodako

A beaglebone black cape with 8 microphone arrays, as many as an octopus has legs.
4
star
16

bss_speech_dataset

A dataset to test blind source separation algorithms
Python
4
star
17

AudioTools

Audio signal processing toolbox in python.
Python
4
star
18

nerdledger

CLI family accounting sw in Python
Python
4
star
19

timeseries-api

A dead simple API to store measurements taken with IoT devices such as ESP8266 or ESP32.
Python
4
star
20

create_wsj1_2345_db

Collection of scripts to create a dataset of noisy multi-channel reverberant mixtures based on wsj1 and CHiME3 datasets.
Python
4
star
21

jisamm

Code the paper on MM algorithms for joint independent subspace analysis
Python
3
star
22

fakufaku.github.io

My frontpage
JavaScript
3
star
23

moteur

Sketch of a physics engine coded as an exercise back around 2004.
C
3
star
24

beamerthemelausanne

A beamer theme with full screen background images for main and section titles.
TeX
2
star
25

Septimus

A large 7 segment display with step-up DC-DC converter and ATtiny2313 for control.
C
2
star
26

cookiecutter-pyroomacoustics-sim

A cookie cutter to quickly get started with room simulation using pyroomacoustics.
Python
2
star
27

repsimtools

Automating reproducibility of large scale simulations and parameters sweep.
Python
2
star
28

python-samplerate2

Monolithic python wrapper of libsamplerate
C++
1
star
29

cookiecutter-latex-ieeeconf

A cookie cutter for latex manuscript used for IEEE conferences (ICASSP, WASPAA, etc)
TeX
1
star
30

LCDShield

An 8x2 LCD Arduino Shield
1
star
31

graphcoloring_mcmc

Implementation of simulated annealing for the graph coloring problem.
Python
1
star
32

FakuFaku-wp

A wordpress theme for fakufaku
PHP
1
star
33

FakuFakuMath

Custom latex mathematical library
1
star
34

Breathalyzer

Evolution from a badge hacking contest at Hashdays 2012.
Arduino
1
star
35

TokyoTime

An alarm clock, based on the BigTime design from SparkFun, but on steroids.
Arduino
1
star
36

PhatThaiAlert

Your local canteen serves amazing Phat Thai ? They advertise their menu with an RSS feed ? Do not miss your favorite phat thai another time using this automatic Phat Thai alert script!
Python
1
star