音乐标签分类体系

从信号到歌单
四维坐标如何压缩一切

音乐标签分类的本质是降维映射——把高维音频信号压缩成人类可用的离散标签。核心只有一句话:四个独立维度交叉产生所有标签。

复合标签 = 情绪 ∩ 风格 ∩ 场景 ∩ 音频特征约束
scroll
01 — 底层原理

为什么标签能组合

每一层都是上一层的信息压缩——从连续信号到离散标签,最终变成「打开就能听」的产品。

INFORMATION COMPRESSION PIPELINE LAYER 1 音频特征层 连续值 · 机器计算 LAYER 2 基础标签层 离散值 · 人工/模型标注 LAYER 3 复合标签层 规则推断 · 用户直觉 LAYER 4 场景歌单层 面向用户 · 打开即听 降维 聚合 包装 WHAT HAPPENS AT EACH LAYER 频谱 · 节奏 · 调性 · 配器 保留物理事实,不丢信息 情绪 · 风格 · 场景 · 特征值 压缩到人类可理解的类别 深夜emo · 燃 · 治愈 · 蹦迪 进一步压缩到直觉能懂的概念 深夜独处 · 通勤路上 · 跑步 最终产品形态 离散标签的致命问题:标签数量爆炸 → 解决方案是分层 如果每个维度独立设标签,排列组合会产生数千个类别,不可维护
02 — 维度 A:情绪

能量 × 效价:二维情绪平面

情绪不是一维的「开心/难过」,而是基于 Thayer 情感模型的二维平面——能量轴与效价轴的交叉。

低效价 ← 效 价 → 高效价 低能量 ← 能 量 → 高能量 高能量 × 低效价 高能量 × 高效价 低能量 × 低效价 低能量 × 高效价 焦虑 激昂 狂欢 活力 欢快 自信 热血励志 甜蜜 浪漫 治愈 放松 平静 孤独 悲伤 苦情 抑郁 思念 16 CORE EMOTION TAGS
03 — 维度 B:风格

曲风:描述的是「怎么编的」

风格是音乐的结构特征,不是感觉——它描述的是编曲方式、乐器选择和节奏框架。

🎤
流行
主歌-副歌结构 · 4/4拍 · 中等BPM
🎸
摇滚
失真吉他 · 强鼓点 · 高能量
🪕
民谣
原声吉他/口琴 · 叙事歌词 · 中低BPM
🎹
电子
合成器主导 · 四拍底鼓 · 高BPM
🎙️
说唱/嘻哈
切分节奏 · 人声密集 · 节奏驱动
🎵
R&B
切分旋律 · 转音 · 中低BPM
🎷
爵士
即兴演奏 · 复杂和声 · 摇摆节奏
🎻
古典
管弦配器 · 无歌词为主 · 动态范围大
🏮
古风/国风
中国传统乐器 · 五声音阶
🎺
蓝调
12小节进行 · 蓝音 · 滑音吉他
🤘
金属
极高增益 · 双踩鼓 · 快速riff
🌴
雷鬼
offbeat吉他 · 重低音 · 慢摇
🌊
新世纪
环境音效 · 长pad · 无结构感
🤠
乡村
班卓琴/小提琴 · 简单和弦 · 叙事
✨
二次元/ACG
动画配乐风格 · 高能量居多
04 — 维度 C:场景

使用情境:什么时候听

场景维度回答的是「什么时候听」,本质上是对音频特征的一种语义化包装。

🏃
运动/健身
高BPM(>125) · 高能量 · 强节拍
📚
学习/工作
中低BPM(70-100) · 低能量 · 无歌词优先
🚗
开车
中高BPM(90-130) · 中高能量 · 节奏稳定
🎉
派对
高BPM(>120) · 高能量 · 电子/说唱
😴
睡眠
低BPM(<70) · 极低能量 · 纯音乐/环境音
🧘
冥想
BPM 50-70 · 极低能量 · 新世纪/纯音乐
💕
约会/婚礼
中BPM(80-110) · 浪漫/甜蜜 · 流行/R&B
🏃‍♂️
跑步
高BPM(140-180) · 高能量 · 节拍精准
🚇
通勤/地铁
中BPM(90-120) · 中能量 · 流行为主
⛺
露营/旅行
中低BPM · 民谣/轻电子 · 放松
05 — 维度 D:音频特征

机器可算的物理属性

这一层是所有标签的物理锚点。「快乐」实际上对应 valence>0.6 + energy>0.5 + major_key,不是凭空定的。

特征 含义 取值范围 可视化
BPM 每分钟节拍数 40 — 200
40
200
Energy 能量强度 0.0 — 1.0
0
1.0
Valence 效价(积极/消极) 0.0 — 1.0
0
1.0
Danceability 舞曲性 0.0 — 1.0
0
1.0
Acousticness 原声程度 0.0 — 1.0
0
1.0
Instrumentalness 纯音乐概率 0.0 — 1.0
0
1.0
Loudness 响度 -60 — 0 dB
-60
0
Key / Mode 调性 / 大小调 大调=积极 · 小调=消极 离散值,非连续
06 — 复合标签规则

