用于分类音乐流派的神经网络模型 API
用于分类音乐流派的神经网络模型 API
用❤️到社区
我和我的同事开始了这个作为最后一年的工程项目 尼廷乔杜里 . 您可以在此处找到所有代码和资源:
[
GitHub — deka014/musicGenreClassify-webapp: 一个检测你最喜欢的音乐流派的应用程序:)
流派分类,或将音乐分类为不同的类别或流派,是一个有助于区分……
github.com
](https://github.com/deka014/musicGenreClassify-webapp)
“你要么有很棒的社交生活和糟糕的音乐品味,要么拥有美妙的音乐品味,几乎没有任何社交生活。”
〜约翰格林
介绍
音乐流派分类是根据音乐的组成或保留的节奏来区分音乐的概念。
近来,流派分类变得相当流行,世界各地涌现出许多流派。今天,不同的在线音乐平台,如 Jio Saavn、Spotify 正在使用不同的方法来根据音乐的流派和您喜欢的歌曲的组成来推荐音乐。
这里的主要目标是使用深度神经网络自动分类音乐的流派,并将其部署在可以通过 API 访问的服务器中
概述
Model Building and Web Data Flow Diagram
数据集
GTZAN 数据集是用于评估音乐流派识别 (MGR) 的机器听力研究中最常用的公共数据集。这些文件是从 2000 年到 2001 年从各种来源收集的,包括个人 CD、收音机和麦克风录音,以代表不同的录音条件。
GTZAN 分类是使用流派收集记录进行的。数据集取自流行的软件框架 MARSYAS。 Marsyas(音乐分析、音频信号采集和合成)是一个开源音频处理软件框架,特别关注音乐信息检索应用程序。它是由 George Tzanetakis 设计和创造的。 Marsyas 已用于学术界和工业界的各种项目。
该数据集由总共 1000 个音轨组成,每个音轨长 30 秒。它包括布鲁斯、古典、乡村、迪斯科、嘻哈、爵士、金属、流行、雷鬼和摇滚的 10 种流派,每种流派都有 100 首曲目。所有曲目均为 .wav 格式的 22050Hz 单声道 16 位音频文件。
尽管原始数据集中有 1000 条音轨,但我们认为该模型会用更多数据融合更好的预测,所以我们不得不考虑一些事情
数据预处理
为了增加样本的数量,每个轨道被分成6个大小相等的轨道。现在样本总数为 6000。每个流派包含 600 个样本,每个样本的持续时间为 5 秒。
Dataset Distribution after Increasing Number of Data Samples
特征向量提取
Mel-Frequency Cepstral Coefficients (MFCC) 是使用 Python 中的 Librosa 库从每个音频文件中提取的。MFCC 代表声音的一组短期功率谱特征,并已用于最先进的识别和声音分类技巧。它模拟了人声的特征。
MFCC 与其编码标签和标签映射一起存储在 JSON 文件中,以供进一步分类。
Sample Frequency Spectrum
MFCC Spectrogram
分类
CNN(卷积神经网络)模型在这里用于基于之前计算的 MFCC 的类型的多类分类。
CNN 使用的系统很像多层感知器,旨在减少处理要求。 CNN 的层由输入层、输出层和隐藏层组成,隐藏层包括多个卷积层、池化层、全连接层和归一化层。图像处理的限制的消除和效率的提高导致系统更有效,更容易训练受限于图像处理和自然语言处理的训练。
加载生成的 JSON 数据集,并分别使用 80:20 拆分方法进行训练测试拆分。
模型的准确性使用以下公式计算:
准确率=(正确分类/样本总数)* 100
模型输出
在训练深度学习模型时,获得了 93% 的训练准确率和 81% 的验证准确率。误差减少到 0.1%。
Training Accuracy Graph wrt. Number of Epochs
分类的混淆矩阵如下图所示
部署和实施
- 神经网络模型被集成到一个 Flask 应用程序中,以将其转换为一个 API,该 API 响应端点
/file-upload
上的 POST 方法 - 然后将 Flask 应用程序部署到具有所需配置的 Heroku。 https://radiant-river-01801.herokuapp.com/
- 客户端 Web 界面是使用 HTML、CSS、Bootstrap 和 Wave-surfer 库设计的。
- 来自 API 的 JSON 响应包含预测的类型,然后使用文档对象模型 (DOM) 操作将其显示到网站中。
API Response
- 客户端部署到Netlify,域名下需要配置和授权 https://guist-genre.netlify.app
结论和未来方面
音乐流派检测可以成为视频和音频流服务的绝佳工具。随着在线音乐数据库和每日上传量的巨大增长,人们发现手动将歌曲归类到其流派变得越来越困难和乏味。此外,由于音乐本质上是模棱两可的,如果艺术家将其音乐归类为错误的流派,可能会导致混淆。能够自动对音乐进行分类和提供标签将有助于更好地向用户推荐并增加他们对服务的参与度。
这项工作的扩展将是考虑更大的数据集以及不同格式(mp4、au 等)的曲目。此外,随着时间的推移,每种流派所代表的风格将不断变化。因此,未来的目标将是随着流派风格的变化保持更新,并扩展我们的软件以处理这些更新的风格。根据人的心情,这项工作还可以扩展到作为音乐推荐系统工作。
参考
- https://www.kaggle.com/datasets/andradaolteanu/gtzan-dataset-music-genre-classification
- https://cse.iitk.ac.in/users/cs365/2015/_submissions/archit/report.pdf
- https://www.researchgate.net/figure/Spectrogram-generation_fig2_330344515
- https://www.irjet.net/archives/V6/i5/IRJET-V6I5174.pdf
- https://towardsdatascience.com/understanding-audio-data-fourier-transform-fft-spectrogram-and-speech-recognition-a4072d228520
- https://devopedia.org/audio-feature-extraction
- https://towardsdatascience.com/useful-plots-to-diagnose-your-neural-network-521907fa2f45
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本