一句话里混杂的多种情绪,用语音读出来

能否同时识别出一段韩语语音中混合的多种情绪?本文比较了基于三种语音特征构建的7个模型,总结出最佳组合以及在实际应用中的局限。

本文译自韩文原文。 韩文原文

一条客服通话录音里,可能同时含有愤怒的声音和疲惫的声音。如果情绪识别模型只给这条录音贴上”愤怒”一个标签,同时存在的悲伤就不会留在记录里。迄今为止,语音情感识别研究大多采用在多种情绪中只选定一种的方式。然而在真实场景中,多种情绪混合出现的情况很常见。

本文讨论的问题只有一个:能否同时识别出一段韩语语音中并存的多种情绪?

下面来读一篇回答了这个问题的论文。

  • 标题:Multi-Label Emotion Recognition of Korean Speech Data Using Deep Fusion Models
  • 期刊:Applied Sciences
  • 年份:2024
  • DOI:10.3390/app14177604

论文从韩语语音中提取三种语音特征,并为每种特征各建立一个深度学习模型。接着,把这些模型两个或三个一组地合并,构建深度融合模型(deep fusion model),并比较所有模型的性能。语音情感识别(Speech Emotion Recognition, SER)是从录制的语音中自动识别情绪的技术。多类分类(multi-class classification)只确定一种情绪。多标签分类(multi-label classification)既能处理只有一种情绪的情形,也能处理多种情绪混合的情形。

本文使用的核心术语如下。

  • 对数梅尔频谱图(Log-mel spectrogram):以符合人类听觉的尺度,表示频率和振幅随时间变化情况的二维图像
  • 梅尔频率倒谱系数(Mel-Frequency Cepstral Coefficients, MFCCs):对梅尔频谱图做离散余弦变换得到的一组系数,概括各频带的能量分布
  • 嗓音质量特征(Voice Quality Features, VQFs):表示音高、响度、频率和振幅的抖动等嗓音自身性质的22个声学指标

动机:只选一种情绪的分类会漏掉混合的情绪

为什么识别混合情绪很重要

论文给出的理由如下。

  • 情绪是反映人的心理状态的核心要素。
  • 自动情感识别系统可用于发现抑郁、焦虑等心理健康问题。社会体系和医疗体系都能从这类系统中获益。
  • 通过脑电波、心率、脉搏识别情绪需要专用设备。语音受时间和地点的限制较少,数据容易采集。
  • 在人机交互(Human–Computer Interaction, HCI)中,如果能自动识别情绪,就可以提供契合用户心情的服务。
  • 在真实场景中,情绪常常混合出现。因此需要能识别混合情绪的多标签分类。

已有研究未涉及的部分

已有的SER研究大多是多类分类,而且只使用一种语音特征。例如,有研究把德语EmoDB数据集的频谱图输入深度卷积神经网络(Convolutional Neural Network, CNN)。也有研究把英语RAVDESS数据集的MFCCs输入长短期记忆网络(Long Short-Term Memory, LSTM)。也有研究使用了两种以上的特征,但主要集中在多类分类上。比如使用IEMOCAP数据集的MFCCs和梅尔频谱图的研究,以及使用韩语语音数据库的MFCCs和ERB频谱图的研究。

也有多标签分类的研究。一项研究用英语IEMOCAP数据集的话语来识别混合情绪。另一项研究从多语种的RML数据集中提取对数梅尔频谱图和MFCCs,并用CNN与LSTM合并的模型对混合情绪进行分类。论文指出的空白如下。

  • 用韩语语音做多标签分类的研究几乎没有。使用韩语语音的研究仍停留在多类分类。
  • 表达情绪时的语速、语调、语素等语音信号,会因国家的文化和语言而异。因此需要用各语言的语音数据库来构建模型。
  • 大多数研究只使用对数梅尔频谱图或MFCCs中的一种。单一特征无法充分反映语音数据的复杂性,因而难以识别混合情绪。

方法:分别训练并联合训练三种语音特征,再加以比较

论文把方法分为四个步骤来说明。本文把第二步拆分为数据增强和特征提取,共分五个步骤来说明。

图 1. 将硬标注的韩语语音分五步处理,并比较七个模型性能的流程

案例与数据

分析对象是NIA(National Information Society Agency)的AI-Hub提供的韩语语音情感数据库。该数据库录制了20多岁到50多岁的说话人,没有年龄和性别限制,包含多种情境下的话语。每个语音文件由五名专家听后判定情绪,每个文件标注一到五种情绪。论文使用五种情绪:喜悦(Happiness)、悲伤(Sadness)、愤怒(Anger)、中性(Neutral)、厌恶(Disgust)。

