news 2026/8/24 13:09:40

FMA 音乐数据集:10 万级曲库到流派分类 baseline 的 30 分钟接入路径

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FMA 音乐数据集:10 万级曲库到流派分类 baseline 的 30 分钟接入路径

FMA 音乐数据集:10 万级曲库到流派分类 baseline 的 30 分钟接入路径

【免费下载链接】fmaFMA: A Dataset For Music Analysis项目地址: https://gitcode.com/gh_mirrors/fm/fma

给 3000 首曲子逐首打标,人工排期要两周,特征流水线是否跑通还没底。FMA 提供 106,574 首 Creative Commons 音频与现成特征,用于流派分类,跳过数据收集直接进入模型对比。

能力速览:106,574 首曲目的元数据与特征文件

能力说明量化指标(来源)
曲目元数据标题、艺术家、标签、播放次数、官方 train/val/test 分割106,574 行,16,341 位艺术家,14,854 张专辑(tracks.csv)
流派层级父-子流派关系,可推导 top-level 类别163 个流派,large 子集覆盖 161 个(genres.csv)
预计算音频特征mfcc、chroma_cens、tonnetz、spectral_contrast 等列组覆盖全部曲目,与 tracks 行索引对齐(features.csv)
Echonest 特征第三方音频、社会、时序特征13,129 首(echonest.csv)
四档音频子集30 秒 44.1kHz 切片,full 为完整长度7.2 / 22 / 93 / 879 GiB(fma_small 至 fma_full.zip)

最短接入路径:clone 与依赖安装

环境搭建只需要两步命令(版本说明在下方):

git clone https://gitcode.com/gh_mirrors/fm/fma cd fma && pip install -r requirements.txt

版本说明:requirements.txt 锁定的是 Python 3.6 时代的栈(pandas 0.19.2、librosa 0.5.0、Keras 1.2.2、tensorflow-gpu 1.0.1),新环境建议放宽版本约束后安装,核心用法不受影响。

  • 必须依赖:numpy、pandas(加载分层表头 CSV)、scikit-learn(baseline 分类器)
  • 可选依赖:librosa、pydub(原始音频解码)、tensorflow-gpu + Keras(训练深度网络)、系统级 ffmpeg(最快的解码通路)、jupyter notebook(跑 usage.ipynb)

数据流水线:从站点 API 到 MP3 子集

  1. 采集:webapi.ipynb 按曲目/专辑/艺术家 ID 查询 freemusicarchive.org 接口,creation.py 落盘生成 tracks.csv 与 genres.csv。
  2. 提特征:features.py 用 librosa 从音频提取标准化特征写入 features.csv,13,129 首额外汇入 Echonest 特征。
  3. 编码音频:全部曲目以 MP3 编码,30 秒切片按 ID 存入 3 级目录(如 000/000002.mp3),再打包成 4 档 zip。
  4. 消费:解压到 data/ 后,utils.py 的load()自动按分层表头解析 CSV,get_audio_path(audio_dir, track_id)由 ID 拼出音频路径。

三个实战场景:加载元数据、训练流派分类、解码音频

场景一,离线加载元数据与特征;场景二,在 small 子集上用 SVC 跑流派分类 baseline(两块共用下方代码块):

import utils, sklearn.preprocessing as sp, sklearn.svm as svm tracks = utils.load('data/fma_metadata/tracks.csv') features = utils.load('data/fma_metadata/features.csv') small, tr, te = tracks['set','subset'] <= 'small', tracks['set','split']=='training', tracks['set','split']=='test' s = sp.StandardScaler(copy=False).fit(features.loc[small & tr, 'mfcc']) ytr = tracks.loc[small & tr, ('track','genre_top')] print(svm.SVC().fit(s.transform(features.loc[small & tr, 'mfcc']), ytr).score( s.transform(features.loc[small & te, 'mfcc']), tracks.loc[small & te, ('track','genre_top')]))

预期输出:一次运行得到 small 子集(8 个平衡流派)上的一个准确率数值,可与 baselines.ipynb 里 13 个分类器的对比表逐项对照。

场景三,按 ID 解码 30 秒原始音频:

import os, utils path = utils.get_audio_path(os.environ['AUDIO_DIR'], 2) x = utils.FfmpegLoader().load(path) print(path, x.shape)

预期输出:路径形如data/fma_small/000/000002.mp3,样本数约 1,321,967(44.1kHz 的 30 秒)。

