摘要:本文介绍了语音情感识别领域的发展现状,挑战,重点介绍了处理标注数据缺乏的问题。

本文分享自华为云社区《语音情感识别的应用和挑战》,作者:SSIL_SZT_ZS。

情感在人与人的交流中扮演者重要的角色。情感识别具有极大的应用价值,成功的检测人的情感状态对于社交机器人、医疗、教育质量评估和一些其他的人机交互系统都有着重要意义。本文的要点有:

1、情感识别的基础知识和应用场景。
2、语音情感识别技术的介绍以及面临的挑战。
3、如何解决数据缺乏问题,我们的方案是什么。

1.什么是情感识别?

情感是人对外部事件或对话活动的态度。人的情感一般分为:高兴、生气、悲伤、恐惧和惊喜等。机器对采集的信号进行分析,从而得到人的情感状态,这一过程就是情感识别。通常,能用来进行情绪识别的信号包括两个方面,一个是生理信号如呼吸、心率和体温,另一个是行为表现包括面部表情、语音和姿态等等。人脸与语音得益于简单的采集方式,经常被用来识别对象的情感。情感识别能帮助系统了解对象的情感状态以及其对某个话题或事务的态度。

在人工智能(AI)产品和人的交互过程中,如果能够准确地把握人当前的情感状态,根据情感状态做出回应,可以极大地提升用户对AI产品的体验。这在商品推荐,舆论监控,人机对话等方面都有着重要的意义。例如,在销售过程中,了解用户对商品的满意度,可以帮助平台制定更好的销售策略;在影视行业,了解观众对节目的喜怒哀乐,能帮助制定更精彩的剧情以及安排特定节目的上线时间;在人机对话中,掌握人的情感状态可以帮助智能机器人做出恰当的回复,并适时地表达安抚和谅解,提升用户体验;在舆论方面,行政部门通过了解群众对热门事件的情感倾向、掌握舆论导向,从而更及时有效的进行舆情监控,为制定政策提供支持。情感识别还能应用于许多现实的场景中。情感识别算法具有很高的研究价值。

考虑到采集难度、隐私等因素,本文的工作聚焦于使用语音来识别说话人情感的语音情感识别(SpeechEmotionRecognition,SER)任务。

2.语音情感识别技术介绍

语音是日常生活中交流的主要媒介,它不仅传达了思想,还表达了说话人的情感状态。语音情感识别的目标是从语音中识别出人类的情感状态。其主要包含两个步骤:特征提取与分类器构建。

音频信号输入是近似连续的数值。提取音频特征通常首先对音频进行分帧,加窗,进行短时傅里叶变换(STFT)。然后得到了维度为T\timesDT×D的频谱特征,其中TT表示帧数与时间长度相关,DD是特征维度,每个维度对应不同的频率。有一些工作也会对此频谱进行一些mel滤波操作。

频谱特征包含丰富的信息,比如说话内容、节奏、语气、语调等等。与情感相关的语音特征提取仍然是一个尚未成熟研究方向。深度学习的出现简化了人工特征提出过程,使用数据驱动的方法,利用情感标签作为监督信号来训练深度模型提取与情感相关的隐含语义特征。由于音频输入的序列化特点,深度特征提取通常也有基于CNN/GRU/LSTM方法,或者基于CRNN或CNN+Attention的方法。

传统的机器学习方法可以基于人工语音特征或者深度语音特征构建分类器,例如高斯混合模型(GMM),隐马尔科夫模型(HMM),支持向量机(SVM)等经典方法。此外,得益于深度学习的发展,基于神经网络的分类器可以与深度特征提取器一起端到端(end-to-end)训练,得到情感分类器。

3.语音情感识别面临的挑战

我们前面介绍了语音情感分析中常用的方法,但语音情感识别在实际中也面临着一些挑战:

  1. 情感主观性与模糊性问题:语音情感识别是一个比较年轻的领域,在情感定义上缺乏官方标准。不同听者对同一段语音的情感可能有不同的观点。此外,一段语音往往有情感变化,主观性较强,导致许多研究工作没有普适性。
  2. 情感特征提取和选择问题:语音说话人各种各样,情感类别多变,语音片段长短不一等,这些问题导致人工设计特征无法涵盖全部情感信息。另一方面,深度特征虽然效果好,但不具有可解释性。
  3. 标注数据缺乏问题:深度学习方法取得很好的性能要求大量的高质量的标注数据。由于情感的主观性与模糊性,标注语音情感非常费时费力,同时要求大量专业人员。收集大量情感标注数据,是语音情感识别领域亟需解决的问题。

4.如何解决数据缺乏的问题?

