前两篇主要聊的是熙瑾会悟的数据集建设。从原始数据采集、数据清洗,到结合会议、访谈场景制定标注规范,基本把模型训练前的数据准备工作梳理了一遍。
数据准备完成后,真正影响最终效果的,就是模型选择。
这个阶段也是整个项目迭代时间最长的一部分。刚开始,我和很多团队一样,优先选择了业界比较成熟的文本分类模型,希望先快速验证整个流程是否可行。模型能够正常训练,离线测试指标也还不错,但真正放到实际会议数据中以后,问题逐渐暴露出来。
原因很简单,会议中的情感表达远比公开数据集复杂。
很多情绪并不会直接体现在字面上,而是隐藏在上下文、说话方式甚至语音细节里。如果只依赖文本,很容易出现误判。因此,熙瑾会悟做出改变后,这一阶段最大的变化,并不是不断更换模型,而是逐步从单模态文本识别转向文本与语音联合建模。
一、模型演进思路
整个情感识别模块大致经历了几个阶段:
文本分类`
` │`
` ▼`
`BERT Baseline`
` │`
` ▼`
`RoBERTa 优化`
` │`
` ▼`
`MacBERT 中文优化`
` │`
` ▼`
`Whisper + Wav2Vec2`
` │`
` ▼`
`文本+语音多模态融合`
`
前半部分主要解决文本理解能力的问题,后半部分则开始利用语音中的情绪信息,进一步提升模型的稳定性。
最终目标并不是追求某一个模型的最高准确率,而是构建一套能够适应真实会议场景的情感识别系统。

二、BERT:最合适的起点
项目初期,我们首先选择了 BERT 作为基线模型。
输入的是离线转写后的文本,输出包括积极、中性、消极以及风险等情绪类别。
选择 BERT 的原因并不复杂。一方面,它生态成熟,训练流程比较完善;另一方面,双向编码能够结合上下文理解一句话的整体含义,比传统文本分类模型效果更稳定。
例如下面这句话:
这个方案可以,不过风险还是比较大。
如果只关注前半句,很容易判断为积极;结合后半句之后,整体情绪实际上更接近谨慎甚至风险。
BERT 在这类上下文理解任务中,比传统模型有明显优势。
不过,当训练数据逐渐增加以后,它的问题也开始显现。
首先,对会议中的口语表达适应能力一般,很多省略句、口头语理解得并不好;其次,对于隐性否定和委婉表达,经常会出现误判。另外,面对几百字甚至上千字的会议内容时,模型对长距离上下文的利用能力也开始下降。
因此,BERT 更适合作为整个项目的 Baseline,而不是最终方案。
三、RoBERTa:进一步提升上下文理解能力
在完成第一阶段验证后,我们尝试引入了 RoBERTa。
RoBERTa 可以理解为 BERT 的进一步优化版本,通过调整预训练方式和扩大训练规模,使模型能够学习到更丰富的语义信息。
在会议场景中,它最大的提升主要体现在上下文理解能力。
例如:
这个方案我们可以先做个试点,再观察一下效果。
对于人工来说,这句话其实表达的是一种保留意见,并不是完全认可。
相比 BERT,RoBERTa 更容易捕捉到"先试点""再观察"这种相对谨慎的表达方式,因此整体识别效果有所提升。
不过,它依然属于通用语言模型,对于中文会议中的口语化表达,还没有达到理想状态。
四、MacBERT:中文场景效果最稳定
后续,我们将文本模型替换为 MacBERT。
MacBERT 是针对中文特点进行优化的预训练模型,相比 BERT,更符合中文语言习惯,对于口语表达、错别字以及不完整句子的适应能力更强。
这一点在会议数据中表现得尤为明显。
例如:
这个事情我们后面再统一处理。
如果脱离上下文,这句话很容易被识别为中性。
但结合实际会议语境,它很多时候意味着问题暂时搁置,甚至存在一定风险。
在这一类隐含情绪识别任务中,MacBERT 的表现明显优于前两个模型。
项目中的测试结果如下:
|---------|---------|
| 模型 | 准确率 |
| BERT | 84.2% |
| RoBERTa | 86.7% |
| MacBERT | 89.5% |
虽然准确率提升只有几个百分点,但在线上业务中,误判率下降已经十分明显,因此后续版本基本都以 MacBERT 作为文本编码器。
五、Whisper:情感识别的第一道入口
很多人讨论情感识别时,关注点都放在分类模型上,但对于离线会议系统来说,真正的数据入口其实是语音识别。
如果语音转写质量不足,后续模型再优秀,也很难得到可靠结果。
项目中,我们采用 Whisper 完成离线语音转写。
它对会议录音、多人讨论以及一定程度的背景噪声都有不错的适应能力,因此整体识别准确率比较稳定。
不过,在真实业务中,我们也遇到了一些比较典型的问题,例如:
重复语气词被完整保留下来;
长停顿容易产生重复词;
多人同时发言时,容易出现内容交叉。
例如原始转写结果可能是:
嗯......这个......这个我们可以......可以试一下。
如果这些内容直接送入情感分类模型,很容易影响最终判断。
因此,我们在 Whisper 后增加了一层文本清洗流程,包括重复词过滤、口语词归一化、停顿处理等操作,减少无效信息对模型的影响。
六、Wav2Vec2:补充文本无法表达的信息
文本能够表达"说了什么",但无法表达"怎么说"。
而会议中的很多情绪,恰恰来自语速、音调、停顿以及重音。
例如同一句:
可以啊。
不同语气表达出来,可能代表认可,也可能表示无奈,甚至带有讽刺意味。
这些信息在转写文本中几乎都会丢失。
因此,我们引入 Wav2Vec2 提取语音声学特征,将语速、音高、能量变化等信息编码为向量,与文本特征共同参与情感判断。
它并不是替代 Whisper,而是作为音频特征提取模块,补充文本无法覆盖的信息。
经过实际测试,对于情绪起伏较大的会议片段,加入声学特征后,模型判断会更加稳定。

