基于类别与维度的语音情感标注
IEMOCAP 与 MSP-Podcast 如何选择标签、量表和每段音频的评分者人数,各语料库报告的一致性,以及如何开展与之相当的听辨研究。
语音情感标注要求听者为录音中听到的情感打标签,形式可以是愤怒、悲伤这样的类别,也可以是效价、唤醒度和支配度的评分。主要语料库每段音频收集二到十个判断,类别标签的机会校正一致性在 0.27 到 0.52 之间。每段音频至少安排五名评分者,并保留每位评分者的标签。
语音情感识别模型从语音情感标签中学习。类别标签从一组固定的情感中指定一种,与情感分类中的离散模型做法相同。维度评分把话语放到连续量表上,通常是效价(从消极到积极)、唤醒度(arousal 或 activation,从平静到兴奋)和支配度(从弱到强)。这三个量表就是 PAD 模型的三条轴。维度评分常用自我评估小人量表(Self-Assessment Manikin)收集。这种量表为每个维度提供一排卡通小人图。
感知情感是听者听到的情感,表达情感(或意图情感)是说话人或演员想要传达的情感。评分者之间的一致性以评分者间信度报告。最常用的系数是 Fleiss' kappa 或 Krippendorff's alpha。
本指南讲解语音情感研究中的设计决策,并以 Potato 作为实例。音频标注把每一种音频任务对应到一个 Potato 标注方案,教程语音情感分类一步步搭建了几种情感标注界面。音频标注工具对比比较了各个工具,评分量表与 Likert 设计讲解适用于任何任务的量表设计。
四个语音情感语料库的标签与评分者
四个广泛使用的英语语料库展示了标签集、评分者人数和共识规则的不同取值。每一行都来自"参考文献"中列出的语料库论文:
| 语料库 | 语音 | 每段评分者 | 可选类别 | 维度 | 共识规则 |
|---|---|---|---|---|---|
| IEMOCAP (Busso et al., 2008) | 10 名演员之间约 12 小时的剧本对话与即兴对话 | 类别 3 人,维度 2 人 | 愤怒、悲伤、快乐、厌恶、恐惧、惊讶、沮丧、兴奋、中性和其他,允许多选 | 效价、唤醒度(activation)和支配度,1-5 分小人量表 | 某一类别得票最多时取多数投票 |
| MSP-Podcast (Busso et al., 2025) | 409 小时的播客话轮,每段 2.75 到 11 秒 | 至少 5 人 | 从愤怒、悲伤、快乐、惊讶、恐惧、厌恶、轻蔑、中性和其他中选一个主要情感,另可从 16 种次要情感中任意选择 | 效价、唤醒度和支配度,1-7 分小人量表 | 主要情感取相对多数投票,各维度取平均分 |
| CREMA-D (Cao et al., 2014) | 91 名演员朗读 12 个句子的 7,442 段音频 | 目标 10 人,平均 9.8 人 | 愤怒、厌恶、恐惧、高兴、悲伤或 "No Emotion"(无情感) | 强度,0-100 滑块 | 二项多数,要求最高票标签在 95% 水平上胜过随机 |
| RAVDESS (Livingstone and Russo, 2018) | 24 名演员的 7,356 段录音 | 10 人 | 中性、平静、高兴、悲伤、愤怒、恐惧、厌恶、惊讶和 "None of these are correct"(以上都不对) | 强度和真实度,1-5 分量表 | 以演员的意图情感为准,并对照评分者的识别准确率加以核验 |
IEMOCAP 的评分者在 74.6% 的话轮上形成了多数,MSP-Podcast 为没有出现相对多数的话轮设了一个"no agreement"(无一致)类。CREMA-D 把没有二项多数的片段作为歧义片段单独搁置。需要每段音频一个标签的研究,应预计有一部分片段最终得不到多数标签。
语音情感标签的已发表一致性
四个语料库报告的情感类别机会校正一致性在 0.27 到 0.52 之间。IEMOCAP 报告全部话轮的 Fleiss' kappa 为 0.27。作者把快乐与兴奋合并,并把恐惧、厌恶和惊讶并入"其他"之后,kappa 升至 0.35。MSP-Podcast 报告主要情感的 kappa 为 0.411,CREMA-D 报告情感标签的 Krippendorff's alpha 为 0.42。RAVDESS 报告纯音频语音的 Fleiss' kappa 在正常强度下为 0.41,在强烈强度下为 0.52。
在两个报告了全部三个维度的语料库中,效价评分的一致性都最高。MSP-Podcast 报告的 Krippendorff's alpha 为效价 0.508、唤醒度 0.441、支配度 0.386。IEMOCAP 报告两名评分者之间的 Cronbach's alpha 为效价 0.809、唤醒度(activation)0.607、支配度 0.608。由于 Cronbach's alpha 和 Krippendorff's alpha 衡量的是不同的东西,比较这两个语料库时应看各维度的高低顺序,而不是数值本身。试标中类别 kappa 接近 0.4 与已发表的语料库相当;试标 kappa 远低于 IEMOCAP 的 0.27,则说明在扩大规模之前应修订标注指南或检查评分者。
感知情感与表达情感
演员和听者常常对一段话语表达的是哪种情感看法不一。在 IEMOCAP 中,六名演员为各自表演的即兴话轮打了标签,演员的标签与听者多数标签的吻合率为 60%,而其他听者的吻合率为 79%。在 CREMA-D 中,单个评分者识别出演员意图情感的比例在纯音频片段上为 40.9%,在纯视觉片段上为 58.2%,在视听片段上为 63.6%。RAVDESS 的评分者在正常强度的纯音频语音中识别出意图情感的比例为 58%,在强烈强度下为 67%。
在写问题之前,先决定标签要测量哪一种构念。做感知情感研究时,问"你听到的是哪种情感?",并把评分者的分布当作答案。做表达情感研究时,保留说话人的意图标签或自我报告,并用听者评分来检验录音是否传达了该情感。CREMA-D 和 RAVDESS 这类表演语料库同时记录意图情感和感知情感,MSP-Podcast 这类自然语料库只记录感知情感。
完整对话还是孤立话语
IEMOCAP 的作者让评分者在上下文中判断话轮,因为作者认为话语的上下文对识别情感很重要。IEMOCAP 的评分者观看每一场录制,并按顺序评估各个话轮。每次判断时,评分者都能看到前面的话轮。MSP-Podcast 把播客切分成单一说话人的话轮,每个话轮作为一个独立条目评分。MSP-Podcast 把时长下限设为 2.75 秒,让评分者有足够的语音可供判断。MSP-Podcast 团队把超过 11 秒的话轮切开,因为情感可能在一个话轮之内发生变化。
在 Potato 中,逐段标签是放在 audio 显示旁边的 radio 或 likert 标注方案,前面的话轮可以放在音频片段上方的文本字段里。对于情感会发生变化的长录音,audio_annotation 标注方案让评分者在波形上标出片段,并为每个片段打标签。在 questions 模式下,同一方案会针对评分者标出的每个片段提出一组问题。
听辨环境与评分者筛选
RAVDESS、CREMA-D 和 MSP-Podcast 都记录了对评分者所听内容或评分者人选的控制措施。RAVDESS 的评分者坐在隔音间里,戴 Sennheiser 耳机,音量固定,评分界面只在音频片段播放完毕后才出现。CREMA-D 的评分者在任务开始前,必须先听出分别以低、中、高音量播放的三个单词,最多可以尝试三次。MSP-Podcast 在一致性检查后剔除了 430 名众包工作者及其 44,968 条标注,随后改用通过筛选测试的受训学生评分者,并每周向他们发送一致性报告。
Potato 支持这些控制措施的线上版本。headphone_check 阶段会筛掉用外放扬声器收听的参与者。训练阶段提供带反馈的练习片段,金标准条目和注意力检查在正式任务中为准确率打分。设置 min_response_time 后,凡是作答时间短到不可能听完片段的注意力检查答案,Potato 都判为不通过。评分者可以来自 Prolific 或大学的 SONA 被试池,具体做法见在 Prolific 和 SONA 上开展众包研究。Potato 只是软件,Potato 团队不提供评分者。
多数投票还是标签分布
多数投票把多个判断合并成一个训练标签,同时丢弃了其中的分歧。IEMOCAP 和 MSP-Podcast 都对类别采用投票,MSP-Podcast 还对维度评分取平均。MSP-Podcast 也发布了每个话轮的逐条标注,作者把用软标签训练列为用途之一。软标签是选择每种情感的评分者所占的比例。一段被五名评分者中的三人听成愤怒、两人听成沮丧的片段,就变成 0.6 愤怒和 0.4 沮丧。
Potato 分别存储每位评分者的答案,投票结果、平均值或分布都可以在收集之后计算。soft_label 标注方案更进一步,要求每位评分者把 100 分分配给各种情感。聚合众包标签更详细地比较了基于投票和基于模型的聚合方法。
位于 /admin/iaa 的一致性报告按标注方案类型选择指标:
radio:百分比一致率、Cohen's kappa、Fleiss' kappa 和名义 Krippendorff's alpha。likert:线性加权 kappa 和二次加权 kappa、Spearman's rho,以及定序 Krippendorff's alpha。slider:Pearson's r、平均绝对误差、均方根误差、定距 Krippendorff's alpha 和 ICC(2,k)。soft_label:在全部情感上汇总的 Krippendorff's alpha,以及每种情感单独计算的 Krippendorff's alpha。
已发表语料库中每段音频的评分者人数
已发表的语料库每段音频使用两到十名评分者。IEMOCAP 的三名类别评分者和两名维度评分者处于低端,CREMA-D 和 RAVDESS 为每段音频收集了 10 个判断。MSP-Podcast 至少五名评分者的设置足以进行相对多数投票,也能为软标签提供五票的分布。把额外评分者的费用花在有歧义的片段上,而不是每个片段都加人;功效计算见需要多少标注者?。
在 Potato 中搭建语音情感任务
IEMOCAP 展示条目概述了这个语料库。下面的配置把 IEMOCAP 的标签集改用于纯音频片段,在 IEMOCAP 的五点量表上评定三个维度,并以文本形式显示前面的话轮。上下文字段沿用了 IEMOCAP 在上下文中评分的设计。每段音频安排五名评分者,与 MSP-Podcast 的下限一致,耳机检查和练习片段在第一个正式条目之前运行:
annotation_task_name: "Speech emotion, one utterance at a time"
task_dir: "."
data_files:
- "data/utterances.jsonl"
item_properties:
id_key: id
text_key: audio_url
output_annotation_dir: "annotation_output/"
instance_display:
fields:
- key: context
type: text
label: "Earlier in the conversation"
- key: audio_url
type: audio
label: "Utterance to rate"
display_options:
show_waveform: true
annotation_schemes:
- annotation_type: radio
name: emotion
description: "Which emotion do you hear in this utterance?"
labels: [neutral, happiness, excitement, sadness, anger, frustration, fear, surprise, disgust, other]
label_requirement: {required: true}
- annotation_type: likert
name: valence
description: "How negative or positive does the speaker sound?"
size: 5
min_label: "Very negative"
max_label: "Very positive"
- annotation_type: likert
name: arousal
description: "How calm or excited does the speaker sound?"
size: 5
min_label: "Very calm"
max_label: "Very excited"
- annotation_type: likert
name: dominance
description: "How weak or strong does the speaker sound?"
size: 5
min_label: "Very weak"
max_label: "Very strong"
num_annotators_per_item: 5
training:
enabled: true
data_file: "data/training.json"
allow_retry: true
phases:
order: [headphones, training, annotation]
headphones:
type: headphone_check
test: huggins
training: {type: training, title: "Practice clips"}
annotation: {type: annotation}data/utterances.jsonl 的每一行包含一个 id、一个 audio_url,以及一个保存前面话轮的 context 字符串。若要像 MSP-Podcast 那样把每个话轮作为独立条目评分,就从 instance_display 中删去 context 字段。data/training.json 列出练习片段,每个片段带一个 correct_answers 条目和一个 explanation。用 potato start config.yaml 启动服务器,并在一批试标之后查看 /admin/iaa,看一致性是否接近已发表的范围。
常见问题
什么是语音情感标注?
语音情感标注是为录制的语音标注听者听到的情感,形式可以是类别,可以是效价、唤醒度和支配度的评分,也可以两者兼有。IEMOCAP 和 MSP-Podcast 两种标签都收集。这些标签用于训练和评估语音情感识别模型。已发表的语料库每段音频收集二到十个判断。
音频和语音标注中使用哪些情感标签?
IEMOCAP、MSP-Podcast、CREMA-D 和 RAVDESS 都使用一份简短的基本情感列表,外加一个中性或无情感选项。IEMOCAP 在愤怒、悲伤、快乐、厌恶、恐惧和惊讶之外增加了沮丧和兴奋,MSP-Podcast 在主要情感列表中增加了轻蔑,并提供 16 种次要情感。效价、唤醒度和支配度的维度标签通常与类别并列。评分者在五点或七点小人量表上为每个维度打分。
如何搭建让评分者听语音片段并标注情感的任务?
在音频播放器中显示每个片段,旁边放一个类别问题,并可为每个维度加一个评分量表,然后为每个片段分配至少五名评分者。在正式任务之前,用耳机检查和练习片段筛选评分者。保留每位评分者的答案,在收集完成后计算多数标签、标签分布,或两者都算。
延伸阅读
- 音频标注:在 Potato 中搭建每一种音频任务
- 语音情感分类:分步教程
- 用 Potato 做音频与语音标注
- 评分量表与 Likert 设计
- 标注者间一致性详解
- 聚合众包标签
- 音频标注工具对比
参考文献
Busso, C., Bulut, M., Lee, C.-C., Kazemzadeh, A., Mower, E., Kim, S., Chang, J. N., Lee, S., and Narayanan, S. S. (2008). IEMOCAP: Interactive Emotional Dyadic Motion Capture Database. Language Resources and Evaluation, 42(4), 335-359. https://doi.org/10.1007/s10579-008-9076-6
Busso, C., Lotfian, R., Sridhar, K., Salman, A. N., Lin, W.-C., Goncalves, L., Parthasarathy, S., Naini, A. R., Leem, S.-G., Martinez-Lucas, L., Chou, H.-C., and Mote, P. (2025). The MSP-Podcast Corpus. arXiv 2509.09791. https://doi.org/10.48550/arXiv.2509.09791
Cao, H., Cooper, D. G., Keutmann, M. K., Gur, R. C., Nenkova, A., and Verma, R. (2014). CREMA-D: Crowd-Sourced Emotional Multimodal Actors Dataset. IEEE Transactions on Affective Computing, 5(4), 377-390. https://doi.org/10.1109/TAFFC.2014.2336244
Livingstone, S. R., and Russo, F. A. (2018). The Ryerson Audio-Visual Database of Emotional Speech and Song (RAVDESS): A Dynamic, Multimodal Set of Facial and Vocal Expressions in North American English. PLOS ONE, 13(5), e0196391. https://doi.org/10.1371/journal.pone.0196391