综合设计——多源异构数据采集与融合应用综合实践
课程名称 | 2024 数据采集与融合技术 |
---|---|
组名与项目简介 | 组名:都给爷爬 项目目标:为心理疾病患者提供个性化音乐疗愈服务 项目背景:现有音乐软件需会员且推荐机制依赖热门趋势,难以满足心理疾病患者的特殊需求。我们希望通过开发一款免费公益的个性化音乐疗愈系统,帮助患者缓解心理压力、改善情绪,填补市场空白。 技术路线:Python(Django、TensorFlow)、爬虫技术、MySQL |
团队成员 | 102202135、102202146、102202127、102202125、102202139、102202109、102202128 |
项目目标 | 构建一个免费公益音乐疗愈平台,通过个性化推荐帮助心理疾病患者舒缓压力,提升情绪。系统结合患者和医生需求,智能推荐最适合的音乐疗愈方案,提供贴心的心理支持。 |
参考文献 | 1. OpenL3 项目 2. BERT 研究论文 3. 机器学习应用 4. CSDN 相关文章 |
项目代码仓库:Gitee - Music
在线体验:点击这里试玩
🌟 一、项目整体介绍
🔍 1. 项目背景与意义
根据《2022年国民心理健康调查报告》,我国心理健康问题日益严峻,抑郁风险检出率高达10.6%,焦虑风险检出率达到15.8%。随着社会节奏的加快和生活压力的增加,越来越多的人群面临心理健康的挑战,亟需有效的干预和支持手段。音乐疗法作为一种非侵入性且易于接受的辅助治疗方式,已被证明在缓解心理压力、改善情绪状态方面具有显著效果。然而,市面上的大多数音乐软件存在诸多局限:需要付费会员、推荐机制过于依赖热门趋势,缺乏对个体心理状态的精准匹配,难以满足心理疾病患者的特殊需求。
在此背景下,开发一款专门针对心理疾病患者的免费公益音乐疗愈系统显得尤为重要。该系统不仅能够提供个性化的音乐推荐,还能通过科学的算法和多模态数据分析,为用户量身定制疗愈方案,助力改善其心理健康状况。这一项目不仅具有重大的社会意义,还填补了市场在心理健康音乐疗愈领域的空白,能够为广大需要帮助的人群提供切实可行的支持。
🎯 2. 项目目标
本项目旨在构建一个个性化的音乐疗愈平台,专门为心理疾病患者提供定制化的音乐推荐服务,具体目标包括:
🎵 个性化推荐:通过深入分析用户的心理状态和音乐偏好,提供精准匹配的音乐疗愈方案,帮助用户缓解心理压力,改善情绪。
🆓 免费公益:确保平台的所有功能对用户完全免费,消除经济障碍,让更多有需要的心理疾病患者能够轻松获取音乐疗愈资源。
🔗 多模态数据融合:整合音频、文本、图像等多种数据源,提升推荐系统的准确性和有效性,确保推荐结果高度个性化。
🤖 智能推荐模块:利用先进的AI技术,根据用户输入的最近心情和心理状态,自动推荐适合的音乐类型,提供即时的心理支持。
☁️ 云平台部署:将项目部署到华为云平台,确保系统的高可用性和可扩展性,支持更多用户的同时提供稳定的服务。
📋 3. 项目需求分析
当前市面上的音乐软件存在以下主要问题,尤其在满足心理疾病患者的需求方面表现不足:
💰 高额的付费门槛:大多数优质功能需要付费会员,限制了低收入或经济困难患者的使用,无法实现资源的普惠性。
🎧 推荐机制缺乏个性化:现有软件的推荐机制过于依赖热门榜单和通用算法,忽视了用户的个体心理状态和特殊需求,导致推荐结果不够贴合。
🧠 缺乏针对性心理支持:现有音乐平台主要侧重于娱乐和消遣,缺少专门针对心理疗愈的功能模块,无法提供系统性的心理健康支持。
基于以上需求分析,本项目设计了一套专门针对心理疾病患者的个性化音乐疗愈系统,旨在通过科学的推荐算法和多模态数据分析,为用户提供量身定制的音乐治疗方案,满足其特定的心理健康需求。
🛠️ 4. 项目功能模块
本项目系统由多个功能模块组成,涵盖数据采集、特征提取与融合、推荐算法、用户交互等多个方面,具体包括:
🎼 4.1 多模态数据的特征提取和融合
🎧 音频特征提取:使用librosa库提取梅尔频谱图特征、MFCC特征、色度特征和谐波特征,深入分析音乐的音频属性。
📄 文本特征提取:利用BERT模型处理用户输入的文本数据,精准捕捉用户的情感和心理状态。
🖼️ 图像特征提取:采用预训练的ResNet50模型提取图像特征,为用户界面和视觉推荐提供支持。
🔗 特征融合:将多模态特征进行有效融合,生成综合特征向量,并将其存储至数据库,以备后续推荐使用。
🔀 4.2 混合推荐策略
结合基于内容的推荐(Content-based Recommendation)和基于协同过滤的推荐(Collaborative Filtering),综合两者的优势。
通过加权融合方式生成最终的推荐结果,默认配置为内容推荐权重0.6,协同过滤权重0.4,确保推荐的多样性与精准性。
🤖 4.3 智能推荐模块
📝 心理状态输入:用户可输入最近的心情和心理状态,系统通过AI分析这些信息。
🎯 AI推荐:利用讯飞星火认知大模型API,根据用户的心理状态推荐适合的音乐类型,实现精准的音乐疗愈。
📡 4.4 数据采集模块
采用三层架构(基础工具层、歌单爬取层、歌曲爬取层),专门针对音乐心理疗愈推荐系统设计。
爬取古典、治愈、放松等类型的音乐数据,通过API接口获取歌单及歌曲信息,实现音频文件的下载、数据的清洗和持久化存储,确保数据的丰富性和高质量。
🎶 4.5 音乐浏览与管理
🔍 音乐搜索:提供强大的搜索功能,用户可根据关键词快速找到所需音乐。
🔥 热门歌单展示:展示当前流行的歌单,帮助用户发现新的音乐资源。
📈 音乐排行榜:根据播放量和用户反馈生成音乐排行榜,展示受欢迎的音乐作品。
👤 4.6 用户数据管理
❤️ 我的收藏:用户可以收藏喜欢的音乐,方便随时回听,增强用户体验。
📜 播放记录:记录用户的播放历史,辅助个性化推荐,提升推荐系统的精准度。
📊 4.7 数据可视化
提供音乐数据库的基础数据统计,包括总量、用户量、歌曲发布时间、歌曲时长、歌手类型等,通过直观的图表形式展示,帮助项目团队和用户了解平台的运行状况和音乐资源分布。
☁️ 4.8 项目部署模块
🌐 云平台选择:选择华为云作为部署平台,利用其稳定的云服务和高可用性,确保系统能够承载大量用户访问。
🔓 公网访问:通过配置服务器的公网IP,使得其他电脑和用户能够通过互联网访问和使用项目。
5. 项目架构 🚀
5.1 前端层 (Presentation Layer) 🎨
前端负责与用户交互,展示推荐结果和用户行为数据,确保流畅的用户体验。
技术栈:
HTML5 + CSS3:构建网页结构和样式,保证响应式设计与跨平台兼容性。
JavaScript:实现动态交互和数据处理逻辑。
Bootstrap 5:提供快速布局开发,提升界面美观度和一致性。
功能实现:
展示歌曲推荐结果、用户偏好和推荐算法反馈的数据。
用户通过网页提交行为数据(如评分、评论、播放历史)。
通过 Django REST framework API 与后端进行数据交互。
5.2 后端层 (Business Layer) 🛠️
后端主要处理用户请求、管理数据存储和执行推荐算法及多模态特征的提取和融合。
技术栈:
Python Django 框架:用于后端开发,管理数据与业务逻辑。
Django REST framework (DRF):用于实现 API 服务,支持前后端分离架构。
核心模块与功能:
特征提取模块:提取文本(BERT)、图像(ResNet50)、音频(梅尔频谱图、MFCC)等多模态特征,通过并行处理提高效率。
推荐算法模块:结合内容推荐与协同过滤算法,使用加权融合提升推荐的准确性与多样性。
用户偏好建模模块:根据用户行为(收藏、评分、评论、播放历史)建立偏好模型。
特征融合模块:通过 多头注意力机制 和 线性投影 融合音频、图像、文本特征,输出统一的特征向量。
特征存储模块:利用 Django ORM 操作数据库,结合事务机制确保数据一致性,并通过缓存提高特征读取效率。
5.3 数据层 (Data Layer) 💾
数据层负责存储用户行为数据、歌曲信息及提取的多模态特征。
技术栈:
MySQL:用于存储关系型数据,支持复杂查询和事务操作。
数据库结构:
歌曲信息表:存储歌曲的基本信息(如歌名、歌手、专辑等)及多模态特征。
用户行为数据表:记录用户的收藏、评分、评论和播放历史。
特征缓存表:存储提取的音频、图像、文本及融合特征,采用序列化存储以提高读取效率。
5.4 AI 接口 🤖
AI接口包括特征提取与推荐服务。
功能模块:
特征提取接口:
文本特征:基于 BERT 提取。
图像特征:基于 ResNet50 提取。
音频特征:利用自定义音频处理模型提取 梅尔频谱图 和 MFCC 特征。
提供异步和并行处理提高特征提取效率。
推荐接口:
结合用户行为数据与歌曲特征,通过加权融合的内容推荐与协同过滤算法生成最终推荐列表,返回给前端展示。
新增星火大模型:
为了提升推荐系统的智能化水平,新增了 星火大模型(Xinghuo Large Model)。该模型基于深度学习与大规模数据集训练,能够为推荐系统提供更精准的用户行为预测和个性化推荐。星火大模型通过对用户行为的深度理解,优化推荐算法,并能动态调整模型权重,进一步提高推荐的多样性和准确性。
5.5 爬虫模块 🕷️
爬虫模块负责从 千千音乐(https://music.91q.com)抓取歌曲与歌单信息。
功能点:
解析 API 请求,批量爬取歌曲信息。
将爬取的数据存储到数据库中,为推荐算法提供数据支持。
5.6 部署平台 🌐
系统部署在 华为云平台,以保证高可用性和稳定性。
部署特点:
提供弹性伸缩能力,应对高峰访问需求。
配合云数据库与缓存服务,优化系统性能。
二、个人工作部分
1.1 音乐推荐系统的网页设计
在本项目中,网页设计的优化与创新是提升用户体验和个性化程度的核心环节。我主要负责设计并实现网页中文本、图像和交互按键的布局和页面美化,以及音乐推荐系统的可视化交互。以下是具体的工作内容与技术实现细节:
1.1.1 可视化评分系统 (VisualratingSystem)
可视化评分系统旨在直观体现用户评价,用一到五颗“心”量化用户评分,帮助用户更好的表达对一首歌的评价。具体实现步骤如下:
const startList = document.getElementsByClassName('start');
const rateValue = document.getElementById('rateValue');
# 评分系统的函数实现
function addStart(startNum) {
for (var i = 0; i <= startList.length - 1; i++) {
startList[i].classList.remove('active');
}
for (var i = 0; i < startNum; i++) {
startList[i].classList.add('active');
}
rateValue.value = startNum;
}
关键点说明:
重置图标格式:确保每次调用函数时,所有图标都重置为未选中状态。
修改选中图标的格式:根据用户选择的评分值,动态地显示选中的图标。
更新评分值:将用户选择的评分值存储在一个隐藏的输入框中,方便后续处理。
1.1.2 歌曲信息图 (SongInformationChart)
歌曲信息图直观展示网站收录的音乐信息图像,帮助用户了解网站的音乐分类及收录情况,包括音乐类型、发布时间、歌曲时长、歌手类型数据图、歌手词云图。歌曲词云图。
1.1.3 歌曲播放系统 (SongPlayingSystem)
歌曲播放系统实现了在网页上进行歌曲的播放。
oPlay.onclick = function () {
var seii = setInterval(function () {
(i == 360) ? i = 0 : i++;
oPlayEy.style.transform = "rotate(" + i + "deg)";
if (audios.paused) {
clearInterval(seii)
}
}, 30);
if (audios.paused) {
audios.play();
oPlay.style.backgroundImage = "url(/static/image/play.png)";
oPlay.style.width = 32 + "px";
oPlay.style.height = 32 + "px";
} else {
audios.pause();
oPlay.style.backgroundImage = "url(/static/image/pause.png)";
oPlay.style.width = 29 + "px";
oPlay.style.height = 36 + "px";
}
}
关键点说明:
音乐播放:通过点击按钮实现播放与暂停。
状态显示:通过播放按钮的旋转与否显示是否正在播放。
1.2 用户数据界面
在用户数据界面,可以查看收藏歌单,更改密码,更改个人信息和查看历史歌单功能:
1.2.1 收藏歌单
允许用户添加和删除收藏歌曲,用户可根据喜好修改收藏歌单。
1.2.2 更改密码
允许用户更改使用中的密码,以增强账号安全性。
1.2.3 更改个人信息
允许用户修改头像、用户名、个人简介,实现个人账户的个性化。
1.2.4 历史歌单
允许用户查看账号的播放历史及歌曲基本信息。
三、个人项目总结
在过去的几周里,我负责了我们小组个性化音乐推荐项目的网页前端设计,具体负责实现了网站的账户管理和音乐播放的网页设计。通过这次项目,我不仅巩固了前端技术基础,还学会了如何在实际工作中应用最新的前端技术和工具。更重要的是,我深刻体会到了团队协作的重要性,以及根据实际效果调整项目代码的重要性。这次网页前端设计实践是一次宝贵的学习和实践经历。