☰
情感识别数据集选型指南:文本、语音、面部与多模态的避坑实践
2026/10/14 7:27:50 网站建设 项目流程

情感计算这条线我断断续续跟了几年,从最早拿FER2013跑CNN,到后来做多模态融合,踩过的坑比跑通的模型还多。而所有坑里最折磨人的,从来不是网络结构设计,而是数据本身——标签噪声、模态缺失、文化偏差、授权不清,每一个都能让辛苦训出来的模型在实际场景里直接翻车。这篇就把我在情感识别数据集上积累的经验做一次系统梳理,从文本、语音、面部表情到多模态,把每个数据集的适用边界、标注体系、常见陷阱和选型逻辑讲透。无论你是刚入门想找第一个练手数据集,还是已经在做落地项目需要选型对比,应该都能从中找到直接可用的参考。

1. 先搞清楚情感识别到底在识别什么

很多人一上来就问"哪个数据集最好",这个问题本身就问错了。情感识别不是一个单一任务,它至少包含三个层次的目标,而不同数据集服务的层次完全不同。选型之前如果不把这件事想清楚,后面一定会在标注体系和评价指标上反复返工。

1.1 离散情绪、维度情感与情感极性是三件不同的事

最粗的划分是情感极性,也就是正面、负面、中性三分类。电商评论分析、舆情监控这类场景基本用这一层就够了,标注成本低,一致性也高。往上一层是离散情绪,典型的就是Ekman的六类基本情绪:高兴、悲伤、愤怒、恐惧、惊讶、厌恶。大部分面部表情数据集和不少语音数据集都采用这套体系。再往上一层是维度情感,用效价(Valence)、唤醒度(Arousal)、支配度(Dominance)这样的连续维度来描述情绪状态,VAD三维模型是最常见的。

这三层的差别不是学术洁癖,而是直接决定你标注成本、模型输出形式和评价指标。极性分类用准确率、F1就够了;维度情感必须用CCC(一致性相关系数)或者RMSE,因为它是回归任务。我见过太多人拿离散标签的数据集去训维度回归模型,最后指标怎么调都上不去,根源就在这。

1.2 标注主观性:为什么同一个样本三个人标出三种结果

情感标注和图像分类最大的区别在于,它的"真值"本身就是主观的。一张人脸照片,你觉得是"轻蔑",我觉得是"中性偏负面",这俩都没错。心理学里有个基本结论:情绪标注的标注者间一致性(Inter-Annotator Agreement)通常只有0.6到0.8的Kappa值,远低于物体识别那种0.9以上的水平。

这意味着两件事。第一,不要迷信单一标注,优先选那些做了多标注者投票或者提供了标注分布的数据集。第二,评价指标要留余量,一个在测试集上做到75%准确率的离散情绪模型,可能已经接近这个数据集的天花板了,别拿它跟ImageNet那种95%去比。

提示:拿到一个数据集先看它的标注一致性报告。如果论文里压根没提IAA,要么是标注质量存疑,要么是任务本身太粗(比如只做极性),心里要有数。

1.3 模态决定数据集的采集难度和落地场景

文本、语音、面部表情、生理信号,这四类模态的采集成本和适用场景差异巨大。文本数据最容易拿,社交媒体上爬一爬就有海量数据,但文本情感和真实情绪状态之间隔着一层"表达偏差"——人在网上说的话未必反映真实感受。语音采集需要录音设备,但能捕捉到语调、语速、停顿这些文本丢失的信息。面部表情需要摄像头,受光照、角度、遮挡影响极大。生理信号(脑电、皮电、心率)最接近真实情绪,但需要专业设备,几乎没法大规模采集。

落地场景反过来约束模态选择。做客服质检,语音加文本就够了;做驾驶员疲劳和情绪监控,面部加生理信号更靠谱;做社交舆情,纯文本是唯一现实选择。所以下面我按模态分块来讲数据集,你在哪一块有需求就重点看哪一块。

2. 文本情感数据集:从粗粒度极性到细粒度情绪

文本是情感识别里数据量最大、获取门槛最低的一类。但正因为门槛低,质量参差不齐的问题也最严重。我按标注粒度从粗到细来梳理。

2.1 极性分类数据集:入门首选但别止步于此

英文这边,SST(Stanford Sentiment Treebank)是绕不开的。它基于电影评论,提供了细到短语级别的标注,分SST-2(二分类)和SST-5(五级)两个版本。SST的价值在于它的短语级标注让你能做成分分析,理解模型到底是哪个词在起作用。IMDb影评数据集则是50K条长文本的二分类,适合做基线,但太长、太干净,和真实社交文本差距大。

