基于深度学习的音乐风格分类系统

基于深度学习的音乐风格分类系统

功能介绍

本系统为 Python + Vue 前后端分离的音乐平台,结合 CNN + LSTM 混合深度学习模型 完成 8 类音乐风格分类,并提供完整的音乐浏览与互动业务。

  • 音乐风格分类:8 类风格(经典老歌、网络歌曲、国语、说唱、国风、流行、嘻哈、古音),基于 Mel 频谱图 + Bi-LSTM 混合模型
  • 音乐库管理:歌曲、歌手、地区、风格分类的增删改查(管理后台 + REST API)
  • 用户端门户 :首页推荐、歌曲/歌手/歌单浏览、在线音频播放(MP3)、MV 视频、评论与收藏
  • 个性化推荐:基于用户收藏与播放记录的协同过滤推荐
  • 热榜统计:喜欢榜、热歌榜、点歌榜、收藏榜 Top 10
  • 管理后台:Django Admin + SimpleUI,支持富文本详情与媒体文件上传(音频/视频分字段、扩展名校验)
  • 接口文档:DRF 标准 CRUD + Swagger 在线文档

目录结构

复制代码
python-deeper-study-music/
├── 项目说明.md                  # 本文件
├── 运行步骤必看/                # 分平台运行指南
│   ├── mac.md
│   └── window.md
│
├── mc_server/                  # Django 后端
│   ├── mac_run.sh              # macOS/Linux 启动脚本
│   ├── window_run.bat          # Windows 启动脚本
│   ├── manage.py
│   ├── requirements.txt        # Python 依赖
│   ├── sql.sql                 # MySQL 初始化脚本(与当前库数据同步)
│   ├── sql_backups/            # sql.sql 自动备份目录
│   ├── scripts/
│   │   ├── download_mp3s.py    # 从酷我 API 批量下载 MP3 并更新库与 sql.sql
│   │   └── sync_sql_from_db.py # 将本地 MySQL 全量导出到 sql.sql
│   ├── venv/                   # Python 虚拟环境(运行后生成)
│   ├── library/                # 项目配置(settings、urls、wsgi)
│   ├── app/                    # 业务应用(models、views、serializer、validators)
│   ├── DjangoUeditor/          # 富文本编辑器
│   ├── simpleui/               # 后台 UI 主题
│   ├── static/                 # 静态资源
│   ├── templates/              # 后台模板
│   └── media/                  # 上传的音频/图片/视频(运行时)
│       └── article_file/
│           └── 2026/06/17/     # 当前 12 首歌曲 MP3 存放目录
│
├── music_class_vue/            # Vue 2 前端
│   ├── package.json
│   ├── vue.config.js           # 开发代理配置
│   ├── public/                 # 静态入口
│   └── src/
│       ├── components/web/     # 用户端页面(首页、歌曲、歌手、歌单等)
│       ├── router/             # 路由
│       ├── store/              # 状态管理
│       └── assets/             # 前端资源
│
└── 文章/                       # 文章文档
    └── 第三章配图/             # 数据处理、模型结构、实验结果配图

媒体文件说明

歌曲表 app_movie 中音频与视频分两个字段存储 ,前端分别绑定 <audio> 与 <video>:

字段 含义 前端 允许格式
fim_url 音频文件 <audio> 播放器 mp3、wav、ogg、m4a、flac
fim_mv 视频 MV <video> 播放器 mp4、webm、mov、avi、mkv

后台上传与 API 写入时会校验扩展名,禁止把 mp4 传到音频字段、或把 mp3 传到视频字段。

当前预置 12 首歌曲的 MP3 路径示例:article_file/2026/06/17/1_APT.mp3 ... 12_李白.mp3;MV 默认使用 article_file/demo.mp4。

注意: 导入 sql.sql 后须保留 mc_server/media/ 目录(尤其 article_file/2026/06/17/ 下的 mp3),否则页面能打开但音频无法播放。


维护脚本

