当前位置:网站首页>听音识情绪 | 程序员手把手教你搭建神经网络,更快get女朋友情绪,求生欲max!
听音识情绪 | 程序员手把手教你搭建神经网络,更快get女朋友情绪,求生欲max!
2022-08-09 18:35:00 【51CTO】
作者: 韩信子@ ShowMeAI
深度学习实战系列: https://www.showmeai.tech/tutorials/42
NLP实战系列: https://www.showmeai.tech/tutorials/45
本文地址: https://www.showmeai.tech/article-detail/291
声明:版权所有,转载请联系平台与作者并注明出处
收藏 ShowMeAI查看更多精彩内容
《礼记·乐记》中说:“凡音之起,由人心生也。人心之动,物使之然也。感于物而动,故形于声。声相应,故生变。”
这说的是人对于一种事物有感而生,必然表现在声音上。而晚清名臣曾国藩也提到,他在认人识人中有自己独到的方法,其中,特别喜欢通过声音来识别人才。他认为,声音不仅能反映出一个人的贵贱和修养,也能听出其内心情绪变化。结合这个方法他一生提拔了大量人才。
既然声音对一个人的情绪性格表现这么明显,AI算法能不能根据声音识别情绪和气氛呢?如果来电话的女朋友,一张口AI就知道是什么情绪状态,钢铁直男小哥哥们可能求生欲技能可以plus max。
在本篇内容中,ShowMeAI就针对「语音情感识别任务」,手把手带大家来构建一个处理和分类语音检测情绪的系统。
背景概述
要完成语音情绪识别任务,我们先来了解一点基础知识:
语音包括三类不同的特征:
词汇特征(使用的词汇)
视觉特征(说话者的表达方式)
声学特征(音高、音调、抖动等声音属性)
我们当然可以基于词汇(文本)或者视觉信息来做情绪分类,在本篇内容中我们聚焦在声学特征进行分类,我们构建一个深度学习的神经网络来完成这个任务。
当然使用深度学习网络进行情绪识别也有其自身的挑战。大家都知道,情绪是高度主观的,解释因人而异;而且很多时候,我们很难将情绪归类为单一类别,我们在任何给定时间都可能感受到一系列情绪。所以真实解决这个问题的时候,数据的采集和标注其实是一个有挑战的任务。
数据说明
在本篇中,ShowMeAI使用到的是公开数据集RAVDESS来训练该模型。RAVDESS 数据集包含1440个文件,覆盖两种不同类型的数据:演讲和歌曲。由24位专业演员(12位女性,12位男性)录制,语音情绪包括平静、快乐、悲伤、愤怒、恐惧、惊讶和厌恶。每种情绪都包含2种不同的程度(正常,强烈)。
数据可以在 kaggle平台数据页下载,大家也可以在ShowMeAI的百度网盘中直接下载整理好的版本。
实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [4] 搭建基于深度学习的语音情感识别系统 『RAVDESS Emotional speech audio 数据集』
ShowMeAI官方GitHub: https://github.com/ShowMeAI-Hub
神经网络开发应用
我们使用神经网络来对音频数据进行理解和分析预估,有不同的神经网络可以使用(多层感知器、 CNN 和 LSTM 等都可以处理音频时序数据),基于效率和效果考虑,我们下面会构建深度卷积神经网络来对音频文件中的情绪进行分类。
关于卷积神经网络的详细知识可以参考 ShowMeAI下述教程:
① 数据导入与简单分析
我们首先导入数据,并做一点简单的可视化和分析,这里的音频数据我们会使用 LibROSA工具库来处理和绘图(波形和频谱图)。
针对语音相关的任务(语音识别、声纹识别等),MFCC(Mel Frequency Cepstrum Coefficient,Mel频率倒谱系数)是非常有效的表征特征。Mel频率是基于人耳听觉特性提出来的,它与Hz频率成非线性对应关系。Mel频率倒谱系数(MFCC)则是利用它们之间的这种关系,计算得到的Hz频谱特征,它广泛地应用在语音各项任务中。使用 LibROSA 包可以轻松导入音频数据并提取 MFCC 格式信息。
我们得到了如下的音频波形图
下面我们绘制一下音频的频谱图
生成的频谱图如下图所示。
② 数据标签构建与映射
下一步我们来构建一下分类问题的标签数据
输出的label如下所示
③ 数据处理与特征工程
我们已经对数据做了初步理解了,下面我们从音频文件中提取特征(音频信息表征),模型可以更有效地对音频进行建模和预估。这里的特征提取我们依旧使用 LibROSA 库。
因为CNN模型的输入维度是固定的,我们在特征提取过程中,限制了音频长度(3 秒,大家在计算资源足的情况下可以选择更长的时间)。我们还做了一点处理,把每个文件的采样率增加了一倍,同时保持采样频率不变。这个操作是为了收集到更多特征。
得到的特征列和标签列如下所示:
④ 模型构建与优化
在完成数据特征抽取之后,我们可以开始建模了,为了科学地建模和效果评估,我们会将模型分为训练集和测试集,用测试集评估模型的性能。
我们得到如下的训练集部分样本
在实际建模的时候,标签的格式要适用网络最后的softmax结构,我们对标签label使用LabelEncoder进行映射处理,得到one-hot的表示。
关于one-hot独热向量编码,可以查看ShowMeAI的 机器学习实战教程中的文章 机器学习特征工程最全解读
我们得到的 y_train 形如下面格式:
下面我们构建一个深度卷积网络来完成分类问题。这个 CNN 模型包括Conv1D卷积层、pooling池化层,以及 Dropout 随机失活层,以及最后的全连接层。
我们得到如下信息,大家可以清晰地看到模型结构
下面我们使用模型对数据进行拟合训练
部分训练信息如下:
⑤ 模型存储及测试集评估
⑥ 测试集预估
结果如下:
实时预估演示
下面我们录制了一个实时音频文件,并在得到的模型上进行测试。
我们得到正确的结果array(['male_sad'], dtype=object)
。
参考资料
- 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [4] 搭建基于深度学习的语音情感识别系统 『RAVDESS Emotional speech audio 数据集』
- ShowMeAI官方GitHub: https://github.com/ShowMeAI-Hub
- 深度学习教程 | 吴恩达专项课程 · 全套笔记解读: https://www.showmeai.tech/tutorials/35
- 卷积神经网络解读: https://www.showmeai.tech/article-detail/221
- 深度学习与计算机视觉教程: https://www.showmeai.tech/tutorials/37
- 卷积神经网络详解: https://www.showmeai.tech/article-detail/264
- 机器学习实战教程: http://showmeai.tech/tutorials/41
- 机器学习特征工程最全解读: https://www.showmeai.tech/article-detail/208
边栏推荐
猜你喜欢
[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)
全自动化机器学习建模!效果吊打初级炼丹师!
[免费专栏] Android安全之Android Studion 动态调试APK的两种方法
一些自动化测试01
Linux上给PHP安装redis扩展
IDEA工具常用配置
YOLO v3源码详解
shell之变量详解,让你秒懂!
ebook download | "Business executives' IT strategy guide - why enterprises should implement DevOps"
优秀的 Verilog/FPGA开源项目介绍(三十一)- OFDM
随机推荐
牛客网 Verilog 在线编程题库解答(VL1~VL10)
毕昇编译器优化:Lazy Code Motion
重庆智博会|2022智博会到底有哪些看点?拭目以待
How to stop the test after reaching a given number of errors during stress testing in JMeter
开源一夏 | 基于若依架构的列表详情展示
渗透测试——CFS三层靶机内网渗透实操
JMeter压测时如何在达到给定错误数量后停止测试
基于CC2530 E18-MS1-PCB Zigbee DIY作品(三)
鹅厂机器狗花式穿越10m梅花桩:前空翻、单桩跳、起身作揖...全程不打一个趔趄...
Fully automated machine learning modeling!The effect hangs the primary alchemist!
C#/VB.NET: Extract text and pictures from PowerPoint document
[免费专栏] Android安全之Xposed插件开发【从零手把手带】教程
Detailed explanation of VIT transformer
启动 CM agent 报错——ImportError: libssl.so.10: cannot open shared object file: No such file or directory
关于加强专业学位研究生课程体系建设的意见
Why is the data of maxcompute garbled when imported into mysql?The table of mysql is the encoding of udf8mb4
[免费专栏] Android安全之GDB动态调试APP
[免费专栏] Android安全之和平精英(FZ)APK逆向分析
重磅!上海985教授当选!全球仅4人!
你应该试着独自做个游戏