七、多模态融合才是真正的解决方案
当文本模型和语音模型分别完成之后,我们开始尝试多模态融合。
一开始测试过比较简单的 Early Fusion,直接拼接文本向量和音频向量,虽然实现方便,但对噪声比较敏感。
后来又尝试了 Late Fusion,让文本模型和语音模型分别预测,再按照固定权重进行融合,稳定性有所提升,但两种信息之间缺少更深层次的关联。
最终采用的是基于 Attention 的融合方式。
模型会根据当前样本动态调整不同模态的重要程度。
例如,当文本表达比较明确时,模型更依赖文本特征;而当文本内容比较普通,但语气变化明显时,则会提高音频特征的权重。
这种动态融合方式比固定权重更加灵活,也更符合真实会议场景。
项目测试结果如下:
|-------------|--------------|
| 模型 | F1 Score |
| BERT(文本) | 0.84 |
| MacBERT(文本) | 0.89 |
| 文本+语音多模态 | 0.93 |
可以看到,多模态融合带来的提升已经超过了单纯更换文本模型。

八、总结
整个情感识别模块迭代下来,我最大的感受是,模型本身并不是决定效果的唯一因素。
BERT、RoBERTa、MacBERT 都能够解决文本理解的问题,但会议中的情绪信息并不仅存在于文字里。语速、停顿、重音、语调这些语音特征,同样包含着大量有效信息。
因此,后续系统逐渐形成了比较稳定的分工:
Whisper 负责完成离线语音转写;
MacBERT 负责理解文本语义;
Wav2Vec2 提取声学情绪特征;
融合模块 综合文本和语音信息完成最终判断。

回过头来看,真正提升效果的并不是换了某一个模型,而是让不同模态的信息能够互相补充。对于会议、访谈这类真实业务场景来说,多模态融合已经比单纯依赖文本模型更符合实际需求,也是后续持续优化的主要方向。