中文这边,ChnSentiCorp(中文情感挖掘酒店评论语料)是很多人的第一个中文数据集,酒店评论、正负二分类,量不大但干净。更贴近真实场景的是NLPCC和CCF举办的一些评测任务数据,以及微博情感数据,后者带话题、带表情符号、带网络用语,噪声大但真实。

这里有个我踩过的坑:别拿影评数据集训出来的模型直接上社交媒体。影评是长文本、书面语、逻辑完整,微博是短文本、口语、大量反讽。我早期做过一个实验,SST上F1能到0.9的模型,换到微博数据上直接掉到0.7出头,反讽和网络梗是主要失分点。

2.2 细粒度情绪与原因抽取数据集

如果你的任务不只是判断正负,而是要识别具体情绪甚至找出触发情绪的原因,那需要更细的数据集。GoEmotions是Google放出来的一个大规模细粒度数据集,基于Reddit评论,标注了27种情绪加中性,量级在5万条以上。它的优势是情绪类别细、数据真实,劣势是Reddit的语境和中文场景差异大,直接迁移效果有限。

中文细粒度情绪数据集相对稀缺,比较有代表性的是基于微博和电商评论构建的一些情绪多分类数据,通常覆盖高兴、愤怒、悲伤、惊喜等6到8类。原因抽取方面,这类数据集一般会标注"情绪-原因对",也就是一句话里哪个片段导致了某种情绪,做可解释性分析时特别有用。

2.3 文本数据集选型的三个实操判断

第一看领域匹配度。你的业务是电商,就优先找电商评论数据;是金融舆情,就找金融领域标注数据。跨领域迁移在情感任务上损失比想象中大。

第二看标注体系。同样是"愤怒",有的数据集把"不满"和"暴怒"合并成一类,有的分开。合并的训出来的模型分不清强度,分开的数据量又往往不够。要看你下游任务需不需要区分强度。

第三看是否含反讽和隐式情感。显式情感("我很开心")模型很容易学,隐式情感("呵呵,真是太好了")才是难点。如果数据集里几乎没有反讽样本,训出来的模型在真实场景里会非常脆弱。

数据集类型代表标注粒度主要坑点
极性二分类SST-2、IMDb粗领域单一,书面语为主
多级极性SST-5、Yelp中级别边界模糊
细粒度情绪GoEmotions细类别多导致长尾严重
情绪+原因各类原因抽取集最细数据量小,标注成本高

3. 语音情感数据集:被低估的采集难度

语音情感识别(SER)看起来比文本高级,但数据集的坑一点不少。最大的问题是表演式情感和自然情感的鸿沟。

3.1 表演式数据集:干净但失真

RAVDESS、SAVEE、TESS、CREMA-D这几个是SER入门的标配。它们都是请演员在录音棚里"表演"出指定情绪,音质干净、标签准确、类别均衡。RAVDESS有24个演员,覆盖8种情绪;CREMA-D有91个演员,覆盖6种情绪,规模更大、说话人多样性更好。

但问题也在这——演员表演的"愤怒"和真实场景里一个人真生气的语音,在基频、语速、能量分布上都有系统性差异。我做过对比实验,在RAVDESS上训到85%以上准确率的模型,换到真实客服通话数据上,掉到60%以下。表演式数据适合验证模型结构和特征提取方法,但别指望它直接落地。

3.2 自然情感数据集:真实但难标

IEMOCAP是自然情感语音里最有名的,它是双人对话场景,有即兴也有剧本,标注了维度情感和离散类别。它的价值在于对话交互,能研究情绪的动态变化和相互影响。但IEMOCAP只有10个说话人左右,说话人依赖严重,做跨说话人实验时结果波动很大。

MELD和MOSEI是另外两个常被提到的。MELD基于美剧《老友记》,是多模态的(文本+语音+表情),情绪标注覆盖7类。它的优势是场景自然、多模态对齐好,劣势是剧本台词和真实对话仍有距离,而且文化背景偏西方。

中文语音情感数据集相对少,比较有代表性的是CASIA汉语情感语料库,也是表演式的,覆盖6类情绪,4个发音人。规模不大,做基线可以,做深度模型数据量偏紧。

3.3 语音数据集使用的几个关键细节

采样率和时长要统一。不同数据集采样率从8kHz到48kHz都有,混用之前必须重采样。语音情感的有效信息大量集中在低频段,但高频段的摩擦音、气声也带情绪线索,我一般统一到16kHz,兼顾信息量和计算成本。

