草庐IT

情感计算-音频情感识别

无脑敲代码,bug漫天飞 2023-09-26 原文

目录

音频情感识别意义与背景

  1. 这里的音频是指人类能够听到的声音,音频中包含丰富情感;
  2. 应用在电话服务、医学研究(抑郁、压力–发现情绪波动)、谎言分析(检测声音相关参数,例如紧张程度)、机器人中(情感理解+ 情感生成);
  3. 现在研究更多侧重于人的情感识别;
  4. 音频情感识别优点: 采集容易,不用可穿戴设备,更有效保护隐私。

研究现状与进展

  1. 80-90年代,根据韵律(how to say, 情感激动程度,能量等参数)控制人机对话的过程;

  2. 90年代后期模式识别(高斯混合、SVM、HMM等)

  3. 目前, DL(受限于数据规模较小)

  4. 国外研究团队

    英国贝尔法斯特女王大学的情感语音组
    收集并创建了第一个大规模的高自然度情感数据库,Roddy Cowie和 Ellen Douglas-Cowie 教授,重点研究心理学和语音分析。

    美国MIT媒体实验室情感计算研究所
    Rosalind Picard 教授90年代初开始进行情感语音研究
    (http://affect.media.mit.edu)

    美国南加州大学语音情感组
    Shri Narnyana教授,情感语音的声学分析、合成和识别,以及有关笑声合成研究(http://sail.usc.edu/emotion/index.php)

    爱尔兰都柏林大学
    Nick Campbell教授,从事自然情感语音合成

    以色列Nemesysco公司
    实际应用以分层声音分析技术(LVA)在安全、商业和个人娱乐领域为客户提供解决方案。创业公司 Beyond Verbal以通过识别音域变化,从而分析出愤怒、焦虑、幸福或满足等情绪,其中包括11个类别, 400个复杂情绪的变量。

    英国的初创企业EI Technologies
    可以分析人声的音调,识别高兴、悲伤、害怕、愤怒及无感情等5种用户的基本情绪。识别的准确率约为70-80%左右,这个数字要高于人类60%的平均水平,而受过训练的心理学家的判断准确率约为70%。

    日本SGI研究院能感知人类情感:KOTOHANA
    (http://www/.sgi/co/jp/solutions/bbu/ST/index/html)

  5. 国内研究团队
    中科院自动化所模式识别国家重点实验室
    东南大学无线电工程系
    清华大学计算机科学与技术系
    台湾大同大学资讯工程学系
    中国公司Emotibot竹间智能科技、清帆科技EduBrain(专注教育领域技术创新)
    其他:中国社科院语言研究所,西北工业大学、中国人民大学、哈工大,浙大,华南理工、中科大,南京师范大学、江苏大学等

音频情感数据库

  • 语音情感数据库建立的四个原则

  • 真实性,尽量不要诱发,如果采用诱发的方式,也要尽可能真实;

  • 交互性,在人与人交户中产生;

  • 连续性,动态建模,要多种情感转移;

  • 丰富性,尽可能包含多包含多媒体信息。

  1. 获取语音情感数据库的方法
  • 演员表演(最差情况):刻意模仿的情感显得比较夸大;
  • 引导情感(较差情况):设计情景,比如讲个高兴的事,看个恐怖电影;
  • 取自媒体(较好情况):从广播或者影视节目中截取片段;
  • 现实生活(理想情况):比较难获得,有些数据库基于电影电视剧片段进行类似。
  1. 音频情感识别语料库

    Belfast 英语情绪语料库
    引导情感:由50位说话人根据引导文本,表达愤怒、恐惧、高兴、悲伤和中性五种情感
    自然语料:从电视访谈节目中选取剪辑的125位说话人的多种情感

    柏林(EMO-DB)情感数据库
    引导情感:日常交流中常用的十个德语语句,共800语句,含七种情感:中性、愤怒、恐惧、高兴、悲伤、厌恶和惊奇

    FAU AIBO儿童德语情感语音库
    自然情感:录制51儿童(10-13岁,21男30女)与索尼公司生产的电子宠物AIBO游戏过程中的自然语音,保留情感信息明显的语料,共9.2小时,包括48401单词

    汉语普通话语音数据库
    演员表演:中科院自动化所研制,由演员模仿情感进行录制,共9600条语音,包括6中情感:高兴、生气、惊奇、控制、悲伤、平静
    演员表演:东南大学研制,表演性情感语音,由10名男性话者对4个语句分别用喜、怒、惊、悲四种情感录制480句

    CREST情绪语料库
    自然情感:日本的国际电气通信基础研究所(ATR)录制,包含完全自然状态下的1000小时情感语音,60%是日语,汉语和英语各占20%

    丹麦情感语音库
    演员表演:含5种情感:高兴、生气、惊奇、悲伤、平静。共260条

    CHEAVD 数据库
    取自媒体:由中科院自动化所从32部中文电影、79集电视剧、20期综艺节目中剪辑出2629个音视频情感片段,共计时长141分钟,共包括238位发音人。

    Semaine数据库
    引导情感:面向自然人机交互和人工智能研究的数据库,20 个用户(22 岁-60 岁,8 男12 女)被要求与性格迥异的4个机器角色进行交谈.这4 个角色分别是:1) 温和而智慧的Prudence;2) 快乐而外向的Poppy;3) 怒气冲冲的Spike 和4) 悲伤而抑郁的Obadiah

