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.4.tar.gz (345.0 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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

Hashes for autochord-0.1.4.tar.gz
Algorithm Hash digest
SHA256 6634ccf9caf4b213c079cffc168f3ad02743132b9d5d50fe0ab927acc65e959f
MD5 e839cf2062b2355b9f6c4d5ab3ff634a
BLAKE2b-256 91314face68440ee5c8c0a1f23d46a81e43a26f603157fee2c748ddce04e7c46

See more details on using hashes here.

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

Hashes for autochord-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 97c0ae92d3ee90083f11b575d707f0f493d8900145719e097b299061c92894a5
MD5 adfe7f7f7cbb92dd696d571efda1413c
BLAKE2b-256 dd19bf307cf5d5aeaa44e3fe83e022b0770149ad9fb83dc98f8e9bec888e36ea

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