说话人划分要严格。做训练测试划分时,同一个说话人的样本绝不能同时出现在训练集和测试集,否则模型学的是说话人特征而不是情感特征,指标虚高。这个坑我在早期项目里踩过,测试集准确率比真实场景高了将近20个百分点,排查半天才发现是说话人泄漏。

时长切分策略。情感语音一般按utterance切,但utterance长短差异大。太短的(小于1秒)信息不足,太长的(超过10秒)情绪可能变化。我通常把有效区间控制在2到6秒,超长的做滑窗,超短的做padding或者直接丢弃。

4. 面部表情数据集:从实验室到野外的鸿沟

面部表情是情感识别里视觉线索最直接的一类,也是数据集演化最能体现"实验室到真实世界"这条主线的领域。

4.1 实验室数据集:受控条件下的高精度

CK+(Extended Cohn-Kanade)是经典中的经典,123个被试,标注了7类表情,每个序列从中性到峰值。它的特点是表情夸张、正面、光照均匀,适合做算法验证。但正因为太干净,模型在上面过拟合严重。

JAFFE是日本女性面部表情数据集,只有10个人、213张图,量极小,现在基本只用于方法对比的补充实验。MMI数据集比CK+更丰富,包含正面和侧面、有遮挡的情况,标注也更细,但标注体系复杂,用之前要仔细读文档。

4.2 野外数据集:真实但噪声大

FER2013是很多人做表情识别的第一个数据集,3万多张图,7类表情,来自网络爬取。它的坑非常典型:标签噪声大(很多图人眼都难判断)、分辨率低(48x48灰度)、类别不均衡("厌恶"类样本极少)。我建议把它当基线,但别把它当唯一评价标准。

AffectNet是目前规模最大的之一,超过100万张图,标注了8类表情加维度情感。它的优势是量大、场景多样,劣势是标注靠半自动加人工校验,仍有噪声,而且类别分布极不均衡。用的时候一定要做重采样或者类别加权。

RAF-DB是另一个质量较高的野外数据集,约3万张图,标注了7类基本情绪加11类复合情绪。它的标注质量控制得比较好,是我个人比较推荐的一个。

4.3 面部数据集的预处理和增强经验

人脸对齐是必须的。用MTCNN或者RetinaFace检测关键点,然后做相似变换对齐到标准姿态。不做对齐直接喂原图,模型会花大量容量去学姿态和位置,泛化能力差。

光照归一化。野外数据光照差异极大,我一般做直方图均衡化或者用Retinex类方法做光照补偿。这一步对跨数据集迁移帮助明显。

数据增强要克制。水平翻转、小角度旋转、随机裁剪是安全的。但要注意,水平翻转会改变某些表情的语义吗?基本不会,表情大多左右对称。但颜色抖动要小心,过度改变肤色可能引入噪声。我一般把颜色抖动的幅度控制在很小范围。

跨数据集评估是照妖镜。在FER2013上训,在RAF-DB上测,如果掉得厉害,说明模型学的是数据集特有的偏差。这个评估习惯我从做第二个项目开始就坚持,帮我避开了很多"虚假繁荣"。

5. 多模态情感数据集:融合的代价与价值

单模态的天花板很明显——文本丢失语调,语音丢失表情,表情丢失语境。多模态融合理论上能互补,但数据集层面的挑战也成倍增加。

5.1 CMU-MOSEI与CMU-MOSI

MOSI是早期的多模态情感数据集,视频评论片段,标注了连续情感值,规模较小(2000多个片段)。MOSEI是它的扩展版,规模大了十倍以上,覆盖更多话题和说话人。这两个数据集是多模态情感分析的基准,提供了文本、语音、视觉三种模态的对齐特征。

用它们的时候要注意:模态对齐。三个模态的时间戳要对齐到同一时间轴,做特征拼接或者注意力融合时,对齐误差会直接影响效果。另外,MOSEI的标注是连续值,做分类任务时需要自己设定阈值离散化,阈值怎么定会影响结果,论文里要交代清楚。

5.2 MELD:对话场景的多模态情绪

MELD基于《老友记》,是对话级别的多模态情绪识别数据集,每条utterance标注了7类情绪和3类情感极性。它的特点是对话上下文重要——同一句话在不同对话历史下情绪可能不同。做对话情感分析时,MELD是很好的选择。

