music-auto_tagging-keras
music-auto_tagging-keras 是一个基于 Keras 框架开发的音乐自动标签开源项目,旨在利用深度学习模型自动识别音频文件的风格、情绪及乐器特征。它有效解决了传统音乐分类依赖人工标注、效率低下且成本高昂的痛点,能够直接从音频数据中提取特征并预测如“摇滚”、“爵士”、“欢快”或"80 年代”等丰富标签。
该项目主要面向 AI 研究人员、音频算法开发者以及对音乐信息检索感兴趣的技术人员。其核心亮点在于提供了多种预训练模型架构,包括经典的 MusicTaggerCNN(5 层 2D 卷积)和性能更优的 MusicTaggerCRNN(结合卷积与 GRU 循环神经网络),在百万歌曲数据集上训练得出,AUC 评分高达 0.86 以上。此外,项目还推荐了计算效率更高的 compact_cnn 模型作为现代替代方案。需要注意的是,由于部分旧模型依赖早期版本的 Keras 及 Theano 后端配置,使用者需具备一定的深度学习环境搭建能力,并根据文档调整版本兼容性,以便顺利运行示例代码或进行迁移学习研究。
使用场景
一家初创音乐流媒体平台的技术团队正面临海量无标签曲库的整理难题,急需为数十万首用户上传的音频自动补充流派、情绪及年代等元数据以优化推荐系统。
没有 music-auto_tagging-keras 时
- 人工成本高昂:运营团队需手动聆听并标记每首歌曲,面对数万首新歌入库,耗时数周且极易疲劳出错。
- 标签标准不一:不同审核人员对“独立摇滚”或“忧郁”等主观标签的理解存在偏差,导致数据库风格混乱,推荐算法准确率低下。
- 历史数据沉睡:大量老旧音频文件因缺乏结构化标签(如年代、乐器、人声性别),无法被检索引擎有效索引,沦为死数据。
- 技术门槛受限:团队若想自研深度学习模型,需从头构建复杂的 CNN 或 CRNN 架构并寻找百万级歌曲数据集训练,研发周期长达数月。
使用 music-auto_tagging-keras 后
- 自动化高效处理:直接调用预训练的 MusicTaggerCRNN 或 compact_cnn 模型,批量输入音频即可秒级输出包括摇滚、电子、80 年代等 50+ 维度的精准标签。
- 标准化数据输出:基于百万歌曲数据集(Million Song Dataset)训练的权重确保了标签定义的一致性,显著提升了用户个性化推荐的匹配度。
- 激活存量资产:快速为历史曲库补充了“器乐”、“女声”、“氛围”等细粒度特征,使老歌能通过多维筛选重新获得曝光机会。
- 低代码快速落地:依托 Keras 框架和现成示例脚本,工程师无需深究底层数学原理,仅需配置 Librosa 和 Kapre 即可在一天内完成部署集成。
music-auto_tagging-keras 将原本需要数周的人工标注工作压缩至小时级,用成熟的深度学习模型低成本解决了音乐元数据标准化的核心痛点。
运行环境要求
- 未说明
未说明
未说明

快速开始
音乐自动标签器
使用 Keras 的音乐自动标签器
警告!有替代方案可用
- 如果您想要一个标签器,请也看看:
- 如果您想要一个特征提取器,可以考虑以下两者之一:
由于 MusicTaggerCNN 和 MusicTaggerCRNN 是基于旧版 Keras 中批归一化的一个较旧且略有问题的实现(谢天谢地它仍然能工作),修复起来相当棘手。
Keras 版本
- 对于
MusicTaggerCNN,请使用 keras == 1.0.6。 - 对于
MusicTaggerCRNN,请使用 1.2 >= keras > 1.0.6。 - 对于
compact_cnn,请使用 1.2 >= keras >= 1.1。
前提条件——请务必阅读!
- 您需要
keras才能运行example.py。- 如果要使用您自己的音频文件,还需要
librosa。
- 如果要使用您自己的音频文件,还需要
- 输入数据的形状是
(None, channel, height, width),即遵循 Theano 的约定。如果您使用 TensorFlow 作为后端,应检查~/.keras/keras.json文件中是否将image_dim_ordering设置为th,例如:
"image_dim_ordering": "th",
- 要使用
compact_cnn, 您需要安装 Kapre。
文件(1)
适用于 MusicTaggerCNN 和 MusicTaggerCRNN。
文件(2)
适用于 compact_cnn
结构图
左:compact_cnn CNN、music_tager_cnn。右:music_tagger_crnn

