GithubHelp home page GithubHelp logo

rmithyx / piva Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fakufaku/piva

1.0 1.0 2.0 67 KB

Performance-oriented implementation of independent vector analysis for blind source separation.

License: GNU General Public License v3.0

CMake 19.00% Batchfile 0.25% Shell 0.34% C++ 32.51% Python 47.90%

piva's Introduction

PIVA: Performance Independent Vector Analysis Library

/!\ This repository is a work in progress /!\

Actions Status

Blind source separation allows to separates multiple sound sources that have been mixed together in a multi-channel audio file. This is a performance-oriented implementation based on independent vector analysis. The implementations are for batch processing with fully parallel processing. At the moment, we implement two algorithms.

  1. AuxIVA with iterative projection (IP) [1]
  2. AuxIVA with iterative source steering (AuxIVA-ISS) [2]
  3. OverIVA for when there are more microphones than sources [3]
  4. Fast independent vector exctraction (FIVE) that extracts only one source [4]

ISS is faster than IP, especially for larger number of channels. Separation performance is about the same. OverIVA is suitable to extract few sources from a larger number of channels. FIVE extracts a single source, but is very fast. The library is a C++ header-only library with Python bindings.

Author

Robin Scheibler

Use the library

C++

The library is header only with the headers in include/piva.

Python

At the moment, the package is only supported through Anaconda.

Quick Start

conda install piva -c fakufaku

Manual Instalation

First, clone this repository.

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

Make sure you have the dependencies installed

cd piva
conda env create -f environment

Build the module

conda activate piva
pip install .

Windows runtime requirements

On Windows, the Visual C++ 2015 redistributable packages are a runtime requirement for this project. It can be found here.

If you use the Anaconda python distribution, you may require the Visual Studio runtime as a platform-dependent runtime requirement for you package:

requirements:
  build:
    - python
    - setuptools
    - pybind11

  run:
   - python
   - vs2015_runtime  # [win]

Dependencies

  • XTensor
  • Intel Threading Building Blocks (Intel TBB)
  • FFTW (for the STFT)
  • SndFile (for C++ examples, to read audio files)

Building the documentation

Documentation to be added later

Documentation for the example project is generated using Sphinx. Sphinx has the ability to automatically inspect the signatures and documentation strings in the extension module to generate beautiful documentation in a variety formats. The following command generates HTML-based reference documentation; for other formats please refer to the Sphinx manual:

  • piva/docs
  • make html

Running the tests

Tests to be added later

Running the tests requires pytest.

py.test .

License and Attribution

Copyright 2020 Robin Scheibler. GPL3 License (see LICENSE).

If you use this library for an academic publication, please cite [2]. Please also cite the paper for the relevant algorithm used.

References

[1] Nobutaka Ono, "Stable and fast update rules for independent vector analysis based on auxiliary function technique," Proc. WASPAA, 2011.
[2] Robin Scheibler, Nobutaka Ono, "Fast and stable blind source separation with rank-1 updates," Proc. IEEE ICASSP, 2020.
[3] Robin Scheibler, Nobutaka Ono, "Independent vector analysis with more microphones than sources," Proc. WASPAA, 2019.
[4] Robin Scheibler, Nobutaka Ono, "Fast independent vector extraction by iterative SINR maximization," Proc. IEEE ICASSP, 2020.

piva's People

Contributors

fakufaku avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

kingstorm oucxlw

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.