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
File details
Details for the file autochord-0.1.4.tar.gz
.
File metadata
- Download URL: autochord-0.1.4.tar.gz
- Upload date:
- Size: 345.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.5.0.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.6.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6634ccf9caf4b213c079cffc168f3ad02743132b9d5d50fe0ab927acc65e959f |
|
MD5 | e839cf2062b2355b9f6c4d5ab3ff634a |
|
BLAKE2b-256 | 91314face68440ee5c8c0a1f23d46a81e43a26f603157fee2c748ddce04e7c46 |
File details
Details for the file autochord-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: autochord-0.1.4-py3-none-any.whl
- Upload date:
- Size: 350.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.5.0.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.6.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97c0ae92d3ee90083f11b575d707f0f493d8900145719e097b299061c92894a5 |
|
MD5 | adfe7f7f7cbb92dd696d571efda1413c |
|
BLAKE2b-256 | dd19bf307cf5d5aeaa44e3fe83e022b0770149ad9fb83dc98f8e9bec888e36ea |