当前位置:   article > 正文

《基于音频和文本的多模态语音情感识别的TensorFlow实现》的项目(写的很人性化的哦!)_基于tensorflow的语音情绪分析与运用的研究意义

基于tensorflow的语音情绪分析与运用的研究意义

项目的模型使用双循环神经网络(RNN)对音频和文本序列中的信息进行编码,然后结合这些信息源中的信息来预测情感类。应用IEMOCAP数据集的时候,提出的模型将数据分配给四种情绪类别(即愤怒,快乐,悲伤和中性)中的一种方面优于以前的最先进方法,精度从68.8%到71.8%不等。
项目需求
需求
tensorflow1.4
python
3.7
scikit-learn0.20.0
nltk
3.3
这四个是必须的,然后还有其它的库请看截图=.=
在这里插入图片描述
首先这个项目是用python2.7写的,然后我也就在电脑上把python2.7.13和python3.7都安装了,适配进pycharm。然后坑的是tensorflow目前不支持python3以下的版本(oh my god!!!),于是乎,我就开始将python3.7作为版本号,然后开始了漫长的将python2.7的语法写的代码修改为适用于python3.7的代码(ps:据说官方打算在2020年一月份停止更新python2.7,所以捏,还停留在python2.7的小伙伴们赶紧,麻溜滴将版本号切换至python3以上的吧=^=!(老项目除外))。处理完这个之后,就开始安装各种库了(numpy,scipy,nltk,scikit-learn==0.20.0等等)。Pycharm有个好处就是:它可以直接在Pycharm软件里面添加各种库(那可是灰常方便的呀,比起在控制台用pip或者conda命令安装库方便多了!详情见图,biu~)。要哪个安装就完事了,豪!
在这里插入图片描述
这个项目用的数据集是IEMOCAP,此数据集的获取有一定的难度。嗯…,我还在找这个的资源,找到了之后会分享出来的,目前还没看到有谁将这个资源分享出来。。。

-----------------------------------分割线-----------------------------------------
说了这么多,开始正式介绍这个项目了。
先看下这个项目的目录结构:
在这里插入图片描述
之前没接触过python的项目,所以也就不知道跟Python相关的一些项目设计理念,不过看这个项目,貌似体现了一些分层设计的意思。
第一个包放的是日志,第二个包放的是数据集,第三个包放的是数据操作层
在model包下放了跟音频,文本,音频+文本相关的评估,预处理,建立模型以及训练模型的代码。
在评估数据集的代码中,输入和返回值如图:
在这里插入图片描述
输入的就是一些用于测试模型的数据等,返回该类数据在模型中的精确度。里面只有一个用于测试的函数,用到for循环。
在model_util中会引用到util包下的model_util中的函数功能,在此中想用哪个函数直接声明调用即可。在这里插入图片描述
在预处理数据的代码中,具体是通过预处理数据来生成批处理过后的数据。
里面建立一个处理音频数据类,在类中写初始化函数,下载要用的训练集,测试集等。下载数据的函数,从数据中随机获取一批编码器和编码器输入的函数。返回输入值,有效的mfcc_step向量值等。
在这里插入图片描述
在建立模型的代码中,有音频的单一缩放模型,音频+文本的单编码器模型,文本的单一缩放模型。
在音频中,有建一个关于单一缩放模型的类,里面有初始化函数,设定符合要求的batch_size来使模型更好。创建单元实例,逻辑测试交叉熵。
在音频+文本中,同音频中差不多,有表示数据的格式和位置函数,创建音频模型的函数,创建文本模型的函数,创建注意模块函数(音频+文本),关于项目音频尺寸大小到文本尺寸大小。输出层的操作,优化器函数,创建摘要的函数,构建图表的函数。
在文本中,同上。
在训练模型的代码中,导入建模,预处理,评估里面写的函数,训练模型(设置参数)。创建目录的函数,主函数里写初始化参数,添加参数,调用函数来训练模型。
第四个包放的是配置文件,本项目用HTK来提取语音文件的mfcc特征,采取的特征主要是言语韵律特征,包括音高,响度,抖动等。用到了维特比算法,基于f0谐波和其它谱峰的hnr,将LLD功能输出到CSV。HTK中的hlist可以读取输出的帧周期。
第五个包放的是预处理数据的代码,数据集拆分,训练集,测试集。
第六个包放的是file_util,model_util,nlp_util.
file_util里面写了递归地搜索文件,检查文件,创建文件等函数
model_util主要写的是在给定条件下对目标向量的应用.
在这里插入图片描述
计算相似度,用相似性加权和(归一化),返回加权和.
nlp_util里面写的功能是将原始字典中的截止频率删除,返回新字典,通过索引可以来返回一些句子。
目前代码还不能成功运行,一方面还没找到IEMOCAP数据集的资源,一方面程序经过调试还是存在一些bug,通过后续学习希望能将bug消除光!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/349597
推荐阅读
相关标签
  

闽ICP备14008679号