Automatic Chord Recognition library
Project description
autochord
Automatic Chord Recognition tools
About
autochord
is:
✔ a Python library for automatic chord recognition (using TensorFlow)
✔ a Javascript app for visualization of chord transcriptions:
Library Usage
To install library, run:
$ pip install autochord
autochord
provides a very simple API for performing chord recognition:
import autochord
autochord.recognize('audio.wav', lab_fn='chords.lab')
# This gives out a list of tuples in the format:
# (chord start, chord end, chord name)
# e.g.
# [(0.0, 5.944308390022676, 'D:maj'),
# (5.944308390022676, 7.476825396825397, 'C:maj'),
# (7.476825396825397, 18.250884353741498, 'D:maj'),
# (18.250884353741498, 19.736961451247165, 'C:maj')
# ...
# (160.49632653061224, 162.30748299319728, 'N')]
Under the hood autochord.recognize()
runs the NNLS-Chroma VAMP plugin to extract chroma features from the audio, and feeds it to a Bi-LSTM-CRF model in TensorFlow to recognize the chords. Currently, the model can recognize 25 chord classes: the 12 major triads, 12 minor triads, and no-chord ('N').
OPTIONALLY, you may dump the chords in a .lab
file by using the lab_fn
parameter. The output file follows the MIREX chord label format.
Upon import autochord
takes care of setting up the VAMP plugin and downloading the pre-trained chord recognition model.
The measured test accuracy of the TensorFlow model is 67.33%. That may be enough for some songs, but we can explore in the future how to further improve this.
App Usage
The app is pretty straightforward: you need to load a song, then you can upload a LAB file to visualize its chord labels. You may use the autochord
Python library for generating this file. Optionally, you may load another LAB file for comparison (e.g. ground-truth labels, LAB file from another model's prediction).
Future Improvements
- Integrate everything into a full chord recognition app! For that we need to:
- convert VAMP plugin to JS module
- model conversion to TensorFlow.js (as of writing, some CRF operations are not supported by TFJS yet)
- converting all other Python functions to JS equivalent
- Experimenting with other approaches to improve chord recognition accuracy
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for autochord-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64c1577c598b96cfa41f631b7159461fa53dac7755a0dfe8d88e929036f7b3f8 |
|
MD5 | b6e68b7c62a95aa337ea915dd9b28828 |
|
BLAKE2b-256 | b1d6f7e334e207619818e0020f49d8a4fd6d7aec2d02afed428a49046e18a9fb |