语音情感识别

  1. 语音特征,人类的发生器官由肺、气管、声带、鼻、口和唇等组成。
  2. 声带长短和张力决定声音的基频
  3. 声音强度取决于气流的大小和强度;
  4. 声音经过形状变化的口腔、鼻腔等共振,最后经唇部辐射传出;
  5. 声音的共振过程形成了共振峰,各共振峰的频率由共振腔的大小和形状决定。
情感语音特征
传统特征
非线性特征
韵律特征
音质特征
基于谱特征
非线性属性特征
非线性几何特征
特征融合
特征集合
  • 韵律特征: 最主要的语音特征,如语速、音量和音调,振幅、基音频率,持续时间等;

  • 语速:语音可以反应出说话者的情绪状态:当人的情绪比较激动的时候,比如处于愤怒状态,语言的表达速度明显加快,相反在人的情绪比较低落时,比如处于悲伤状态,语言的表达速度则明显较慢。

  • 时长:语句的发音持续时间指每一情感语句从开始到结束的持续时间,与感知的语速相对应,情感语音的时长构造主要着眼于不同情感语音发话时间构造的差别,时长分析常采用音节、句子为单元来测量。

  • 停顿:停顿也反映了情感信息,停顿指的是前一个音节与下一个音节之间无声的时间

    分析
    语速: 语速的变化是表达情感的一个重要手段。它反映一个人在不同环境,不同情感下说话时的心情急切度。人在焦虑和愤怒状态下,说话速度很快;惊奇和喜悦次之;而悲伤情感下说话速度最慢。
    停顿和时长: 不管是男性还是女性,不同情感下,其停顿和时长对于基本类型的情感变化有一定的一致性,对于微妙复杂的情感两者的变化有一定的差异。
    性别的不同,也会引起一些情感之间特征的变化差异性。比如男性说话人在放松和温顺情感下的时长变化略不同于女性说话人,停顿分析中惊奇与喜悦情感在不同性别中的变化稍有不同。

  • 音强

    能量表现为语音的音量的高低,而音量的高低又是通过声音的响度大小来反映。
    不管是男性还是女性说话人,其中中性、放松、温顺情感的能量基本在同一水平,总体能量较低,其次是轻蔑和悲伤能量相近,惊奇、喜悦和恐惧能量处于一个水平,能量最强的属于愤怒情感。

  1. 音质
  • 基频

在发出浊音时,声门波形成的周期性脉冲,即声带的振动周期被称作是浊音的基音周期,基音频率即为其倒数,简称基频,通常用F0表示。基频值取决于声带大小、厚薄、松紧程度以及声门上下之间的气压差效应等。

基音频率体现出以下规律:处在激动情绪下如愤怒的人所表达出的语音的基频较高,变化范围较大;处于低落情绪如悲伤的人所表达的语音的基频较低,变化范围较小,处于平静情绪下的人所表达出的语音的基频则相对稳定。

  • 共振峰

共振峰是反映声道特性的一个重要参数。不同情感发音的共振峰的位置不同。分析时首先用LPC法求出声道的功率谱包络,在用峰值检出法算出个共振峰的频率。

  • 基频抖动
    焦虑语音会出现“F0抖动”现象。Jitter是基频值的变化程度。
    F0 Jitter是由生理器官的作用才产生,比如情感的变化会导致声带肌肉紧张度,气流的体积速度,声道表面的坚硬或柔软等发生变化从而产生基频抖动现象
  1. 频谱
  • 线性预测倒谱系数(LPCC)
    LPCC是基于语音信号为自回归信号的假设,利用线性预测分析获得倒谱系数
    不同情感的发音会使声道有不同的变化,进而引起声道传输函数倒谱的变化

  • Mel频域倒谱系数(MFCC)
    考虑了人耳对不同频带的分辨率不同,充分融合人耳的听觉特性。

  1. 系统框架
two
one
数字语音信号
语音情感特征
识别结果
情感识别
语料库
语音信号采集
情感空间描述模型
情感特征提取
情感
  1. 语音情感识别本质上属于模式识别

