Skip to content

The PyTorch-based audio source separation toolkit for researchers

License

Notifications You must be signed in to change notification settings

iput2021-someya/asteroid

Repository files navigation

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 !

About

The PyTorch-based audio source separation toolkit for researchers

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Jupyter Notebook 98.7%
  • Python 1.1%
  • Shell 0.2%