-1 有用
38 下载

协同过滤音乐推荐

文件列表(压缩包大小 16.45M)

免费

概述

协同过滤音乐推荐 协同过滤 音乐推荐 深度学习 音乐检索

介绍 项目主要工作在Million Song Dataset数据集下基于Pythonscikit-surprise 库实现了基于协同过滤的音乐推荐,还有用 CNN (卷积神经网络) 实现相似音乐推荐。

其中,协同过滤主要基于 Python scikit-surprise 库的 文档(Documents) 写的协同过滤算法, 所采用的数据集的原因,协同过滤出来的指标比较低是系统中协同过滤的结果,采用三个算法输出的结果投票。

另外就是参照下面的参考项目做了基于深度学习的音乐推荐,该项目主要实现相似相似旋律的音乐推荐。其主要通过CNN对音乐音频信息进行特征提取,然后对提取后的特征向量与实现保存好的一些音乐特征向量进行相似度匹配,将相似度最高的几首音乐作为推荐结果。该方法可以用于音乐检索,音乐防抄袭等领域。

本项目特有的部分是,将上述两种方法融合,并写了个web展示效果。由于Million Song Dataset数据集没有歌曲内容信息,本人找了某易云的爬虫代码,建立Million Song Dataset数据集中的音乐id与某易云的音乐 id的映射(期间被封过 IP)。然后将音乐的内容进行时频转换后,送入卷积神经网络,得到歌曲特征向量,通过特征向量的相似度匹配,找出相似的音乐信息。

参考项目

微信小程序版实现

环境说明

  • Python

推荐使用Anaconda作为Python基础环境,推荐前往 清华大学镜像下载 最新版安装包。为避免多个Python环境造成的相互冲突等问题,建议使用Python虚拟环境进行管理。步骤如下:

打开Anconda终端或者cmd,使用命令conda create -n MRC python=3.6.5创建一个名为MRC的Python虚拟环境(MRC即Music Recommendation的缩写); 输入conda activate MRC激活MRC虚拟环境,在此虚拟环境下安装需要的Python第三方库; 使用命令conda install --yes --file requirements.txt批量所需的Python组件依赖(requirements.txt文件在back-end\recommend_service目录下,建议上述步骤可在该目录下进行),对于有些安装失败的可单独使用conda命令或pip命令安装; 至此项目所需的Python环境安装完成。

  • SoX

SoX是开源的音频处理软件,本项目使用该工具处理音频文件。本项目tools目录下已提供Windows安装包,安装教程参考这篇文章,并注意 将SoX添加到环境变量。

  • WAMP

WAMP环境 Windows操作系统Apache服务器MySQL数据库以及PHP语言,可直接使用phpStudy或者appserv等集成环境一键安装。Linux操作系统请自行安装相应的 LAMP环境。

MySQL数据库环境需要进行如下设置,新建名为 music_recommender 的数据库,数据库用户名为 music_system,密码为 music_system,并注意给予相应的数据库访问权限,然后导入 back-end\DataBase 目录下的 music_recommender.sql 文件中的数据。推荐使用开源的数据库管理客户端 HeidiSQL 管理数据库。

  • Node.js

前端开发环境所需依赖,前往官网下载最新稳定版安装包进行安装。安装Node环境后打开终端命令行并且切换到 front-end 目录下,使用命令 npm install 安装前端依赖,出现安装失败问题可尝试 设置淘宝镜像源 或者使用 yarn/cnpm 等方式。

  • 前端开发工具

    • HBuilderX

由于小程序使用uni-app框架开发,故配合使用 HBuilderX 进行开发能够更加便捷的开发和操作,具体开发步骤、调试技巧等参考uni-app文档。

    • 微信开发者工具

运行说明

  • 后台服务端部署

back-end 整个目录移动到 WAMP 环境安装目录的 www 目录下,并将目录重命名为 MRC 以保证和前端的请求 url 相同。

  • 启动推荐服务

使用 Anconda终端或者 命令行 切换到 back-end\recommend_service或者 MRC\recommend_service目录下,运行命令 conda activate MRC 激活 MRC 虚拟环境,激活环境后输入 python recommend_service.py 运行推荐脚本。

  • 运行小程序

使用HBuilderX打开front-end目录,(可选、推荐:将小程序的appID更换为自己的appID),点击工具栏的 运行 → 运行到小程序模拟器 → 微信开发者工具,uni-app框架将自动打包项目在dist\dev目录下生成为原生微信小程序项目mp-weixin,并自动运行 微信开发者工具 打开项目,即可在 微信开发者工具 中查看运行结果。

常见问题

  • SoX报错

对于Windows系统下可能会出现的Unable to load MAD decoder library (libmad) function错误,解决方法可参考 这个问题的答案。此报错只需将 tools 目录下提供的两个库文件,放到 SoX 安装目录下即可。

  • 小程序无内容
  1. 如出现推荐无内容,需确保推荐脚本 recommend_service.py 已正常运行;
  2. 确保front-end项目代码下的 src\config\index.js文件中对应的 url 地址与实际环境的url地址一致,包括端口等;
  3. 如出现搜索无内容,需确保当前计算机正常联网,以便能正常获取网易云音乐的数据。
  • HBuilderX无法自动运行微信开发者工具

若出现无法自动运行微信开发者工具的情况可提前手动运行工具或者参考这个 解决方案。

  • 小程序真机运行无内容

想要在真机环境下运行小程序,可将back-end目录部署到远程服务器或者将本地计算机与手机处在同一局域网内,并在 front-end 项目代码下的 src\config\index.js 文件中对应的 url 地址替换成相应的地址。

技术栈

  • Python Flask + Tensorflow + scikit-surprise
  • PHP/MySQL/HTML/CSS/JQuery

Docker 部署 依赖

  • Docker
  • Docker-compose

运行步骤

  1. clone此项目 git clone git@github.com:MakingL/music_recommendation.git, cd music_recommendation

  2. git fetch --all, 切换到分支 git checkout docker-config

  3. 启动 docker 容器: docker-compose up -d

  4. 导入数据库,PHPMyAdmin 导入 SQL 文件不能超过2M,建议用Navicat导入

    • 浏览器访问 PHPMyAdmin: http://localhost:8080/ (此处的地址 localhost 应根据实际情况而定)
    • root 用户密码: tiger
    • 新建数据库, 注意编码为 utf8mb4
      • 数据库名: music_recommender
      • 用户名: music_system (注意给权限)
      • 密码: music_system
    • 导入数据 vender/DataBase/music_recommender.sql 到该数据库
  5. 在浏览器中访问网站 http://localhost/,预置的登录用户:

    • 用户名: admin, 密码: admin123
    • 用户名: root, 密码: root1234

运行界面

  • 用户登录

  • 协同过滤推荐

  • 播放歌曲

  • CNN推荐结果

相关资源推荐

  1. 提供免费音乐的音乐库网站

  2. 推荐系统研究中的九大数据集

  3. 推荐系统基础知识 --- Github

转载自https://github.com/MakingL/music_recommendation

理工酷提示:

如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈

评论(2)

0/250
大鼻子的萝卜 • 0
下载后的评价
1
2022-11-28 回复
大气的椅子 • 11 对资源的评价
下载后的评价
下载打不开,是无效资源。
2023-12-12 回复