Skip to main content

PyTorch-based audio source separation toolkit

Project description

Asteroid : Audio Source Separation on steroids

Build Status codecov

Slack

Asteroid is a Pytorch-based source separation and speech enhancement API that enables fast experimentation on common datasets. It comes with a source code written to support a large range of datasets, architectures, loss functions etc... and a set of recipes to reproduce some important papers.
Asteroid is intended to be a community-based project so hop on and help us !

You use asteroid or you want to?

Please, if you have found a bug, open an issue, if you solved it, open a pull request !
Same goes for new features, tell us what you want or help us building it !
Don't hesitate to join the slack and ask questions / suggest new features there as well, we won't bite !

Table of contents

Installation

In order to install Asteroid, clone the repo and install it using pip or python :

git clone https://github.com/mpariente/asteroid
cd asteroid
# Install with pip (in editable mode)
pip install -e .
# Install with python
python setup.py install

Highlights

Few notebooks showing example usage of asteroid's features.

Running a recipe

Running the recipes requires additional packages in most cases, we recommend running :

# from asteroid/
pip install -r requirements.txt

Then choose the recipe you want to run and run it !

cd egs/wham/ConvTasNet
./run.sh

More information in egs/README.md.

Recipes

Supported datasets

Writing your own recipe

Contributing

See our contributing guidelines.

Codebase structure

├── asteroid                 # Python package / Source code
│   ├── data                 # Data classes, DalatLoaders maker.
│   ├── engine               # Training classes : losses, optimizers and trainer.
│   ├── filterbanks          # Common filterbanks and related classes.
│   ├── masknn               # Separation building blocks and architectures.
│   └── utils.py
├── examples                 # Simple asteroid examples 
└── egs                      # Recipes for all datasets and systems.
│   ├── wham                 # Recipes for one dataset (WHAM) 
│   │   ├── ConvTasNet       # ConvTasnet systme on the WHAM dataset.
│   │   │   └── ...          # Recipe's structure. See egs/README.md for more info
│   │   ├── Your recipe      # More recipes on the same dataset (Including yours)
│   │   ├── ...
│   │   └── DualPathRNN
│   └── Your dataset         # More datasets (Including yours)

Remote TensorBoard visualization

# Launch tensorboard remotely (default port is 6006)
tensorboard --logdir exp/tmp/lightning_logs/ --port tf_port

# Open port-forwarding connection. Add -Nf option not to open remote. 
ssh -L local_port:localhost:tf_port user@ip

Then open http://localhost:local_port/. If both ports are the same, you can click on the tensorboard URL given on the remote, it's just more practical.

Guiding principles

  • Modularity. Building blocks are thought and designed to be seamlessly plugged together. Filterbanks, encoders, maskers, decoders and losses are all common building blocks that can be combined in a flexible way to create new systems.
  • Extensibility. Extending Asteroid with new features is simple. Add a new filterbank, separator architecture, dataset or even recipe very easily.
  • Reproducibility. Recipes provide an easy way to reproduce results with data preparation, system design, training and evaluation in a same script. This is an essential tool for the community !

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asteroid-0.1.0.tar.gz (4.3 kB view hashes)

Uploaded Source

Built Distribution

asteroid-0.1.0-py3-none-any.whl (4.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page