坑点在于:说话人身份和对话历史。MELD里同一句话脱离上下文看可能完全判断错情绪,所以模型必须建模对话历史。另外,它是剧本,情绪表达比真实对话更"戏剧化",迁移到真实场景要打折。

5.3 多模态融合的实操建议

早期融合、晚期融合、中期融合各有适用场景。早期融合(特征拼接)简单但对齐要求高;晚期融合(各模态独立预测再投票)鲁棒但对齐要求低;中期融合(注意力、张量融合)效果通常最好但实现复杂。我一般先用晚期融合做基线,再上中期融合。

模态缺失是常态。真实场景里经常只有文本没有语音,或者只有语音没有视频。训练时要做模态dropout,让模型学会在缺失情况下也能工作。这个技巧在多模态落地项目里几乎是必须的。

别忽视单模态基线。我见过不少多模态模型,融合之后效果还不如最好的单模态。原因往往是某个模态质量太差,融合反而引入噪声。所以一定要先跑单模态基线,确认每个模态都有正向贡献再融合。

6. 数据集选型与使用的实战决策框架

讲了这么多数据集,最后落到怎么选、怎么用。我总结了一套自己一直在用的判断流程。

6.1 按任务目标倒推数据集

先明确你的输出是什么。如果是极性分类,优先选标注一致性好、领域匹配的极性数据集。如果是细粒度情绪,接受数据量小、长尾严重的现实,做好类别加权。如果是维度回归,必须选带连续标注的数据集,别拿离散标签硬凑。

再明确你的模态。只有文本就老老实实做文本模型,别为了"多模态"硬凑。有语音和文本的,考虑MOSEI、MELD这类。有视频的,考虑MELD或者自建。

最后明确你的落地场景。实验室验证可以用干净数据集,落地必须用野外数据或者自采数据做验证。这两者之间的差距,往往比模型结构带来的差距大得多。

6.2 数据质量自查清单

拿到任何数据集,我都会过一遍这几个问题:

  • 标注一致性报告有没有?Kappa或Alpha值多少?
  • 类别分布如何?有没有严重长尾?
  • 说话人/被试划分是否明确?能不能做跨被试实验?
  • 有没有提供原始数据还是只有提取好的特征?
  • 授权协议是什么?能不能商用?
  • 采集场景和我的目标场景差多远?

这几个问题里,授权协议最容易被忽视。很多学术数据集只允许研究用途,商用需要单独授权。我见过团队做到一半才发现数据集不能商用,被迫重新采数据,损失巨大。

6.3 从数据集到模型的几个衔接细节

标签格式统一。不同数据集的标签编码方式不同,有的用字符串,有的用数字,有的用one-hot。做多数据集联合训练前,先统一到一套编码。

评价指标对齐。极性分类用F1,维度回归用CCC,多分类用宏平均F1还是加权F1要明确。跨数据集对比时,指标口径不一致会得出错误结论。

划分方式一致。有的数据集提供官方划分,有的要自己划。自己划的时候,随机划分和按说话人划分结果差异很大,论文里要说明。

预处理流水线复用。音频重采样、人脸对齐、文本分词这些预处理,尽量做成可复用的流水线,换数据集时只改配置不改代码。这个工程习惯能省大量时间。

7. 那些没人写在文档里的经验

最后分享几个我在实际项目里攒下来的、文档里基本不会提的点。

数据集的"新鲜度"很重要。情感表达方式会随时间和文化变化,五年前社交媒体上的情感表达和现在差别不小。做落地项目时,尽量用近几年的数据,或者自采最新数据做微调。

小数据集也能有大用处。像JAFFE这种量极小的数据集,单独训模型没意义,但可以用来做few-shot学习、做定性分析、做可视化验证。别因为它小就完全忽略。

标注工具和流程值得投入。如果要做自采数据,标注工具和标注规范的设计比模型选型更影响最终质量。我一般会先标100条做一致性检验,IAA不达标就回去改标注规范,而不是硬标下去。

别追求"全能"数据集。没有一个数据集能同时满足大规模、高质量、多模态、多语言、可商用。认清这一点,按优先级取舍,比到处找"完美数据集"务实得多。

持续跟踪新数据集。这个领域数据集更新很快,尤其是多模态和细粒度方向。我一般每季度扫一遍相关会议和预印本,看看有没有新的高质量数据出来。有时候一个新数据集能直接解决你卡了很久的问题。

情感识别这条线,模型结构这几年进步其实有限,真正拉开差距的是数据质量和数据处理。把数据集这件事吃透,比盲目堆模型结构收益大得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询