局部特征 & 全局特征
多类特征融合(还可以融合副语言,如笑声、叹息)

  • 神经网络

  • 高斯混合模型(GMM)
    混合高斯模型是只有一个状态的模型,在这个状态里具有多个高斯分布函数。
    P k =    ∑ i    =    1 N w i f i ( Y ) P_{k}=\; \sum_{i\; =\; 1}^{N}{w_{i}f_{i}\left( Y \right)} Pk=i=1Nwifi(Y)

    其中 f i f_i fi是一个高斯分布函数,不同高斯分布之间的加权系数 w i w_i wi满足 ∑ i    = 1 N w i    =    1 \sum_{i\; =1}^{N}{w_{i}\; =\; 1} i=1Nwi=1
    每一个情感类型训练一个高斯混合函数,高斯函数的输入参数为语音的情感特征参数。

  • HMM
    HMM是一种基于转移概率观测概率的随机模型,它既能用短时模型(状态)解决声学特征相对稳定段的描述,又能用状态转移规律刻画稳定段之间的时变过程

  • 支持向量机
    基于结构风险最小化和统计学习理论提出了一种名为支持向量机(SVM)的机器学习方法,该方法在诸如函数拟合、非线性模式识别。小样本等领域都极具优势。

  • 混合模型
    混合高斯模型-支持向量机:该方法不仅拥有混合高斯模型统计能力强的优点,而且同时有支持向量机分类能力强的优点

    隐马尔科夫模型-人工神经网络模型:首先用隐马尔科夫模型对情感特征向量进行整合,再用人工神经网络进行最终分类识别

    采用投票机制将支持向量机、K最近邻算法、人工神经网络种分类器进行融合。

  • 深度神经网络
    DNN:原始语音信号分段输入到网络中,提取局部的情感信息,然后经过处理得到全局情感特征,送到分类器中,得到预测的概率类别。输入一段语音情感信号,可以得到每一段对每个情感类别的预测概率值

    CNN:卷积神经网络广泛应用到语音情感识别中,包括局部不变特征学习模块、情感区分特征分析模块和支持向量机模块三个部分。这种模型结构能够抽取出具有区分性的情感特征

    RNN:能够有效融合上下文信息进行音频情感建模。

    CNN- RNN:联合了CNN模型的音频信息表征能力和RNN模型的情感时序建模能力。

    胶囊网络:利用胶囊网络,考虑音频特征在声谱图中的空间关系,为获取语音全局特征提供了一种有效的汇聚方法。

    基于端到端的音频识别:直接将语谱图或时域波形点作为输入,具有特征自学习能力的优势
    其性能依赖于数据规模。

    注意力机制:有效挖掘不同音频片段对当前情感状态的贡献度。

    多任务学习:不同维度情感状态存在依存关系,利用多任务学习机制实现维度情感模型的协同优化。

    融合功能副语言信息检测的识别模型:对副语言段和语音段进行区分性建模,有效利用副语言先验信息。

    融合说话人信息和文本信息的识别模型:对音频信息、识别的文本信息、说话人信息进行时空融合。

    融合区分性训练准则的识别模型:利用三元损失函数解决不同情感状态边界模糊的问题

展望

  1. 语料
  • 语料很重要,但目前规模较小;
  • 采集整理工作难;
  • 关注跨数据库展现(如考虑文化、语种差异)。
  1. 语音情感特征
  • 找新特征,获取更高识别率;
  • 多特征融合(不能通过向量特征拼接形成高维度的形式);
  • 在高维情况下分类器的泛化性能反而更弱,要针对性进行特征降维和选择。
  1. 语义理解
  • 利用语义的语音情感识别,如文字、声音线索、视频线索;
  • 语音语义识别同情感识别相结合。

参考:国科大-情感计算课件

有关情感计算-音频情感识别的更多相关文章

  1. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  2. 报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果? - 2

    导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri

  3. [Vuforia]二.3D物体识别 - 2

    之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶

  4. ruby-on-rails - 在 heroku 的 .fonts 文件夹中包含自定义字体,似乎无法识别它们 - 2

    Heroku支持人员告诉我,为了在我的Web应用程序中使用自定义字体(未安装在系统中,您可以在bash控制台中使用fc-list查看已安装的字体)我必须部署一个包含所有字体的.fonts文件夹里面的字体。问题是我不知道该怎么做。我的意思是,我不知道文件名是否必须遵循heroku的任何特殊模式,或者我必须在我的代码中做一些事情来考虑这种字体,或者如果我将它包含在文件夹中它是自动的......事实是,我尝试以不同的方式更改字体的文件名,但根本没有使用该字体。为了提供更多详细信息,我们使用字体的过程是将PDF转换为图像,更具体地说,使用rghostgem。并且最终图像根本不使用自定义字体。在

  5. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  6. ruby-on-rails - 没有这样的文件或目录 - 用 Mini Magick 识别 - 2

    在我让另一个人重做我的前端UI之前,我的Rails应用程序运行平稳。我已经尝试解决此错误3天了。这是错误:Nosuchfileordirectory-identifyExtractedsource(aroundline#59):575859606162@post=Post.find(params[:id])authorize@postif@post.update_attributes(post_params)flash[:notice]="Postwasupdated."redirect_to[@topic,@post]else{"utf8"=>"✓","_method"=>"patc

  7. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  8. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  9. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  10. ruby-on-rails - 如何计算 Ruby/Rails 中 JSON 对象的数量 - 2

    Ruby中如何“一般地”计算以下格式(有根、无根)的JSON对象的数量?一般来说,我的意思是元素可能不同(例如“标题”被称为其他东西)。没有根:{[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]}根包裹:{"posts":[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]} 最佳答案 首先,withoutroot代码不是有效的json格式。它将没有包

随机推荐