Python+Django+sqlite3实现基于内容的音乐推荐系统

设计结构

在这里插入图片描述

数据处理

需要对标签数据清洗以及将音频信号转化为频谱信号。本次数据集采用公开音频数据集GTZAN,其中包含了10种不同风格的音乐,每一种音乐都包含100个音频文件,每个音频文件都是30秒。同时需要将音频信号转化为频谱信号,本论文将转化为梅尔频谱,直接使用pytorch的torchaudio中的函数即可快速转化。

在这里插入图片描述

  • 将音频信号转化为梅尔频谱

    梅尔频谱图是将频率转换为梅尔刻度的频谱图。使用梅尔频谱可以起到压缩数据、数据拥有更多的表征能力,同时有论文表明与传统的傅里叶变化相比,转化为梅尔频谱的样本可以提高训练的准确率。

在这里插入图片描述

神经网络

本项目选用卷积神经网络AlexNet。一个是对于初学者有较好较多的学习点,另一个是网络比较简单,对于这个小样本集有比较良好的效果。

  • AlexNet 的网络结构

在这里插入图片描述

  • 单样本的训练流程
    在这里插入图片描述

音乐推荐系统

使用Django实现推荐系统的功能,提供前后端交互页面。

在这里插入图片描述

在这里插入图片描述

如何使用推荐功能

  • 点击爱心,将会对本首歌进行推荐

在这里插入图片描述

  • 在推荐列表中将展示相似度最高的5首歌曲(具体原理我将在Bilibili描述)

在这里插入图片描述

如何使用本项目

  • 下载数据集

OSS流量要钱,那我就放在阿里云盘了:「GTZAN」https://www.aliyundrive.com/s/dQG715hETzr

  • 训练模型

训练模型的代码为Jupyter Notebook格式,如果大家电脑有GPU那就在自己电脑上训练就可以了,如果没有,推荐大家使用Kaggle。

https://www.kaggle.com/ 每周大概有40多小时白嫖的GPU时长,无需翻墙,自认为比colab好用一些。

根目录下 文件 recommend.ipynb 即为训练代码,训练后生成模型参数文件 best_model_okk.pth

  • 构建Django前后端

根目录下 文件 recommend 即为 Django 项目,记得将GTZAN数据集文件放在目录recommend/music/static/GTZAN下

接下来即可使用pycharm启动项目

  • 项目部署

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/newlw/article/details/125179602