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

设计结构

Python+Django+sqlite3实现基于内容的音乐推荐系统_第1张图片

数据处理

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

Python+Django+sqlite3实现基于内容的音乐推荐系统_第2张图片

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

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

Python+Django+sqlite3实现基于内容的音乐推荐系统_第3张图片

神经网络

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

  • AlexNet 的网络结构

Python+Django+sqlite3实现基于内容的音乐推荐系统_第4张图片

  • 单样本的训练流程
    Python+Django+sqlite3实现基于内容的音乐推荐系统_第5张图片

音乐推荐系统

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

Python+Django+sqlite3实现基于内容的音乐推荐系统_第6张图片

Python+Django+sqlite3实现基于内容的音乐推荐系统_第7张图片

如何使用推荐功能

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

Python+Django+sqlite3实现基于内容的音乐推荐系统_第8张图片

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

Python+Django+sqlite3实现基于内容的音乐推荐系统_第9张图片

如何使用本项目

  • 下载数据集

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启动项目

  • 项目部署

Python+Django+sqlite3实现基于内容的音乐推荐系统_第10张图片

你可能感兴趣的:(python,人工智能,Django,基于内容的推荐系统,音乐推荐系统)