Skip to main content

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


Download files

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

Source Distribution

autochord-0.1.3.tar.gz (345.0 kB view details)

Uploaded Source

Built Distribution

autochord-0.1.3-py3-none-any.whl (350.3 kB view details)

Uploaded Python 3

File details

Details for the file autochord-0.1.3.tar.gz.

File metadata

  • Download URL: autochord-0.1.3.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

Hashes for autochord-0.1.3.tar.gz
Algorithm Hash digest
SHA256 1da35e411f0d2155cda29b03858030a181d4610f8467c494a919c14e60ba5d0b
MD5 4fcf49360e086f482dfa64eaa7e5c745
BLAKE2b-256 def2f53efe998a08ff8f22dac4daea829a4c674596097653ab573c41ee89b1d4

See more details on using hashes here.

File details

Details for the file autochord-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: autochord-0.1.3-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

Hashes for autochord-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 64c1577c598b96cfa41f631b7159461fa53dac7755a0dfe8d88e929036f7b3f8
MD5 b6e68b7c62a95aa337ea915dd9b28828
BLAKE2b-256 b1d6f7e334e207619818e0020f49d8a4fd6d7aec2d02afed428a49046e18a9fb

See more details on using hashes here.

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