本仓库是2024年HNU计科拔尖班人工智能实验,并且提供了课程教材pdf版本.
有兴趣的同学如果提出更好的方案或者拓展新任务,可以按照Github的规范提交PR,或者提出issue,也可以联系我成为Collaborator.
该实验是基于iemocap数据集进行文本和音频单模态和多模态的研究
| 实验(情感识别任务) | 要求 |
|---|---|
| 实验二-音频单模态机器学习 | 仅使用音频单模态、机器学习方法 |
| 实验三-文本单模态深度学习 | 仅使用文本单模态、深度学习方法 |
| 实验四-音频、文本多模态深度学习 | 使用音频、文本多模态,不限制方法 |
- 基本介绍:共包含三个实验作业,评分指标为Macro-F1,根据最终提交的result.csv文件计算测试集上的Macro-F1,进行最后的分数评定
- 限定使用框架:
- 机器学习-scikit-learn
- 深度学习-pytorch
- 推荐使用版本:
- python 3.8
- torch 2.0.1
- torchaudio 2.0.2
- torchvision 0.15.2
其他需要安装的库请自行安装,例如提取音频特征的opensmile-python等
注意事项:
- 所有的csv文件都使用“#”分隔,使用pandas读入时需要设定 sep = "#"才能正确读入!!!
- 给的write_result函数请不要更改,正确写入csv文件后会有提示
- 音频文件特征提取时间有点长,请耐心等待,提取过程有提示
关于每个实验给出了示例代码程序,需要完善并且优化模型的性能
总数量:5531
| train | dev | test |
|---|---|---|
| 3259 | 1031 | 1241 |
CSV文件说明(使用”#“分隔)
| num | id | path | text | label |
|---|---|---|---|---|
| 文件数量序号(根据部分对话先后顺序排列) | 文件名 | 音频文件相对路径 | 音频的文本内容 | {0,1,2,3}(含义见下表) |
| label | 含义 |
|---|---|
| 0 | angry |
| 1 | happy or excited |
| 2 | neutral |
| 3 | sad |
文件根据使用用途存放到不同的路径,具体的文件名说明如下:
每段对话都由一男一女进行,有即兴发挥也有剧本,每句话都有单独的音频文件(见csv文件中的path)和对应的文本内容(见csv文件的text),csv文件中num的大小表示了对话中对话的先后顺序
文件命名示例:
Ses05F_impro01_F000
Ses05:第五部分
F:女性
impro01:即兴发挥01
000:该说话人在此对话的第000句音频
Ses01M_script01_2_F009
Ses01:第一部分
M:男性
script01_2:剧本01_2
009:该说话人此对话的第009句音频
关于数据的具体细节:
数据已全部放在data文件夹下
CSVfile:
训练集:train.csv
增加其他语言训练集:trans.csv
验证集:dev.csv
测试集:test.csv
带label的测试集:ans.csv
音频数据:
训练数据:train
去噪训练数据:denoised_train
验证数据:dev
测试集:test
npy格式数据:feature
目前三个实验的报告和结果分别在lab2,lab3,lab4
每个实验文件夹下都有best_Model,保存了我最终得到的实验模型,其中hwx.py文件是最终模型运行文件,hwx_report文件是整个实验的说明,hwx_result.csv保存了实验的最终结果,便于最终在测试集上验证模型效果。
文件夹下的其他文件是在找到最优模型过程中尝试的相关方案
实验整体难度不大,关键在于如何找到提升模型性能的方法。
1.数据预处理与特征选择: 在实验过程中我进行了多种尝试,提升模型性能最好的方法是在数据预处理部分,数据是模型性能良好的基础,也正如老师课上所解释的garbage in,garbage out。规范合理的训练数据,非冗余高效的特征选择,才能确保可以尽可能地实现模型的性能优化。
2.模型选择与架构优化: 当然模型的选择和架构的优化也是模型性能良好的关键,在实验中,我尝试了多种模型优化方法,最终取得了不错的效果。
3.其他想法: 当然还有很多其他的想法尚未实现,可以在后续深入研究,比如类似图片-文字对比学习的CLIP,实现将音频-文本对比学习,我看到有人已经实现了AudioCLIP,相信只要有足够的数据,通过该方法也可以创建情感大模型,实现更好的分类预测效果。
也可以将音频和文本在更多维度上进行特征融合,例如使用交叉注意力,或者使用MLP将音频特征投影到文本编码器上,让两种模态信息更好地融合。