研究者采用硬标注(hard labeling)方式确定标签。即五人中有两人及以上选择同一种情绪时,才把该情绪保留为标签。这样会去掉模糊的情绪,每个文件带有一到两种情绪。以论文中的示例文件来看:

  • Audio#1:悲伤2人,中性3人。两种情绪都有2人以上选择,因此标签为”悲伤与中性”。
  • Audio#2:中性1人,愤怒2人,悲伤1人,厌恶1人。标签为”愤怒”。
  • Audio#3:喜悦3人,悲伤1人,中性1人。标签为”喜悦”。

“喜悦与厌恶""喜悦与愤怒”的组合数据少,且难以同时表达,因此被排除。最终数据为40,645条,标签包括单一情绪5种和两种情绪组合8种。各标签的数量差异很大。最多的”悲伤”为15,184条(37.4%),最少的”中性与厌恶”为266条(0.7%)。

第1步:预处理

  • 输入:完成硬标注的语音文件
  • 产出:去除静音、长度在3秒以上的语音数据

处理顺序如下。

  1. 将语音文件转换为采样率(sampling rate,即每秒记录声音的次数)16,000 Hz的音频数据。
  2. 用Python librosa库的power_to_dB把频带功率转换为dB,并去掉平均值低于−70 dB的数据。因为声音太小时,很难识别混合情绪。
  3. 裁掉首尾静音,只保留长度在3秒以上的数据。研究者判断,要识别混合情绪,语音至少需要3秒。

这一步去掉了约20%的数据。

第2步:数据增强

  • 输入:预处理后的语音数据
  • 产出:各标签数量差异缩小的3秒长数据

不均衡的训练数据会降低深度学习模型的性能。通过数据增强扩充可用数据,可以提高性能,也能避免欠拟合和过拟合。处理顺序如下。

  1. 把预处理后的数据预先按约6:2:2的比例随机划分为训练、验证、测试数据集。
  2. 对三个数据集都应用平移增强(shift augmentation)。这是把原始音频沿时间轴向右一点点平移,生成多个片段的技术。对于3.5秒长的语音,若设定片段区间为3.0秒、平移时间为0.5秒,就会得到两个片段。
  3. 对数量最多的”悲伤”不做增强。对数据较少的”喜悦与悲伤""中性与厌恶”,把平移时间设得较短,以生成更多片段。
  4. 为了匹配模型输入大小,把所有样本的长度统一为3秒。

增强后的数据为:训练71,340条,验证11,968条,测试12,849条。训练数据中占比最高的标签是”愤怒”6,354条(8.9%),最低的标签是”中性与厌恶”4,835条(6.8%)。增强前为37.4%和0.7%的差距大幅缩小。

第3步:特征提取

  • 输入:3秒长的语音数据
  • 产出:大小为(100, 300, 1)、(300, 40)、(22)的输入向量

三种特征所含信息不同。对数梅尔频谱图和MFCCs包含频率和时间域的性质,VQFs则包含原始信号和嗓音自身的质量。处理顺序如下。

  1. 对数梅尔频谱图:用对每个短时段求频率成分的短时傅里叶变换(Short-Time Fourier Transform, STFT)得到频谱图。再用梅尔滤波器组把它转换为梅尔频谱图,并对每个值取对数。梅尔滤波器数为100,STFT的hop length为25 ms,overlap长度为15 ms。
  2. MFCCs:对梅尔频谱图做离散余弦变换,在相同的STFT设置下提取40个系数。为了输入1D CNN-LSTM,对向量做转置(行列互换)。
  3. VQFs:从语音的周期波形中提取22个声学指标。

梅尔尺度反映了人听取频率的方式。人对低频声音的差异敏感,频率越高越不敏感。把赫兹(f)转换为梅尔(M)的公式为M = 2595 log(1 + f/700)。

22个VQFs分为六组。

  • 基频(F0):F0 mean、F0 stdev,共2个
  • 谐噪比(Harmonics-to-Noise Ratio, HNR):1个
  • 频率微扰(jitter,频率的抖动):Local、Local absolute、Rap、PPQ5、DDP,共5个
  • 振幅微扰(shimmer,振幅的抖动):Local、Local dB、APQ3、APQ5、APQ11、DDA,共6个
  • 强度(intensity):max、mean、min、dynamic range、Intonation variation,共5个
  • 音高(pitch):max、mean、range,共3个