在 mc_server 目录下执行(需已配置 MySQL 且虚拟环境可用):

bash 复制代码
cd mc_server
export PYTHONPATH="$(pwd)"

# 从酷我 API 按歌名搜索并下载全部歌曲 MP3,同步更新数据库与 sql.sql
./venv/bin/python scripts/download_mp3s.py

# 将本地 MySQL 当前数据全量导出到 sql.sql(会先备份到 sql_backups/)
./venv/bin/python scripts/sync_sql_from_db.py

下载脚本依赖外网访问 kw-api.cenguigui.cn,仅供本地开发/演示使用。


运行环境

项目 要求
操作系统 macOS / Linux / Windows
Python 3.10(推荐;兼容 3.8--3.10,Django 3.0 不支持 3.11+)
Node.js 16 LTS(推荐;14+ 可用,17+ 需 OpenSSL 兼容参数)
MySQL 5.7+ 或 8.0
数据库名 sql(字符集 utf8mb4)

后端主要依赖:Django 3.0、Django REST Framework、SimpleUI、PyMySQL、NumPy、Pillow

前端主要依赖:Vue 2、Element UI、Vue Router、Vuex、Axios、ECharts

服务端口(本地开发):

服务 端口
Django 后端 / 管理后台 / Swagger 8001
Vue 用户端 8888

默认账号:

用途 账号 密码
管理后台 admin admin
前台测试用户 cs1 / cs4 / liyuanfang 等 见 sql.sql 中 app_userweb

数据库与同步

  1. 首次部署 :创建库 sql 后导入 mc_server/sql.sql(须加 --default-character-set=utf8mb4,详见 运行步骤必看/)。
  2. 迁移记录 :当前 sql.sql 已包含 app.0002_movie_media_validators(媒体文件类型校验),导入后一般无需 再执行 migrate。
  3. 数据变更后 :运行 scripts/sync_sql_from_db.py,使 sql.sql 与本地 MySQL 保持一致。
  4. 登录态 :前端会在启动时校验 localStorage 中的用户是否仍存在于数据库;若库被重置,需重新登录。

常见问题

问题 解决方式
歌曲页音频无法播放 确认 media/article_file/2026/06/17/ 下 mp3 存在,且 fim_url 指向正确路径
/up_id/ 外键报错 多为本地缓存了已删除的用户 id,刷新页面或清除浏览器 localStorage 后重新登录
后台上传音频被拒绝 检查是否为 mp3 等音频格式,勿上传 mp4 到「音频文件」字段
导入 sql 后中文乱码 使用 mysql ... --default-character-set=utf8mb4 sql < mc_server/sql.sql 重新导入

详细安装与启动步骤见 运行步骤必看/ 目录。

相关推荐
慢慢来不要急12 分钟前
GitHub Copilot Fusion 智能路由模型 · 11-02
人工智能·开发工具
CServer_0113 分钟前
源码交付!有色金属工厂的AI数据底座
人工智能·物联网·制造
慢慢来不要急20 分钟前
GitHub Copilot Fusion 多模型路由,评分逼近 Claude Code 成本减半 · 11-01
人工智能·开发工具
数智人生局24 分钟前
AI 智能问数(ChatBI)架构解析:LLM 语义补全 + SQL 权限注入,让大模型安全地用企业数据
人工智能
敖老师30 分钟前
十年老服务器跑千问 3.5 4B:被硬件逼出来的调参实录
人工智能
田里的水稻43 分钟前
FA_CNN卷积神经网络二十七---填充与步幅PyTorch
人工智能·pytorch·cnn
CyrusYiVPP1 小时前
哪个用户会再来买?RFM模型+plotly画出用户分层,数据分析实战第2期
人工智能·python
AI源码1 小时前
基于深度学习的热带水果检测系统设计与实现
人工智能·深度学习
AGI_Eval1 小时前
AI 3D生成技术:从“可用”走向“可靠”还有多远?
人工智能·3d