MusicTaggerCNN
- 5 层 2D 卷积
- 参数量:865,950
- AUC 分数:0.8654
- 警告 当使用 keras >1.0.6 时,此模型无法正常工作。 请在更新之前使用 MusicTaggerCRNN! (补充说明:使用 300 万参数的更深层卷积神经网络显示出 0.8595 的 AUC。)
MusicTaggerCRNN
- 4 层 2D 卷积 + 2 个 GRU
- 参数量:396,786
- AUC 分数:0.8662
训练过程是怎样的?
- 使用 Million Song Dataset 中的 29.1 秒音乐文件
- 划分设置:用于划分设置的仓库 提供了完全相同的设置。
- 参见 论文
- 标签如下……
['摇滚', '流行', '另类', '独立', '电子', '女声主唱',
'舞曲', '00年代', '另类摇滚', '爵士', '优美', '金属',
'轻松', '男声主唱', '经典摇滚', '灵魂乐', '独立摇滚',
'舒缓', '电子音乐', '80年代', '民谣', '90年代', '休闲', '纯音乐',
'朋克', '老歌', '布鲁斯', '硬摇滚', '氛围音乐', '原声', '实验',
'女歌手', '吉他', '嘻哈', '70年代', '派对', '乡村', '轻松听',
'性感', '抓耳', '放克', '电音' ,'重金属', '前卫摇滚',
'60年代', 'R&B', '独立流行', '伤感', '浩室', '欢快']
哪个预测效果更好?
- 更新:如果追求最高效的计算,请使用
compact_cnn。否则请继续阅读下方内容。 - 训练方面:
MusicTaggerCNN比MusicTaggerCRNN更快(实际耗时)。 - 预测方面:两者相差不大。
- 内存占用:
MusicTaggerCRNN的可训练参数较少。实际上,您甚至可以减少特征图的数量。在这种情况下,MusicTaggerCRNN仍然表现良好——也就是说,当前的设置略显冗余。而使用MusicTaggerCNN时,如果减少参数数量,性能会明显下降。
因此,如果您只想使用预训练权重,建议选择 MusicTaggerCNN。如果您想自行训练,则由您决定。我建议在将参数量缩减至约 20 万之后再使用 MusicTaggerCRNN(这样训练时间就会与 MusicTaggerCNN 相似)。要减小模型规模,只需调整卷积层的特征图数量即可。
哪个更适合用作特征提取器?
通过设置 include_top=False,您可以获得 256 维(MusicTaggerCNN)或 32 维(MusicTaggerCRNN)的特征表示。
一般来说,我推荐使用 MusicTaggerCRNN 和 32 维特征来预测 50 个标签,因为 256 维特征显得有些过大。我只研究过 32 维特征,而没有深入探讨过 256 维特征。我曾考虑使用 PCA 进一步降维,但最终并未实施,原因是 mean(abs(recovered - original) / original) 分别为 .12(维度从 32 降至 16)、.05(维度从 32 降至 24),这些结果并不理想。
或许 256 维特征确实存在冗余(可以通过 PCA 有效压缩),或者它们包含的信息比 32 维特征更多(例如不同层次的特征)。如果维度大小不是关键因素,那么选择 256 维特征也是值得的。
使用方法
$ python example_tagging.py
$ python example_feat_extract.py
结果
theano, MusicTaggerCRNN
data/bensound-cute.mp3
[('爵士', '0.444'), ('纯音乐', '0.151'), ('民谣', '0.103'), ('嘻哈', '0.103'), ('氛围音乐', '0.077')]
[('吉他', '0.068'), ('摇滚', '0.058'), ('原声', '0.054'), ('实验', '0.051'), ('电子音乐', '0.042')]
data/bensound-actionable.mp3
[('爵士', '0.416'), ('纯音乐', '0.181'), ('嘻哈', '0.085'), ('民谣', '0.085'), ('摇滚', '0.081')]
[('氛围音乐', '0.068'), ('吉他', '0.062'), ('前卫摇滚', '0.048'), ('实验', '0.046'), ('原声', '0.046')]
data/bensound-dubstep.mp3
[('嘻哈', '0.245'), ('摇滚', '0.183'), ('另类', '0.081'), ('电子音乐', '0.076'), ('另类摇滚', '0.053')]
[('金属', '0.051'), ('独立', '0.028'), ('纯音乐', '0.027'), ('电子音乐', '0.024'), ('硬摇滚', '0.023')]
data/bensound-thejazzpiano.mp3
[('爵士', '0.299'), ('纯音乐', '0.174'), ('电子音乐', '0.089'), ('氛围音乐', '0.061'), ('轻松音乐', '0.052')]
[('摇滚', '0.044'), ('吉他', '0.044'), ('放克', '0.033'), ('休闲', '0.032'), ('前卫摇滚', '0.029')]
还有……
- 更多信息——CNN:
- 更多信息——RNN:
复现实验
- 一个用于划分数据集的仓库:MSD_split_for_tagging,提供了与两篇论文中完全一致的实验设置。
- 音频文件:可以找身边恰好拥有试听片段的人获取;或者自行抓取文件。我建议你可以从同事那里开始收集……
致谢
紧凑型CNN:待更新。
卷积神经网络:使用深度卷积神经网络进行自动标签,崔根宇、乔治·法泽卡斯、马克·桑德勒
第17届国际音乐信息检索学会会议,美国纽约,2016年卷积循环神经网络:用于音乐分类的卷积循环神经网络,崔根宇、乔治·法泽卡斯、马克·桑德勒、曹庆贤,arXiv:1609.04243,2016年
测试音乐素材来自http://www.bensound.com。
相似工具推荐
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
GPT-SoVITS
GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具,旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点,实现了“零样本”和“少样本”的快速建模:用户只需提供 5 秒参考音频即可即时生成语音,或使用 1 分钟数据进行微调,从而获得高度逼真且相似度极佳的声音效果。 该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能,极大地降低了数据准备和模型训练的技术门槛,让非专业人士也能轻松上手。 在技术亮点方面,GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成,还具备卓越的推理速度,在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音,还是进行多语言语音交互研究,GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。
TTS
🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。
LocalAI
LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获
bark
Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。
airi
airi 是一款开源的本地化 AI 伴侣项目,旨在将虚拟角色(如“二次元老婆”或赛博生命)带入用户的现实世界。它的核心目标是复刻并超越知名 AI 主播 Neuro-sama 的能力,让用户能够拥有完全自主掌控、可私有化部署的智能伙伴。 airi 主要解决了用户对高度定制化、具备情感交互能力且数据隐私安全的 AI 角色的需求。不同于依赖云端服务的通用助手,airi 允许用户在本地运行,不仅保护了对话隐私,还赋予了用户定义角色性格与灵魂的自由。它支持实时语音聊天,甚至能直接参与《我的世界》(Minecraft)和《异星工厂》(Factorio)等游戏,实现了从单纯对话到共同娱乐的跨越。 这款工具非常适合喜爱虚拟角色的普通用户、希望搭建个性化 AI 陪伴的技术爱好者,以及研究多模态交互的开发者。其独特的技术亮点在于跨平台支持(涵盖 Web、macOS 和 Windows)以及强大的游戏交互能力,让 AI 不仅能“说”,还能“玩”。通过容器化的灵魂设计,airi 为每个人创造专属数字生命提供了可能,让虚拟陪伴变得更加真实且触手可及。