各组个数相加为2+1+5+6+5+3=22。

第4步:模型构建

  • 输入:三种特征向量
  • 产出:7个模型给出的五种情绪的概率

三个单一模型各把一种特征与一种结构配对。

  1. 视觉Transformer(Vision-Transformer, ViT)与对数梅尔频谱图:ViT把图像分成补丁(小块),并通过自注意力学习补丁之间的关系。研究者把频谱图分成100×10大小的矩形补丁。由于300÷10=30,补丁共30个,每个补丁的嵌入维度为100×10×1=1000。补丁经过位置嵌入和6层Transformer编码器后,由应用了Dropout的多层感知机(Multi-Layer Perceptron, MLP)完成分类。
  2. 1D CNN-LSTM与MFCCs:3层1D CNN的滤波器数和长度分别为(32, 3)、(64, 3)、(128, 3)。经过卷积和最大池化后,(300, 40)的输入变为(35, 128),LSTM层再把它转换为(1, 15)向量。CNN捕捉短区间的模式,LSTM学习较长的顺序信息。
  3. 深度神经网络(Deep Neural Network, DNN)与VQFs:隐藏层有32个、16个神经元,输出层有5个神经元。层与层之间加入了GELU激活函数、批归一化和Dropout。

选择矩形补丁的理由有两点。若要做成正方形,就必须改变原始图像的大小,而矩形补丁可以直接使用原图。另外,沿时间轴划分的矩形补丁能捕捉短时间内频率和振幅的变化,更容易识别情绪变化。研究者没有使用在ImageNet上预训练的ViT,而是针对韩语SER从头训练模型。

四个融合模型合并了单一模型的特征。

  • ViT + 1D CNN-LSTM
  • ViT + DNN
  • 1D CNN-LSTM + DNN
  • ViT + 1D CNN-LSTM + DNN

做法是把各单一模型全连接层的输出拼接起来,再由MLP做最终分类。

输出层按五种情绪设置5个节点,对每个节点应用Sigmoid函数,给出每种情绪的概率。概率超过阈值就认为存在该情绪,未超过则认为不存在。因此输出可以是0到5种情绪的任意组合。研究者没有采用常用的0.5,而是把阈值定为0.45。因为在0.45时,多种情绪的组合识别得更好,性能更高。

损失函数是二元焦点损失(binary focal loss)。公式为BFL(y, p̂) = −αy(1−p̂)^γ log(p̂) − (1−y)p̂^γ log(1−p̂)。y是真实标签(0或1),p̂是预测概率,α是类别平衡权重,γ是决定给困难样本多大权重的值。对已经能判断正确的样本,(1−p̂)^γ变小,损失随之减少;对经常判断错误的情绪,则赋予更大的损失。由于仅靠增强无法完全消除原始数据的严重不均衡,所以使用了这一损失函数。

训练使用Adam优化器。搜索范围为:学习率[0.0005, 0.001]、训练轮数(epoch)[50, 150]、批大小[32, 256]、早停耐心值[5, 8]、γ[0.5, 2.5],并在这些范围内选择性能最好的值。

第5步:性能验证

  • 输入:测试数据上各情绪的预测(有为1,无为0)
  • 产出:各情绪及平均的二元准确率、精确率、召回率、F1分数

混淆矩阵是把预测与实际相对照,划分为真阳性(TP)、真阴性(TN)、假阳性(FP)、假阴性(FN)的表格。研究者为每种情绪建立混淆矩阵,并计算四项指标。

  • 二元准确率(binary accuracy):(TP + TN) ÷ (TP + FN + FP + TN)。即对某一情绪的”有”和”无”都判断正确的比例。
  • 精确率(precision):TP ÷ (TP + FP)。在预测为”有”的样本中,实际存在的比例。
  • 召回率(recall):TP ÷ (TP + FN)。在实际存在的样本中,被正确判为”有”的比例。
  • F1分数:2 × 精确率 × 召回率 ÷ (精确率 + 召回率)。是精确率和召回率的调和平均。

举例计算。ViT单一模型对喜悦的召回率为0.423,精确率为0.582。F1分数为2 × 0.582 × 0.423 ÷ (0.582 + 0.423) = 0.492 ÷ 1.005 ≈ 0.490,与论文表中的值一致。平均二元准确率是五种情绪二元准确率的平均值。ViT与1D CNN-LSTM融合模型为(0.776 + 0.684 + 0.654 + 0.686 + 0.761) ÷ 5 = 3.561 ÷ 5 ≈ 0.712。

