FMA 音乐数据集快速上手指南:10 万首免费音频数据
【免费下载链接】fmaFMA: A Dataset For Music Analysis项目地址: https://gitcode.com/gh_mirrors/fm/fma
FMA 是 2017 年发布的大规模开放音乐分析数据集,解决音乐信息检索领域难以合法获取高质量大批量音频的问题。它包含 106,574 首曲目、917 GiB 音频、343 天播放时长,覆盖 16,341 位艺术家和 14,854 张专辑,流派按 161 个类别做层次划分。音频全部采用 Creative Commons 授权,代码以 MIT 协议发布,元数据为 CC BY 4.0。
📊 项目全貌:四档规格一次看全
| 规格 | 内容 | 适合谁 |
|---|---|---|
| small | 8,000 首 30 秒片段,8 个平衡流派,7.2 GiB | 快速原型、验证流程 |
| medium | 25,000 首 30 秒片段,16 个不平衡流派,22 GiB | 中等规模实验 |
| large | 106,574 首 30 秒片段,161 个流派,93 GiB | 深入研究、论文复现 |
| full | 106,574 首完整时长,879 GiB | 完整时长场景的专业研究 |
| metadata | tracks/genres/features/echonest 四张表,342 MiB | 所有任务的基础 |
音频统一为 MP3 格式,提供 30 秒片段与完整时长两种切法。官方已内置训练/验证/测试三分割,所有任务建议直接沿用,保证与已有论文可比。
🚀 最短路径:从 clone 到第一次成功加载
先选 small 档验证流程,跑通后再升级 medium 或 large。
第一步,克隆仓库并安装依赖(注意 requirements.txt 锁定了 2017 年的老版本,见下文避坑一节):
git clone https://gitcode.com/gh_mirrors/fm/fma cd fma pip install -r requirements.txt第二步,按仓库 README 里的表格下载fma_metadata.zip(342 MiB)和fma_small.zip(7.2 GiB),用 README 中给出的 sha1 校验码验证完整性后unzip到data/目录。
第三步,用项目自带的utils.load加载元数据,它会自动处理多行表头和类型解析,不需要你手写任何解析逻辑:
import utils tracks = utils.load('data/fma_metadata/tracks.csv') genres = utils.load('data/fma_metadata/genres.csv') print(tracks.shape, genres.shape)跑通后打开 usage.ipynb,按单元格顺序执行,就能看到完整的加载、绘图和训练流程。
📁 核心内容拆解:四张表各管什么
tracks.csv:每首曲目一行,含曲目/专辑/艺术家三级元数据、标签、流派、播放次数,以及官方的 subset 和 split 两列。你拿它定义训练标签、筛选子集和划分数据,是整个数据集的入口表。
genres.csv:163 个流派,每个带一个 parent 字段,由此推出层次树和顶层流派(genre_top)。你需要做多级分类、或在稀有流派上向上归并时用它。
features.csv:librosa 预计算的音频特征,每首曲目一行,包含 mfcc、chroma_cens、tonnetz、频谱质心等列。你解码音频的数天等待时间被省掉了,直接拿它训练分类器。
echonest.csv:Spotify(原 Echonest)提供的专业特征,仅覆盖 13,129 首,含节奏、音色、能量等维度和随时间变化的特征。适合做对照实验或回归类任务。
另外 utils.py 提供get_audio_path按曲目 ID 定位 MP3 文件,以及多进程音频加载器,批量读音频时能避免 IO 瓶颈。
🎯 典型任务演示
任务一:流派分类。输入是 tracks.csv 的genre_top标签和 features.csv 的 MFCC 列;操作是取 small 子集的官方 training/test 分割,标准化后用 SVM 训练(完整流程见 usage.ipynb 第 5 节):
X_train = features.loc[train, 'mfcc'] clf = skl.svm.SVC().fit(X_train, y_train)产出是测试集准确率,可以直接和论文基线对比。
任务二:音频探索与特征提取。输入是一个曲目 ID;操作是定位 MP3、用 librosa 解码并绘制谱图:
import librosa x, sr = librosa.load(utils.get_audio_path(AUDIO_DIR, 2))产出是波形、梅尔谱图和 MFCC 可视化,用来直观理解"特征为什么能区分流派"。
⚠️ 实战避坑
- 磁盘不足:full 档 879 GiB、large 档 93 GiB 都会瞬间吃满磁盘。先下 small 加 metadata 共约 7.5 GiB 验证流程,确认可行再升级。
- 内存超限:全量 10 万行特征用 pandas 一把载入会明显吃内存。按 subset 列过滤后再取列,或改用分块读取。
- 依赖装不上:requirements.txt 锁定 Python 3.6 时代的版本(numpy 1.12、pandas 0.19),在新 Python 上大概率编译失败。不必照抄版本号,装新版 pandas、librosa、scikit-learn 即可跑通核心流程;解码 MP3 还需系统安装 ffmpeg。
🧭 进阶路径
下一步
- 跑通 baselines.ipynb:拿到 sklearn 多种分类器加深度学习的官方基线分数,你的模型好不好一目了然。
- 逐节读 usage.ipynb:吃透多级表头加载、音频批量加载和可视化写法。
- 执行 analysis.ipynb:看流派分布、数据划分和特征的完整可视化分析。
更远的方向
- 原始音频端到端深度学习:CNN、RNN、Transformer 直接在 30 秒波形上建模,替代手工特征。
- 多模态建模:把音频特征和标签、播放次数、艺术家简介文本联合起来,提升小数据上的表现。
- 预训练迁移:在 large 档上训练大模型,再迁移到更小的数据集或下游任务,放大数据规模的红利。
打开 usage.ipynb,在仓库根目录写入一行AUDIO_DIR=./data/fma_small/的 .env 文件,然后执行第一个代码单元,全部元数据就加载好了。
【免费下载链接】fmaFMA: A Dataset For Music Analysis项目地址: https://gitcode.com/gh_mirrors/fm/fma
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考