数据是深度学习的驱动力,大规模高质量的数据是深度学习取得成功的关键。然而,在很多实际问题中,由于标注代价问题,只存在少量的标注数据,这严重限制深度学习方法的发展。随着互联网社交平台的发展,每天都回生产大量的多媒体数据,大规模无标注的数据很容易获得。这就促进了能同时使用标注数据和无标注数据的半监督学习(Semi-SupervisedLearning)方法的发展。另一方面,多媒体数据通常情况下都包含多个模态,因此也有一些工作探索利用一个模态的标注知识去加强在另一个模态上的任务的效果。下面介绍这两种方法。

4.1半监督学习

半监督学习一般有两个数据集,一个小规模的有标注数据集,一个大规模的无标注数据集。其目的是利用无标注数据来增强,监督学习的效果。经典半监督学习方法包含很多类别,例如self-training(自训练算法),generativemodels(生成模型),SVMs(半监督支持向量机),graph-basedmethods(图论方法),multiviewlearing(多视角算法)等等。下面介绍几类主要半监督学习方法。

  • 简单自训练算法(self-training)
    self-training算法的步骤为:(1)首先利用标注训练集数据训练分类器;(2)利用分类器对无标注数据进行分类,并计算误差;(3)选择分类结果中误差较小的样本,将分类结果作为其标签,加入到训练集。循环次训练过程,直到所有的无标注数据被标注。
  • 多视角学习(multiviewlearing)
    这是self-training算法的一种。其假设每个数据可以从不同的角度进行分类。算法步骤如下:(1)在角度用标注数据集训练出不同的分类器;(2)用这些分类器从不同的角度对无标注数据进行分类;(3)根据多个分类结果来选出可信的无标签样本加入训练集。循环前面的训练过程。此方法的优点是不同角度的预测结果可以相互补充,从而提高分类精度。
  • 标签传播算法(LabelPropagationAlgorithm)
    标签传播算法是一种基于图的半监督算法,通过构造图结构来找无标签数据和有标签数据之间的关系,然后通过这个关系来进行标签传播。

在深度学习上的半监督学习方法,叫做半监督深度学习。半监督深度学习主要包括三类:Fine-tune;基于深度学习的self-training算法;半监督的方式训练神经网络。

Fine-tune方式,利用无标签数据训练网络(重构自编码或基于伪标签训练),然后使用有标签数据在目标任务上进行微调。

基于深度学习方法的self-training,基本的步骤:(1)利用有标注数据训练深度模型;(2)利用深度模型作为分类器或者利用深度特征对无标签数据进行分类;(3)选择执行度高的加入有标签训练集,重复此过程。

半监督的方法训练深度网络包含许多技术,例如Pseudo-Label[1],LadderNetworks[2],TemporalEnsembling[3],Meanteachers[4]还有FixMatch等等。下面我们介绍几个主要的工作。

1.Pseudo-Label方法[1]
此方法将网络对无标签数据的预测结果,作为无标签数据的标签,来训练网络。方法虽然简单,效果却很好。从下图我们可以看出,加了无标签数据之后,同一个类别的数据点聚集得更笼了。

2.TemporalEnsembling[3]
TemporalEnsembling是Pseudo-Label方法的发展。其目标是构造更好的伪标签。下图给出了此方法的结构图,此方法有两种不同的实现,即ππ-model和temporalensembling。

ππ-model的无监督代价是对同一个输入在不同的正则或数据增强的条件下模型输入应具有一致性,这样可以鼓励网络学习数据内部的不变性。
Temporalensembling对每一次迭代的预测z_izi​进行移动平均得个\hat{z_i}zi​^​作为无监督训练的监督信号。

3.Meanteacher[4]
Meanteacher方法另辟蹊径,从模型的角度提高伪标签质量,其奉行“平均的就是最好的”原则。对每次迭代之后的student模型参数进行移动平均(weight-averaged)得到teacher模型,然后用teacher模型来构造高质量的伪标签,来监督student模型的无标签loss。

4.FixMatch[5]
FixMatch发扬了TemporalEnsembling方法中的一致性正则化(consistencyregularization)原则,即同一个样本的不同增广,模型应该得到一致的结果,从而学习数据内部的不变性。因此FixMatch方法利用弱增广的样本生成一个伪标签,利用此伪标签来监督模型对强增广样本的输出。

4.2跨模态知识迁移

跨模态知识迁移基于多媒体数据中各个模态之间的内在联系,将标注信息由一个模态向目标模态迁移从而实现数据标注。如下图所示,跨模态知识迁移包括视觉到语音的迁移,文本到图像的迁移等等。下面介绍几种经典的跨模态知识迁移工作。

