(十)语音情感识别项目实战(上)
写这篇博客的时候正好在和某公司做一个语音情感识别相关的项目,所以距离上次更新微博也有好久了,但还是按照之前设定的计划把这块内容梳理下。主要是Follow下近几年的文章,代码方面由于git上开源的好的项目其实并不多,由于这个项目还在进行,我会选择性的给出一些解决方案!
语音情感识别,顾名思义,就是通过语音来识别情绪,为什么会有这项任务呢?实际上NLP中的文本情感识别研究的热度比语音情感识别要高,那么一个简单的思路就是,能否通过音转字,然后再识别情绪呢?可以是可以,而且很多大公司比如科大讯飞的语音识别接口就很厉害,设置厉害到超出你的认知,but,语言的方言,语速,噪音这些问题还是存在一定的瓶颈的,也就是说,音转字的效果可能没那么好,所以语音情感识别的需求还是有必要的!
接下来我就首先从学术的角度来梳理下这块的内容。
首先看数据集,主要的公共数据集就2种,一个是IEMOCAP,另一个是柏林数据集EmoDb,两个数据集都比较小,前者的难度大一点,四分类,目前的精度也就在65左右,这个数据集的分布是这样的,10个人(5男,5女),5组对话,数据里面还有些视频动作啥的,所以有些任务设计了多任务学习来提升精度,测试的时候分10折,一个人做一次测试,最后把结果算均值,至于测试的指标UA,WA,UR,WR很多,大概就是这四个指标吧,下面这个图是我梳理的结果:
至于EmoDb这个数据集太小了,比较简单,这里就不做说明了。
说完数据说特征,语音中的常用特征MFCC,Fbank,这些特征是语音的基本特征,原理我就不介绍了,属于数字语音处理的范畴,网上的介绍也很多,另外就是文章中会经常看到IS系列特征,这些事INTERSPEECH相关比赛提供的特征集,利用opensmile这个工具就可以提取,提取的特征集属于统计特征,当然可以设置成对整段语音的提取或者是对帧层面进行lld提取。
(一)关于opensmile这里先简单就LINUX环境下安装和使用进行说明:
1.安装包下载:网址https://www.audeering.com/download/1318/
2. 解压openSMILE-2.3.0\ .tar.gz文件夹 tar zxvf openSMILE-2.3.0\ .tar.gz
3.进入该文件夹 cd opensmile-2.3.0
4.安装该软件
sh buildStandalone.sh
sh autogen.sh
./configure
make -j4 ; make
5.确认是否安装成功 ./SMILExtract -h (若出现软件的用法信息则表示安装成功)
(二) openSMILE使用说明
现在开始使用openSMILE从wav文件中提取非常简单的音频特征文件。
我们先使用openSMILE提供的示例配置文件。在openSMILE包的顶层目录中(user/..../opensmile/openSMILE-2.3.0/) 键入以下命令(如果在不同的目录中启动openSMILE,则须调整配置文件和 wave文件路径):
运行过程如下所示:
得到特征文件csv存储在顶层目录(这里可以设置下存储在新建的文件夹中便于下载)得到的csv文件打开:
这里我自己准备了一个Python的的opensmile接口,会和后续的相关代码一并上传。
关于特征集,这里做一个说明:
详细的说明可以看官方说明书和这篇博客。
数据和特征说完了,接下来的部分就分别从文章和代码实践部分做一些介绍。