SuperAPI AI Directory

DALI

a large Dataset of synchronised Audio, LyrIcs and vocal notes

Open website

About this tool

DALI is a large-scale dataset of synchronized audio, lyrics, and notes, whose full name is "a large Dataset of synchronised Audio, LyrIcs and vocal notes". It was proposed by Gabriel Meseguer-Brocal, Alice Cohen-Hadria, and Geoffroy Peeters in their 2018 ISMIR conference paper, and was automatically created through a teacher-student machine learning paradigm.

DALI contains two main elements:

  • dali_data: the dataset itself, provided as a collection of gz files, each gz file containing the annotations for one song. Different versions of DALI_data are available in the repository.
  • dali_code: a Python package for reading and processing dali_data, stored in this repository. It has its own version control, and release and stable versions can be found on PyPI.

Usage:

  1. Install dali_code:

    • Release and stable versions: run pip install dali-dataset.
    • Non-release and unstable versions: enter the DALI/code folder and install manually.
    • Upgrade:pip install dali-dataset --upgrade.
    • Uninstall:pip uninstall dali-dataset.
    • Dependencies: numpy and youtube_dl.
  2. Load DALI_data:

    • DALI is presented as a collection of gz files, each gz containing the annotations for a specific song, identified by a unique id.
    • You can download a specific version of dali_data, or load a subset (by providing the ids to skip or keep).
    • Loading may take several minutes, depending on the computer and Python version; Python3 is faster than Python2.
    • Each DALI version contains a DALI_DATA_INFO.gz file, matching unique DALI ids with artist_name-song_title, YouTube links, and a boolean indicating whether the link is available.
    • dali_data is a dictionary whose keys are unique ids and whose values are instances of the Annotations class. Each annotation instance has two attributes: info and annotations.
  3. Annotation format:

    • Annotations are stored in entry.annotations['annot'] , in two formats: 'horizontal' (default) and 'vertical', which can be converted using a function.
    • Horizontal format: each granularity level is stored separately. Each level contains a list of annotations, and each element has corresponding information.
    • Vertical format: different granularity levels are hierarchically connected. Each element is a paragraph, a paragraph contains lines, a line contains words, and a word contains notes. Only the deepest level directly contains text information. You can use dali_code.get_text() to get the text at a specific point.
  4. Export and visualization:

    • Annotations at each level can be exported as xml or text files for visualization with Audacity or AudioSculpt. Pitch information is provided only in xml files for AudioSculpt.
    • Annotations can be exported and imported as JSON files.
  5. Ground-truth:

    • Each dali_data has its own ground-truth file. The annotations in the ground-truth are the entries in dali_data whose offset and fr parameters were manually annotated.
    • You can load the ground-truth file, or load the entire dali_data and update the offset and fr parameters of the songs in the ground-truth.
  6. Get audio:

    • You can use the dali_code.get_audio() function to retrieve the audio for each annotation (if available). A subset can also be downloaded.
  7. Processing examples:

    • Use dali_code.annot2vector() to convert annotations into vectors; the type can be 'voice' (1 or 0 per frame indicating voiced/unvoiced) or 'melody' (each frame contains the main melody frequency value).
    • Use dali_code.annot2frames() to convert time (seconds) to frames.
    • Use dali_code.unroll() to expand hierarchical information.
  8. Correct annotations:

    • At present, the main issue is global alignment. Alignment can be changed by modifying the offset and frame rate parameters. The original parameters are stored in a specific location.
    • If a better set of parameters is found, you can use dali_code.change_time() Function modification annotation, and encourage sending parameters to the project team to improve DALI.

Current work:

  • Second-generation singing voice detection system.
  • Resolve single-note errors.
  • Resolve global note errors (songs where all notes are shifted by the same interval).
  • Resolve local note alignment errors.

Contact and license:

  • For suggestions or improvements, contact: dali [dot] dataset [at] gmail [dot] com.
  • For package-related issues, please open an issue in the repository.
  • This research was funded by the French National Research Agency WASABI project (contract ANR-16-CE23-0017-01).
  • Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.