1.基于跨媒体迁移的图像情感分析[6]
此方法利用推特上成对的文本图像数据,完成图像情感分析任务,具体步骤如下图。

其使用训练好的文本情感分类器,对文本进行情感分类,然后将标签直接给对应的图片。然后使用具有伪标注的图片训练图片情感分类器。

2.SoundNet[7]

通过预训练的视频对象和场景识别网络实现从视觉模态到语音模态的知识迁移,利用迁移的标签训练语音模型,完成语音场景或语音对象分类。

3.EmotionRecognitioninSpeechusingCross-ModalTransferintheWild[8]

此方法利用预训练好的人脸情感识别模型作为teacher模型,然后利用teacher模型的预测结果来训练语音情感识别模型。

5.我们的语音情感识别方案

这一节将介绍我们处理标注数据缺乏的方案。

联合跨模态知识迁移与半监督学习方法

为了解决语音情感识别领域数据缺乏的问题,我们在2021年提出了联合跨模态知识迁移与半监督学习的架构,该方法在CH-SMIS以及IEMOCAP数据集上取得了语音情感识别任务当前最优的结果,同时我们将此工作发表在SCI一区期刊knowledge-basedsystem上发表论文Combiningcross-modalknowledgetransferandsemi-supervisedlearningforspeechemotionrecognition。下面是我们的方案的架构图:

我们的方案基于两个观察:

  1. 直接跨模态标签迁移存在误差,因为人脸情感与语音语音情感之间的关系十分复杂,并不是完全一致。
  2. 半监督学习方法,标注数据很少的情况下,表现并不好。模型的预测错误可能会不断的得到加强,导致模型在某些类别上精度很低。

我们的方法收到了多视角学习思路的启发,利用视频数据中存在两种模态,在两个模态上识别情感,融合它们获得更加准确的伪标签。为了进行语音情感识别,本方案首先提取了语音的STFT特征,然后进行了Specaugment数据增广。因为Transformer在建模序列数据的成功,本方案采用了Transformer的encoder进行语音的编码,最后利用均值池化来得到语音特征并分类情感。

跨模态知识迁移

为了进行跨模态情感迁移,本方案基于MobileNet模型利用大量的人脸表情数据集训练了一个性能强大的人脸表情识别模型。使用此模型对从视频中抽取的图片帧进行人脸表情识别。然后将多个帧识别的结果综合到一起得到整个视频段的人脸表情预测结果。

半监督语音情感识别

受到FixMatch中一致性正则化假设的启发,我们设计了半监督语音情感识别方法。具体的,此方法对语音样本输入采取了两种类型的增广,利用强增广方法SpecAugment算法获得到语音严重扭曲版频谱特征,利用弱增广方法(特征上的dropout等)得到变化不大的语音特征。模型使用弱增广的样本生成伪标签,来监督强增广的样本的训练。

结合半监督学习与跨模态知识迁移

在模型的每一次迭代中,本方法利用弱增广样本生成一个伪标签,然后将其与跨模态迁移的伪标签进行融合,以提高伪标签的质量。本工作探索了两种融合方法,一个是加权求和,一个是多视角一致性。得到高质量的伪标签之后,用此标签监督强增广样本的训练。

模型通过多次迭代,不断提升伪标签质量。

相对于半监督学习方法和跨模态方法,本方法在CH-SIMS和IEMOCAP数据集上均取得了最好的效果。结果如下:

参考文献

[1]Pseudo-Label:TheSimpleandEfficientSemi-SupervisedLearningMethodforDeepNeuralNetworks
[2]Semi-SupervisedLearningwithLadderNetworks
[3]TemporalEnsemblingforSemi-supervisedLearning
[4]Meanteachersarebetterrolemodels:Weight-averagedconsistencytargetsimprovesemi-superviseddeeplearningresults
[5]FixMatch:SimplifyingSemi-SupervisedLearningwithConsistencyandConfidence
[6]Cross-MediaLearningforImageSentimentAnalysisintheWild
[7]SoundNet:LearningSoundRepresentationsfromUnlabeledVideo
[8]EmotionRecognitioninSpeechusingCross-ModalTransferintheWild

点击关注,第一时间了解华为云新鲜技术~