从四维到最终标签:完整规则表

每个复合标签都是四维空间中的一个子区域,不是树状拼接,不是简单叠加。

# 复合标签 情绪约束 风格约束 场景约束 音频约束 典型特征
1 深夜emo A 孤独/悲伤/抑郁 B 流行/民谣/R&B C 深夜独处 BPM<85 energy<0.4 小调 慢歌 · 钢琴/吉他 · 伤感歌词
2 治愈 A 治愈/平静/放松 B 流行/民谣/新世纪 C 通用 BPM 70-100 valence>0.5 温暖旋律 · 积极歌词 · 中等编曲
3 热血 A 活力/热血励志/自信 B 流行/摇滚 C 运动 BPM>120 energy>0.7 大调 副歌高能 · 鼓点强烈
4 燃 A 狂欢/热血励志 B 摇滚/说唱/电子/金属 C 派对/运动 BPM>130 energy>0.8 loud>-8dB 失真/合成器 · 嘶吼/快嘴
5 怀旧 A 思念/悲伤 B 民谣/流行 C 通用 BPM 70-100 acoustic>0.5 叙事歌词 · 原声乐器 · 年代感
6 放松 A 放松/平静 B 通用(排除重型) C 休息/通勤 BPM 60-95 energy<0.5 轻编曲 · 柔和人声
7 失恋 A 悲伤/苦情/孤独 B 流行/R&B C 通用 BPM<90 小调 valence<0.3 情歌 · 钢琴弦乐为主
8 励志 A 热血励志/活力/自信 B 流行/摇滚 C 通用 大调 · 能量差>0.2(主→副) 主歌低能→副歌爆发
9 安静 A 平静/放松 B 古典/民谣/纯音乐/新世纪 C 学习/冥想 BPM<75 instru>0.5 极简编曲 · 无歌词
10 vibe/氛围 A 放松/平静 B 电子/新世纪/纯音乐 C 通勤/休息 BPM 80-110 长混响 lo-fi/ambient · 循环结构
11 催眠/助眠 A 平静 B 纯音乐/新世纪/电子 C 睡眠 BPM 50-70 energy<0.2 instru>0.8 无节奏感 · 白噪声/自然音
12 甜歌 A 甜蜜/浪漫 B 流行/R&B C 约会 BPM 80-110 大调 valence>0.7 轻快旋律 · 甜蜜歌词
13 蹦迪 A 狂欢/活力 B 电子/说唱 C 派对 BPM>125 dance>0.8 四拍底鼓 · drop段落
14 车载 A 活力/放松 B 流行/电子/说唱 C 开车 BPM 90-130 energy 0.4-0.8 节奏稳定 · 不突兀
15 跑步 A 活力/自信 B 电子/说唱/流行 C 跑步 BPM 140-180 dance>0.6 节拍精准 · 可踩点
16 古风/国风 A 通用 B 古风/国风 C 通用 五声音阶 · 传统乐器>30% 箫/古筝/琵琶/二胡
07 — 数学本质

推断规则不是叠加,是交集运算

核心公式

复合标签 = ⋂( 情绪 ∈ S情绪,  风格 ∈ S风格,  场景 ∈ S场景,  音频 ∈ R音频 )

其中 S 是允许的标签集合(或关系),R 是音频特征的取值范围(区间约束)。每个复合标签都是四维空间中的一个子区域,不是一个点。

三条关键性质

  • 不满足任一维度则不成立 — 一首歌 BPM=60 永远不会被归入「燃」,即使歌词再热血
  • 同标签内歌曲可以完全不同 — 「治愈」可以是民谣吉他弹唱,也可以是电子 ambient,因为它们共享情绪和音频特征,但风格不同
  • 标签间有包含/排斥关系 — 「燃」⊂「热血」(燃是热血的子集),「深夜emo」∩「蹦迪」= ∅(互斥)
SET RELATIONSHIPS BETWEEN COMPOSITE TAGS 热血 燃 ⊂ 热血 深夜emo 蹦迪 ∅ 互斥 ⊂ = SUBSET    ∩ = ∅ = MUTUALLY EXCLUSIVE 治愈
08 — 验证方法

用数据反向检验规则是否成立

用规则去反推汽水音乐/网易云的实际歌单,检验吻合度。如果不吻合,说明约束边界需要调参。

验证项 1
「深夜emo」歌单平均BPM
预期:< 85
验证项 2
「燃」歌单摇滚/说唱占比
预期:> 70%
验证项 3
「学习」歌单有歌词歌曲占比
预期:< 30%
验证项 4
「跑步」歌单BPM分布
预期:集中在 140-180
验证项 5
「失恋」歌单小调歌曲占比
预期:> 80%

如果以上全部吻合,说明规则成立。如果不吻合,说明某个维度的约束边界需要调参。

—— 验证即校准

核心就一句话

四个独立维度交叉产生所有标签,
复合标签是四维空间中的子区域,
不是树状拼接。

COMPOSITE_TAG = EMOTION ∩ GENRE ∩ SCENE ∩ AUDIO_FEATURES