高频坑与解法:大文件解压与多进程音频加载

  • 现象:unzip fma_large.zip报错或产物损坏。原因:归档压缩级别超出系统 unzip 能力(README 已知问题)。处理:改用 7-Zip 执行7z x fma_large.zip,解压后按 README 给出的 sha1 校验。
  • 现象:pip install -r requirements.txt在 resampy 处构建失败。原因:resampy 的 setup.py 会先 import numpy。处理:先单独pip install numpy==1.12.1再装其余包,makefile 的 install 目标就是这个两段式顺序。
  • 现象:多进程批量读 mp3 时 librosa 报线程错误、整体慢。原因:librosa 重采样慢,audioread 后端不支持多进程。处理:改用 utils.py 的FfmpegLoader(管道调用 ffmpeg,官方标注最快),或LibrosaLoader配合res_type='kaiser_fast'(约 3 倍速)。
  • 现象:个别 mp3 读取失败,训练间歇报错。原因:数据集存在已知坏文件(官方 errata)。处理:用utils.build_sample_loader,它对坏文件自动跳过并打印路径;先用 sha1sum 排除下载截断。

上下游生态:上游来源与下游衍生方向

  • 上游:音频与元数据来自 freemusicarchive.org,全部曲目为 Creative Commons 许可,数据集面向研究用途;代码 MIT、元数据 CC BY 4.0。
  • 下游:100 余篇论文引用(ISMIR 2017 论文 arXiv:1612.01840),已衍生 2 个数据集:OpenMIC-2018(多乐器识别)与 FMA_convnet_features(预提取 ConvNet 特征),可跳过解码直接训分类头。
  • 维护方式:问题与提交走仓库 issue/pull request,已知坏文件清单集中在 issue #41。
  • 延伸阅读:analysis.ipynb 复现论文全部图表,usage.ipynb 覆盖加载、可视化与训练全链路。

收束

回到开场:给 3000 首曲子打标签这件事,现在可以先拉 342 MiB 的 fma_metadata.zip 加 7.2 GiB 的 small 子集,按 usage.ipynb 跑通 SVC baseline,确认流水线无误后再升级到 medium 子集调自己的模型。

【免费下载链接】fmaFMA: A Dataset For Music Analysis项目地址: https://gitcode.com/gh_mirrors/fm/fma

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

从零构建AI自动化代理:基于my_ai_town项目的核心原理与工程实践

如果你是一名开发者&#xff0c;最近一定被各种“AI Agent”、“自动化代理”的概念刷屏了。从 GitHub 上爆火的项目到各种“AI 改变工作流”的讨论&#xff0c;似乎一夜之间&#xff0c;不懂 AI 自动化就落伍了。但当你真正想动手时&#xff0c;却发现困难重重&#xff1a;教程…

作者头像 李华
网站建设 2026/8/24 13:07:37

风险清单批注:法务审一审之前的 AI 预筛怎么做

法务审合同&#xff0c;真正值钱的动作是条款取舍和风险定级&#xff0c;但现实中大量时间耗在找错别字、核数字、查身份证号上。我们部门去年定了一条规矩&#xff1a;合同进法务手里之前&#xff0c;先过一遍机器预筛&#xff0c;输出一串批注&#xff1b;法务拿到文件第一眼…

作者头像 李华
网站建设 2026/8/24 13:07:13

合同译英文:术语表先行,每段后面插译文

涉外合同越来越多&#xff0c;法务和合同管理岗隔三差五要出英文版。这篇按问答体讲一套我们跑得比较顺的流程&#xff1a;术语表先行、逐段对照插译文、人工定稿。工具是察元AI文档助手&#xff0c;WPS 加载项加本机 MCP 服务&#xff0c;整条链路的重点只有一个——合同不出域…

作者头像 李华
网站建设 2026/8/24 13:06:42

揭秘AI编程助手:从LLM原理到IDE集成的完整技术解析

在日常开发中&#xff0c;你是否曾惊叹于 GitHub Copilot 或 Claude Code 能精准预测你的下一行代码&#xff0c;甚至帮你重构整个函数&#xff1f;从最初的好奇到深度依赖&#xff0c;AI 编程助手正悄然改变我们的开发习惯。但你是否想过&#xff0c;这些工具背后究竟是如何“…

作者头像 李华
网站建设 2026/8/24 13:06:35

商标注册用这3个套路命名,通过率能达99%?

商标注册的“玄学”&#xff1a;据说用这3个套路命名&#xff0c;通过率能达99%&#xff1f;“名字想了三天三夜&#xff0c;一查全被注册了”“提交了大半年&#xff0c;等来一纸驳回”——2024年我国商标注册初审驳回率高达46.1%&#xff0c;2025年持续高于40%-1。在有效商标…

作者头像 李华
网站建设 2026/8/24 13:01:35

四维技术全域赋能 一网推重构企业数字营销增长新范式

在人工智能深度渗透营销领域的当下&#xff0c;传统单一搜索优化模式早已无法适配全域流量竞争格局。流量碎片化、获客成本攀升、智能场景曝光缺失、转化链路断裂&#xff0c;成为制约中小企业数字营销增长的核心痛点。深耕全域智能营销领域的一网推&#xff0c;打破技术壁垒&a…

作者头像 李华