结果:合并对数梅尔频谱图和MFCCs的模型,平均二元准确率最高,为71.2%

矩形补丁与正方形补丁

在构建单一模型之前,研究者先比较了ViT的补丁形状。矩形补丁把(100, 300, 1)的图像分成30个(100, 10, 1)补丁。正方形补丁把(128, 128, 1)的图像分成16个(32, 32, 1)补丁。

平均二元准确率为:矩形补丁0.678,正方形补丁0.677,几乎相同。平均F1分数为:矩形补丁0.512,略高于正方形补丁的0.499。研究者解释说,矩形补丁能更好地捕捉频谱图的时间、频率和振幅特性,有助于识别混合情绪。因此之后的模型都使用矩形补丁。

单一模型与融合模型的比较

用平均二元准确率和平均F1分数对七个模型进行了比较。

图 2. 合并对数梅尔频谱图和MFCCs的融合模型,在两项平均指标上均最高
模型平均二元准确率平均F1
ViT(对数梅尔)0.6780.512
1D CNN-LSTM(MFCCs)0.7070.499
DNN(VQFs)0.5720.389
ViT + 1D CNN-LSTM0.7120.522
ViT + DNN0.6900.465
1D CNN-LSTM + DNN0.7010.478
三个模型全部0.7060.509

来源:Park, S.; Jeon, B.; Lee, S.; Yoon, J. (2024), Applied Sciences 表8、表9。CC BY 4.0(许可协议)。作者仅摘取平均值并重新整理。

在单一模型中,平均二元准确率最高的是1D CNN-LSTM,为70.7%;平均F1分数最高的是ViT,为51.2%。DNN明显低于另外两个模型。尤其是愤怒的召回率只有0.093,F1分数只有0.149,说明VQFs对识别愤怒帮助不大。

ViT与1D CNN-LSTM合并的融合模型,在两项指标上都是七个模型中最高的。在四个融合模型中,三个模型全部合并的模型位居其次(平均二元准确率0.706,平均F1 0.509)。不过从七个模型整体来看,该模型略低于1D CNN-LSTM单一模型(平均二元准确率0.707)和ViT单一模型(平均F1 0.512)。包含DNN的融合模型好于DNN单一模型,但没有超过ViT与1D CNN-LSTM融合模型。研究者解释说,性能较低的DNN拉低了融合模型整体的性能。

最佳模型的各情绪性能

ViT与1D CNN-LSTM融合模型的各情绪数值如下。

情绪二元准确率召回率F1
喜悦0.7760.4710.531
悲伤0.6840.4810.546
愤怒0.6540.6210.526
中性0.6860.5280.554
厌恶0.7610.3680.451

来源:Park, S.; Jeon, B.; Lee, S.; Yoon, J. (2024), Applied Sciences 表9。CC BY 4.0(许可协议)。作者去掉精确率一列并重新整理。

精确率为:喜悦0.610,悲伤0.631,愤怒0.456,中性0.582,厌恶0.584。厌恶的精确率为0.584,而召回率只有0.368,是五种情绪中最低的。

二元准确率与F1分数的差异

即使是最佳模型,其召回率和F1分数也低于二元准确率。研究者认为,该模型在所有情绪上的真阴性率(True Negative Rate, TNR)都较高,因而擅长减少假阳性。另一方面,对于情绪不明显或多种情绪混合的录音,要不遗漏地找出实际存在的情绪就比较困难。精确率与召回率不一致,是多标签情感识别中常见的难题。

本文在各情绪的判断上以论文表中的数值为准。愤怒的召回率因模型而异,差别很大。按照表8的列顺序(二元准确率、召回率、精确率、F1),单一模型的愤怒召回率为:ViT 0.448,1D CNN-LSTM 0.304,DNN 0.093。融合模型中提高到0.621,但精确率为0.456。

另外,论文正文写道,该融合模型中愤怒和厌恶的召回率较低。按表9的数值,这一表述只适用于厌恶(0.368)。这一差异不影响按平均值确定的模型排名。

回到最初的问题:同时识别出一段韩语语音中的多种情绪是可行的。最佳模型对每种情绪”有”和”无”的判断平均正确率为71.2%。不过平均F1分数为52.2%,作者认为这一水平只能作为辅助人工判断的用途。

意义与局限

