news 2026/8/24 19:29:29

FMA 音乐数据集快速上手指南:10 万首免费音频数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FMA 音乐数据集快速上手指南:10 万首免费音频数据

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。

📊 项目全貌:四档规格一次看全

规格内容适合谁
small8,000 首 30 秒片段,8 个平衡流派,7.2 GiB快速原型、验证流程
medium25,000 首 30 秒片段,16 个不平衡流派,22 GiB中等规模实验
large106,574 首 30 秒片段,161 个流派,93 GiB深入研究、论文复现
full106,574 首完整时长,879 GiB完整时长场景的专业研究
metadatatracks/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 校验码验证完整性后unzipdata/目录。

第三步,用项目自带的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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 19:27:00

软件测试面试:如何回答团队规模与分工问题,展现专业深度

1. 面试官到底在问什么?拆解问题背后的真实意图“你们项目有多少个开发,多少个测试?测试之间是怎么分工的?”这几乎是软件测试面试中,特别是针对有项目经验的候选人时,一个必问的“经典开场白”。很多朋友第…

作者头像 李华
网站建设 2026/8/24 19:21:48

信号链设计全解析:从传感器到ADC的硬件设计核心与调试实战

1. 项目概述:为什么信号链是电子系统的“生命线”?在电子工程师的日常工作中,无论是设计一个简单的传感器接口,还是构建一套复杂的通信系统,我们总在和各种“信号”打交道。你可能调过运放的增益,也可能被A…

作者头像 李华
网站建设 2026/8/24 19:19:58

LM Studio本地大模型如何通过DeepSeek Harness实现专业级API调试与集成

如果你已经用 LM Studio 在本地部署了大模型,但每次测试都要打开那个图形界面,或者想把它集成到自己的脚本、应用里,是不是感觉有点割裂?这正是很多开发者从“玩一玩”到“用起来”的关键一步。 LM Studio 确实让本地部署大模型变…

作者头像 李华
网站建设 2026/8/24 19:16:56

一个勾选框,白吃你一半的模型内存——聊聊 Read/Write Enabled

一个几乎每个 Unity 项目都在犯的错 先做个小测试。打开你的 Unity 项目,随便点开一个模型(fbx),看看它的导入设置里,那个 Read/Write Enabled 是勾着的还是没勾。 如果你从来没注意过这个选项,那大概率—…

作者头像 李华