当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/4194366.html

相关文章:

  • 从零构建AI自动化代理:基于my_ai_town项目的核心原理与工程实践
  • 风险清单批注:法务审一审之前的 AI 预筛怎么做
  • 合同译英文:术语表先行,每段后面插译文
  • 揭秘AI编程助手:从LLM原理到IDE集成的完整技术解析
  • 商标注册用这3个套路命名,通过率能达99%?
  • 四维技术全域赋能 一网推重构企业数字营销增长新范式
  • 【单片机毕设案例分享】基于 STM32 的智能家居采光通风一体化控制器设计与开发 基于 STM32 单片机的自动手动切换环境智能调控装置设计(018204)
  • Java面试准备:如何系统梳理知识体系与项目经验
  • 千牛改价系统:isTrusted事件注入,浏览器视为真人操作
  • Git分支管理与贡献追溯:从音乐协作到开源项目的工程实践
  • 【原创】基于AI大模型+SpringBoot+Vue的民宿短租预订平台(设计与实现)
  • Blender MMD Tools 实操指南:把 PMX 模型与 VMD 动画完整搬进 Blender
  • 【非标自动化】2、认识元器件(节流阀)
  • 【非标自动化】2、认识元器件(调压阀)
  • 【中国方言题库|11】HarmonyOS ArkTS 学习统计实战:计算地区学习进度与收藏数量
  • [光学原理与应用-541]:计算机视觉检测激光器腔体污染:系统方案
  • RAG系统从Demo到生产:12大核心痛点与实战解决方案
  • 隐马尔可夫方法
  • (论文速读)Diff2Flow:基于扩散模型对齐的训练流匹配模型
  • 构建企业级AI Agent:LangGraph与MCP协议下的可观测性实践
  • 腾讯元宝流程图怎么导出 ?「AI 导出鸭」一键全搞定,告别格式乱
  • HID按键映射配置可移植工具:从输入校验到离线报告的完整实现
  • 2026年嘉兴做智慧排水监测系统的公司前10名有哪些?
  • 泛微OA E10 EB应用批量导入数据与附件完整指南
  • AI Agent 面试题 355:Function Calling的Schema自动生成和维护
  • 体制内文档自动化:基于本地部署的模板化生成与LLM润色实践
  • Windows HEIC缩略图完整指南:3步让资源管理器显示HEIC照片预览
  • mambaout_kobe.in1k:5分钟跑通轻量图像分类
  • AGV地面整改全流程:从平整度到导航标识的工业自动化基础工程实践
  • 从AI代理到智能工作流:构建自动化编程管道的工程实践