1. 实时应用场景 & 痛点引入
场景
你在工作、学习或生活中,情绪会随着环境变化而波动。
传统音乐 App 按歌手、曲风、排行榜推荐歌曲,但忽略了用户的实时情绪。
我们希望做到:
- 实时捕捉用户情绪(通过打字速度、语音语调分析)。
- 动态匹配音乐(例如打字快、语气急躁 → 推送舒缓轻音乐)。
- 无缝切换(情绪变化时音乐风格自动调整)。
痛点
1. 推荐不精准:固定标签无法反映真实情绪。
2. 缺乏实时性:不能根据当前状态动态调整。
3. 交互单一:仅依赖用户主动选择,而非被动感知。
4. 情绪识别复杂:需要结合多种信号(文本、语音)。
2. 核心逻辑讲解
系统分为以下几个模块:
1. 情绪检测模块
- 打字速度分析:通过用户输入间隔时间计算速度,过快可能代表焦虑或急躁。
- 语音语调分析(可选):使用
"pyAudioAnalysis" 或
"speechbrain" 提取音调、能量等特征,判断情绪(兴奋、平静、愤怒等)。
2. 情绪-音乐映射规则
- 定义情绪状态(如
"calm",
"anxious",
"happy",
"sad")与音乐风格/节奏的对应关系。
- 例如:
"anxious" → 慢节奏、低音量的轻音乐。
3. 音乐推荐引擎
- 根据情绪状态从音乐库(本地或 API)筛选匹配的歌曲。
- 可使用
"spotipy"(Spotify API)或本地 MP3 列表。
4. 实时反馈闭环
- 持续监测用户行为,动态调整推荐。
3. 代码模块化实现(Python)
项目结构:
emotion_music/
├── main.py # 入口
├── emotion_detector.py # 情绪检测
├── music_recommender.py # 音乐推荐
├── config.json # 情绪-音乐映射配置
└── README.md
config.json
{
"emotion_music_map": {
"calm": ["轻音乐", "钢琴曲", "自然白噪音"],
"anxious": ["舒缓爵士", "慢节奏纯音乐"],
"happy": ["流行舞曲", "欢快摇滚"],
"sad": ["抒情民谣", "柔和R&B"]
}
}
emotion_detector.py
import time
class EmotionDetector:
def __init__(self):
self.typing_speeds = [] # 存储每次按键间隔
self.last_time = None
def record_typing(self):
now = time.time()
if self.last_time is not None:
interval = now - self.last_time
self.typing_speeds.append(interval)
self.last_time = now
def analyze_emotion(self):
if not self.typing_speeds:
return "calm"
avg_interval = sum(self.typing_speeds) / len(self.typing_speeds)
# 简单规则:间隔短 → 急躁
if avg_interval < 0.2:
return "anxious"
elif avg_interval > 1.0:
return "calm"
else:
return "neutral"
def reset(self):
self.typing_speeds.clear()
self.last_time = None
music_recommender.py
import json
import random
class MusicRecommender:
def __init__(self, config_path="config.json"):
with open(config_path, 'r', encoding='utf-8') as f:
self.config = json.load(f)
self.music_map = self.config["emotion_music_map"]
def recommend(self, emotion):
genres = self.music_map.get(emotion, self.music_map["calm"])
return f"推荐音乐类型: {random.choice(genres)}"
main.py
from emotion_detector import EmotionDetector
from music_recommender import MusicRecommender
import sys
def simulate_typing(detector):
print("模拟输入(输入空行结束):")
while True:
line = input()
if not line:
break
detector.record_typing()
print("输入结束,分析情绪...")
def main():
detector = EmotionDetector()
recommender = MusicRecommender()
print("=== 情绪驱动音乐推荐系统 ===")
while True:
print("\n1. 输入文字检测情绪并推荐音乐")
print("2. 退出")
choice = input("选择: ").strip()
if choice == "1":
detector.reset()
simulate_typing(detector)
emotion = detector.analyze_emotion()
print(f"检测到情绪: {emotion}")
recommendation = recommender.recommend(emotion)
print(recommendation)
elif choice == "2":
break
else:
print("无效选择")
if __name__ == "__main__":
main()
4. README.md
# Emotion-Driven Music Recommender
基于用户实时情绪(打字速度、语音语调)推荐匹配音乐的反传统音乐 APP。
## 功能
- 实时情绪检测(打字速度分析)
- 情绪-音乐风格映射
- 动态音乐推荐
- 可扩展语音情绪识别
## 安装
bash
pip install -r requirements.txt
目前仅需标准库,如需语音分析可安装 speechbrain
python main.py
## 使用
- 运行程序,选择输入文字检测情绪。
- 系统根据打字速度判断情绪并推荐音乐类型。
- 可扩展为实时监听键盘或麦克风输入。
5. 使用说明
1. 运行
"main.py"。
2. 选择输入文字检测情绪。
3. 输入任意文字(空行结束),系统分析打字速度。
4. 根据情绪推荐音乐类型。
5. 可扩展为 GUI 或移动端实时监听。
6. 核心知识点卡片
知识点 描述 应用场景
打字速度分析 通过按键间隔判断情绪 实时情绪检测
情绪-音乐映射 定义情绪与音乐风格的对应关系 个性化推荐
模块化设计 分离检测与推荐逻辑 易于扩展
实时反馈 持续监测并调整推荐 动态适应
可扩展性 可加入语音、面部表情识别 多模态情绪分析
7. 总结
这个反传统情绪驱动音乐推荐系统通过实时行为分析替代了传统的标签推荐,让音乐真正跟随用户的心境变化。
- 创新点:行为感知 + 动态推荐 + 情绪闭环
- 技术栈:Python + JSON 配置 + 简单统计模型
- 扩展性:可加入语音情绪识别、面部表情识别、Spotify API 集成
如果你愿意,还可以增加语音情绪识别功能(使用
"speechbrain" 或
"pyAudioAnalysis"),并接入 Spotify API 实现真实歌曲播放。
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!