MTG-Jamendo Dataset: Metadata, Splits and Baselines for Music Auto-Tagging
Metadata, scripts and baselines for the MTG-Jamendo dataset
At a glance
- What is it?
- The MTG-Jamendo repository is not the audio itself. It is the metadata layer, the download tooling, the fixed train/validation/test splits and a reference baseline for 195 tags across genre, instrument and mood/theme. The main decision is whether you want its splits and tag taxonomy or your own.
- Who is it for?
- Adopt MTG-Jamendo if you need a reproducible auto-tagging benchmark with published splits and a baseline you can compare against, and you can absorb the storage cost, which the README lists at 508 GB for full-quality raw_30s audio or 156 GB for the low-quality version. Do not adopt it if your label space is your own, since the splits fix the tag list and you cannot add categories without rebuilding them.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Activity is slowing. The repository last received commits 6 months ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What the Repository Actually Ships, and What It Does Not
The repository is a metadata and tooling project, not a data dump. Audio lives elsewhere and is fetched by a script. What sits in the repo is the tabular annotation layer under data, the derived statistics under stats, and the split definitions under splits. The README describes the pipeline that turns a raw scrape into a usable training set as a chain of TSV files: raw.tsv with 56,639 rows, raw_30s.tsv filtered to tracks longer than 30 seconds at 55,701 rows, raw_30s_cleantags.tsv after tag merging driven by tag_map.json, and finally autotagging.tsv at 195 tags. That chain is the interesting artifact. Anyone can download audio; the value here is a documented, reproducible path from messy uploader tags to a fixed label set. It is aimed at music information retrieval researchers who need a shared benchmark, and at engineers building auto-tagging models who want a labelled corpus without assembling one. The README states the dataset was used in the Emotion and Theme Recognition in Music task at MediaEval 2019 through 2021, which explains why the splits exist in the form they do.
The Tag Filtering Chain and Why 195 Is Not an Arbitrary Number
Each postprocessing step removes something specific. Tags are merged according to tag_map.json, which collapses near-duplicate uploader labels. Then raw_30s_cleantags_50artists.tsv keeps only tags that have at least 50 unique artists behind them, which is a deliberate guard against a tag that appears on many tracks by one prolific uploader. The result is the 195-tag autotagging set. The category subsets are carved from that same base: autotagging_genre.tsv holds 55,215 tracks and 95 tags, autotagging_instrument.tsv holds 25,135 tracks and 41 tags, autotagging_moodtheme.tsv holds 18,486 tracks and 59 tags. Note the arithmetic tension. The base file is described as 195 tags, but the splits note says a few tags are discarded so the tag list stays identical across train, validation and test, leaving 55,525 tracks with 87 genre, 40 instrument and 56 mood/theme tags. That is 183 tags in the splits, not 195. If you report per-tag metrics, state which file you evaluated against, because the two numbers describe different things.
Getting Audio and Features Onto Disk
The setup path in the README is short. Clone the repository, create a virtual environment, and install from scripts/requirements.txt. The README notes the original pinned set is preserved in scripts/requirements-orig.txt, which matters if a dependency has drifted since the file was written. Downloading is a single script with a small surface. Running python3 scripts/download/download.py -h prints the usage, and the documented flags are --dataset with choices raw_30s or autotagging_moodtheme, --type with choices audio, audio-low, melspecs or acousticbrainz, --from with choices mtg or mtg-fast, plus --unpack and --remove, and a positional outputdir. The README states the script downloads and validates all files. The --from mtg-fast option implies a mirror intended to be quicker; the README does not explain the difference between the two origins, so treat that as unverified and test it before a long run. Size is the real constraint. Full-quality raw_30s audio is listed at 508 GB, low-quality at 156 GB, mel-spectrograms at 229 GB, and the mood/theme subset at 152 GB full quality, 46 GB low quality, 68 GB for melspecs.
Precomputed Mel-Spectrograms Change the Compute Profile
Three feature formats are offered, and the choice has consequences beyond download time. Audio is 320 kbps MP3, with a mono low-bitrate alternative described as converted using lame -V 2. Mel-spectrograms are distributed as NumPy arrays in NPY format, and the README points to scripts/melspectrograms.py for the computation parameters. AcousticBrainz-style statistical features from Essentia are shipped as JSON. The melspec route removes audio decoding and STFT from your training loop, which is the usual reason to pick it, but it also freezes the front end: if your model expects a different sample rate, window size or mel band count, the precomputed arrays may not match, and the README does not enumerate those parameters in the prose, only in the code. The Essentia JSON features are the most compressed option and the least flexible, since they are aggregates rather than a time-frequency representation. Pick based on whether you intend to train an end-to-end waveform model or a classifier over fixed features.
The Fixed Splits Are the Point and the Constraint
Splits are generated from autotagging.tsv and the subset files are derived by filtering out unrelated tags and tracks that end up with no tags at all. That design gives you comparable numbers across papers and baselines, which is exactly what a shared benchmark needs. It also means you cannot introduce a new tag category without regenerating the splits and losing comparability with published results. The same applies to rebalancing: if your application cares disproportionately about a rare mood tag, the split proportions are already decided. There is a subtler issue in the subset files. Because subsets are built by filtering, a track can appear in the genre subset and the mood/theme subset simultaneously, so treating the four subsets as disjoint evaluation sets would be a mistake. The README does not claim they are disjoint, and the construction described makes it clear they are not. The additional Jamendo metadata in raw.meta.tsv, covering artist, album name, track title, release date and track URL, is a separate file with 56,693 rows, slightly more than raw.tsv, so joins on track id need checking rather than assuming a one-to-one match.
Where MTG-Jamendo Is the Wrong Tool
The dataset is built from Creative Commons music on Jamendo with tags supplied by uploaders. That provenance shapes the label distribution in ways that matter. Uploader tags reflect how musicians describe their own work for discovery, not how listeners or annotators would categorise it, and the 50-artist threshold filters the tail but does not correct the head. A model trained here will learn the vocabulary of self-promotion as much as the acoustics of a genre. The mood/theme subset is the smallest at 18,486 tracks and 59 tags, so per-tag support is thin for anything uncommon, and the README's own statistics directory exists precisely because tag frequency is uneven. If your target is commercial catalogue tagging, or tagging in a language other than the English tag vocabulary implied by the tag files, the label space will not transfer cleanly. And if you need note-level or structural annotations, this dataset has none: it is clip-level multi-label tagging over 30-second-minimum tracks.
How This Differs From MagnaTagATune and MSD
The closest comparisons are MagnaTagATune and the Million Song Dataset. MagnaTagATune is far smaller, roughly 25,000 clips of about 29 seconds, and its labels come from a game-based human annotation process, so the tags reflect listener agreement rather than uploader self-description. MTG-Jamendo is larger and uses full tracks rather than fixed clips, which suits models that consume longer context, but its labels carry the uploader bias described above. The Million Song Dataset takes the opposite approach: it distributes features and metadata for a million tracks and no audio at all, which makes it cheap to store but useless if you want to train on waveforms. MTG-Jamendo sits between them by shipping a download script for real audio alongside precomputed features. The practical difference is that MagnaTagATune gives you cleaner labels on less audio, MSD gives you scale without audio, and MTG-Jamendo gives you audio with labels whose reliability you have to reason about yourself.
Maintenance, Licensing and What to Check Before You Commit
The repository is Apache-2.0 licensed, which covers the code, the metadata files and the scripts in this repo. It does not automatically cover the audio. The README states the audio is built from music available on Jamendo under Creative Commons licenses, and those licenses vary per track, so the terms attached to a given MP3 are a property of that track and not of this repository. The README does not enumerate per-track license fields in the metadata description, so if your use case depends on a specific license condition, verify it against the source rather than assuming Apache-2.0 propagates. There are no releases listed, so the practical upgrade path is tracking the master branch, and the last push date indicates the project is still active rather than frozen. That means the tag map, the split files or the download script can change under you between experiments. For reproducibility, pin the commit hash you used alongside your results. The Zenodo DOI badge in the README points at a citable snapshot, which is the safer reference for a paper than a branch name that moves.
Editorial conclusion
Adopt MTG-Jamendo if you need a reproducible auto-tagging benchmark with published splits and a baseline you can compare against, and you can absorb the storage cost, which the README lists at 508 GB for full-quality raw_30s audio or 156 GB for the low-quality version. Do not adopt it if your label space is your own, since the splits fix the tag list and you cannot add categories without rebuilding them. Before committing, verify three things: that scripts/download/download.py -h resolves the --from mtg-fast mirror you intend to use, that the tag counts in splits match the 87 genre, 40 instrument and 56 mood/theme figures stated for autotagging.tsv, and that your disk budget covers the --type you pick.
Community notes