带来了什么变化

  • 用韩语语音数据库完成了多标签情感分类。
  • 在同一数据上,比较了分别使用对数梅尔频谱图、MFCCs、VQFs的单一模型,以及两种、三种特征合并的模型。
  • 合并对数梅尔频谱图和MFCCs的组合性能最好。包含DNN的组合没有超过ViT与1D CNN-LSTM组合。ViT + DNN的平均二元准确率为0.690,甚至低于1D CNN-LSTM单一模型的0.707。

对从业者的价值

研究者期望该模型能应用于心理健康管理、客户服务、娱乐和智能服务系统。不过,该模型在客服通话录音上的性能并未在这篇论文中得到验证。分情绪来看,厌恶的召回率只有0.368,愤怒的精确率只有0.456。

因此,对于想记录”悲伤与愤怒”这类并存情绪的尝试,该模型只应被视为可供参考的程度。该数据中”悲伤与愤怒”标签有1,625条。

研究者指出,训练数据录制的是20多岁到50多岁、没有年龄和性别限制的说话人,因此认为它可以适用于使用韩语的现场的各类用户。但这一结果来自单一数据库,也没有报告按年龄、性别划分的性能。若要用于其他说话人群体或其他场景,需要另行验证。把阈值从0.5降到0.45以更好地得到多种情绪组合,这一设置值得从业者参考。

对研究者的价值

研究者期望这项研究能成为后续研究的比较基准。在作者看来,从硬标注、平移增强、二元焦点损失到阈值设定,各环节的流程都附有数字,值得用同一数据重新做实验。不过,学习率、训练轮数、批大小、γ等超参数只给出了范围,没有写明最终选择的值。数据可以从AI-Hub获取。

补丁形状带来的差异,在平均二元准确率上几乎没有,在平均F1分数上也很小。研究者解释说,矩形补丁可以弥补小规模语音数据中归纳偏置的不足。但仅凭这一实验,并未证实这种效果。若是研究补丁设计,值得对这一点另行验证。

论文自述的局限

论文自己指出的局限有四点。

  • MFCCs对背景噪声敏感,在嘈杂环境中性能可能下降。需要在预处理阶段加入降噪技术。
  • ViT的归纳偏置较低,在小数据集上性能可能下降。需要收集更多数据,并把矩形补丁与大规模数据库结合使用。
  • 没有使用解释模型判断过程的技术。后续研究计划用Grad-CAM或SHAP考察特征对预测的影响。
  • 多标签情感识别的研究较少,近期研究多采用把表情或文本与语音结合的多模态方式。各研究的目标情绪数量和种类也不同,因此难以与已有研究直接比较性能。

此外,研究者指出只使用了LSTM,并补充说,若尝试CARU、GRU等其他循环神经网络,也许能更好地处理复杂的时间模式。

作者看到的应用条件

以下并非论文中的内容,而是作者着眼于实际应用而补充的条件。

  • 标签需要由多人判定。硬标注以五名判定者中至少两人同意为标准,因此不能直接用于只有一名判定者的数据。
  • 需要确认话语长度。如果是短于3秒的应答很多的咨询数据,预处理中被剔除的比例会变大。
  • 如果是电话咨询这类混有噪声的录音,应先做降噪。
  • 应根据使用目的选定指标。若减少误报更重要,就以二元准确率和精确率为准;若不遗漏地找出情绪更重要,就以召回率为准。
  • 这一结果针对的是AI-Hub数据中的五种情绪。如果自家录音的情绪分布和说话人特征与之不同,就需要重新训练和验证。

马上可以做的事

要把论文的流程直接应用到自己的数据上,可以先做以下三件事。

  • 如果有多名判定者标注情绪的录音,就应用硬标注,即只有两人及以上选择同一情绪时才保留为标签。把各标签的数量整理成表,确认不均衡有多严重。
  • 把录音采样为16,000 Hz,去掉平均值小于−70 dB的数据以及首尾静音,只保留3秒以上的部分。从剩余语音中同时提取100个梅尔滤波器的对数梅尔频谱图和40个MFCCs。
  • 如果已构建了对每种情绪输出Sigmoid概率的模型,就分别在阈值0.45和0.5下,求出各情绪的二元准确率、召回率、F1分数并加以比较。

商业智能实验室(비즈니스인텔리전스랩)持续开展把语音、文本等非结构化数据与实务判断相连接的研究。感兴趣的读者,也请阅读博客中的其他论文解读。

关键词

相关文章