AI为啥能读懂说话人的情感?的更多相关文章

  1. 一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现

    一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现 导读:近日,马云.马化腾.李彦宏等互联网大佬纷纷亮相2018世界人工智能大会,并登台演讲.关于人工智能的现状与未来,他们提出了各自的观点,也引 ...

  2. 网络编程懒人入门(十):一泡尿的时间,快速读懂QUIC协议

    1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...

  3. [Interview]读懂面试问题,在面试官面前变被动为主动

    面试是供需双方心理的较量,作为求职者来说,了解对方问题的内涵,做到“明明白白他的心”,就能变被动为主动.因此,读懂面试问题,掌握面试考官的提问的目的,有准备.有针对性地回答,对提高应聘的成功率是有很大 ...

  4. 一片非常有趣的文章 三分钟读懂TT猫分布式、微服务和集群之路

    原文http://www.cnblogs.com/smallSevens/p/7501932.html#3782600 三分钟读懂TT猫分布式.微服务和集群之路   针对新手入门的普及,有过大型网站技 ...

  5. 如何读懂Framework源码?如何从应用深入到Framework?

    如何读懂Framework源码? 首先,我也是一个应用层开发者,我想大部分有"如何读懂Framework源码?"这个疑问的,应该大都是应用层开发. 那对于我们来讲,读源码最大的问题 ...

  6. 生成式AI对业务流程有哪些影响?企业如何应用生成式AI?一文看懂

    集成与融合类ChatGPT工具与技术,以生成式AI变革业务流程 ChatGPT背后的生成式AI,聊聊生成式AI如何改变业务流程 ChatGPT月活用户过亿,生成式AI对组织的业务流程有哪些影响? 生成 ...

  7. 读懂UI设计的心理学

    好文转载,版权归原作者 作为UI设计师,对待用户就像对待婴儿,知道如何通过界面设计诱导用户非常重要,这就需要了解心理学方面的知识了.今天分享一篇日本设计师的好文,结合心理学与设计,教你读懂心理学,提高 ...

  8. 一文读懂UGC:互联网上的生态秘密

    转载自近乎: UGC(User- Generated Content)用户原创生产内容,它是相对于PGC(Professionally-produced Content)专业生产内容的一种内容来源,简 ...

  9. 读懂IL代码就这么简单 (一)

    一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉 ...

  10. 如何快速读懂大型C++程序代码

    要搞清楚别人的代码,首先,你要了解代码涉及的领域知识,这是最重要的,不懂领域知识,只看代码本身,不可能搞的明白.其次,你得找各种文档:需求文档(要做什么),设计文档(怎么做的),先搞清楚你即将要阅读是 ...

随机推荐

  1. Kubernetes网络

    kubernetes-Service 1.service存在的意义 1.防止破的失联(服务发现) 2.定义一组pod的访问策略(提供负载均衡) 2.pod与service的关系 1.通过lablel- ...

  2. Wonder8.promotion营销规则引擎,轻松搞掂千变万化的营销玩法

    超过10年没有更新过内容了,不知道现在园子的氛围这类文章还适不适合放首页 想着整点内容,也是支持园子! 旺德發.营销 引擎 概述 为了广泛支持营销活动的复杂与灵活,Wonder8.promotion( ...

  3. 文心一言 VS 讯飞星火 VS chatgpt (129)-- 算法导论11.1 4题

    四.用go语言,我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典.开始时该数组中可能包含一些无用信息,但要对整个数组进行初始化是不太实际的,因为该数组的规模太大.请给出在大数组上实现 ...

  4. 确定性有限状态自动机 DFA

    前言 在计算理论中,确定有限状态自动机或确定有限自动机(英语:deterministic finite automaton, DFA)是一个能实现状态转移的自动机.对于一个给定的属于该自动机的状态和一 ...

  5. “技能兴鲁”职业技能大赛-网络安全赛项-学生组初赛 Crypto WP

    babyRSA 查看代码 from gmpy2 import * from Crypto.Util.number import * flag = 'flag{I\'m not gonna tell y ...

  6. 小闫s人格大爆发 | 坐椅子上?study:sleep

    hadoop视频 搭建环境 刷单词 看电影

  7. Access denied for user ‘root‘@‘localhost‘ (using password:YES)解决方法

    修改jdbc.properties文件的密码

  8. 如何用MySQL快速导入sql数据?

    在 MySQL 中,可以使用多种方法来快速导入 SQL 数据.以下是一些常用的方法和技巧,以帮助你在 MySQL 中快速导入大量的 SQL 数据. 1. 使用 mysql 命令行工具 - 将 SQL ...

  9. 14、Map

    1.Map的定义 map是Go中的内置类型,它将一个值与一个键关联起来.可以使用相应的键检索值.Map 是一种无序的键值对的集合.Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引 ...

  10. 浅谈 Socket.D 与响应式编程

    一.Socket.D 的主要特性 首先,Scoket.D 是高效一个二进制的网络通讯协议(官方我讲法是:基于事件和语义消息流的网络应用协议),能够满足很多场景下使用.其次,Scoket.D 是温和的响 ...