前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究

MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究

作者头像
拓端
发布于 2025-03-11 13:12:31
发布于 2025-03-11 13:12:31
16701
代码可运行
举报
文章被收录于专栏:拓端tecdat拓端tecdat
运行总次数:1
代码可运行

全文链接:https://tecdat.cn/?p=38258

在语音处理领域,对语音情感的分类是一个重要的研究方向。本文将介绍如何通过结合二维卷积神经网络(2 - D CNN)和长短期记忆网络(LSTM)构建一个用于语音分类任务的网络,特别是针对语音情感识别这一应用场景。文中将展示相关代码和实验结果,包括数据处理、模型架构定义、训练以及测试等环节,并对重要步骤和结果进行详细阐述和分析点击文末“阅读原文”获取完整代码数据)。

视频

方法

(一)数据准备

  • 数据下载 本文使用柏林情感语音数据库(Emo - DB)来训练模型。这个数据集包含了由10个演员说出的535个语句,这些语句被标记为愤怒、无聊、厌恶、焦虑/恐惧、快乐、悲伤或中性这七种情感之一。
  • 提取情感标签 文件名编码了说话者ID、所说文本、情感和版本信息。情感标签的编码如下:“W—愤怒”、“L—无聊”、“E—厌恶”、“A—焦虑/恐惧”、“F—快乐”、“T—悲伤”、“N—中性”。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filepaths = ads.Files;
\[~,filenames\] = fileparts(filepaths);
emotionLabels = extractBetween(filenames,6,6);

这段代码首先获取audioDatastore对象中所有音频文件的路径,然后提取文件名,并从文件名的第六个字符获取情感标签。

  • 标签转换 将单字母代码形式的标签替换为描述性标签,并将标签转换为分类数组。
  • 设置标签属性并查看分布

首先将提取并转换后的情感标签设置为audioDatastore对象的Labels属性。然后,通过绘制直方图来查看不同情感类别的数据分布情况。

  • 读取样本、查看波形和试听
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\[audio,info\] = read(ads);
fs = info.SampleRate;
sound(audio,fs)

上述代码从数据存储中读取一个音频样本,获取其采样率,播放该音频。同时,绘制音频的波形图,标题显示其情感类别

  • 数据划分与增强 将数据划分为训练集、验证集和测试集,其中训练集占70%,验证集和测试集各占15%。
代码语言:javascript
代码运行次数:1
运行
AI代码解释
复制
\[adsTrain,adsValidation,adsTest\] = splitEachLabel(ads,0.70,0.15,0.15);

为了提高模型的拟合能力,在训练数据有限的情况下,可以通过数据增强的方式增加训练数据量。创建一个audioDataAugmenter对象,指定每个文件的增强次数、音高偏移概率、时间偏移概率和范围、添加噪声概率和信噪比范围等参数。

创建一个新文件夹来存储增强后的数据,然后通过循环遍历数据存储和使用音频数据增强器来增强训练数据。对于每个增强样本,进行归一化处理,并将其保存为WAV文件。

最后,创建增强数据的音频数据存储对象,并将其标签设置为原始训练数据标签的重复元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
augadsTrain = audioDatastore(agumentedDataFolder);
augadsTrain.Labels = repelem(adsTrain.Labels,augmenter.NumAugmentations,1);
  • 特征提取 使用audioFeatureExtractor对象从音频数据中提取特征,指定窗口长度、跳跃长度、窗口类型和要提取的频谱类型等参数。

设置特征提取器的参数,包括梅尔频带数量和是否禁用窗口归一化。

使用preprocessAudioData函数从训练集、验证集和测试集中提取特征和标签。

绘制一些训练样本的波形和听觉频谱图,如下代码所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
numPlots = 3;
idx = randperm(numel(augadsTrain.Files),numPlots);
f = figure;
f.Position(3) = 2*f.Position(3);

tiledlayout(2,numPlots,TileIndexing = "columnmajor")

结果如训练样本的波形和频谱图所示。同时查看前几个观测值的大小,以确保网络能够支持训练数据,并计算输入层最短序列的长度。


(二)模型架构定义

定义二维CNN - LSTM网络,用于预测序列的类别标签,网络结构如下所示:

对于序列输入,指定一个序列输入层,其输入大小与输入数据匹配,并设置MinLength选项为训练数据中最短序列的长度。使用二维CNN架构来学习一维图像序列中的空间关系,包括四个重复的卷积、批量归一化、ReLU和最大池化层块,并逐渐增加第三和第四卷积层的滤波器数量。通过包含一个具有256个隐藏单元的LSTM层来学习一维图像序列中的长期依赖关系,并将OutputMode选项设置为"last",仅输出最后一个时间步。对于分类任务,包含一个全连接层和一个softmax层,最后添加一个分类层。

(三)训练选项指定

使用trainingOptions函数指定训练选项,包括使用Adam优化器、小批量大小、训练轮数、初始学习率、学习率调整策略、L2正则化项、序列填充方向、是否打乱数据、验证频率、是否显示训练进度以及是否在GPU上训练等参数,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
miniBatchSize = 32;

options = trainingOptions("adam",...
    MaxEpochs = 3,...
    MiniBatchSize = miniBatchSize,...

模型训练与测试

(一)训练网络

使用trainNetwork函数训练网络,如果没有GPU,训练可能会花费较长时间

(二)测试网络

使用训练好的网络对测试数据进行分类,并通过比较预测结果和真实标签来评估模型的分类准确率。首先,对测试数据进行分类。

然后,通过绘制混淆矩阵来可视化预测结果,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
figure
confusionchart(labelsTest,labelsPred)

结果如混淆矩阵图所示。最后,通过计算预测结果和测试标签相同的比例来评估分类准确率,本次实验得到的准确率为0.6329

结论

本文详细介绍了基于二维CNN - LSTM网络的语音情感分类模型的构建、训练和测试过程。通过对柏林情感语音数据库的实验,展示了模型在语音情感分类任务上的性能。虽然取得了一定的准确率,但仍有改进的空间,例如进一步优化数据增强策略、调整模型架构或训练参数等,未来的研究可以在此基础上继续深入。同时,本文中的方法和代码也可以为相关领域的研究人员提供参考和借鉴。

参考文献

[1] Burkhardt, Felix, A. Paeschke, M. Rolfes, Walter F. Sendlmeier, and Benjamin Weiss. “A Database of German Emotional Speech.” In Interspeech 2005, 1517–20. ISCA, 2005. https://doi.org/10.21437/Interspeech.2005 - 446.

[2] Zhao, Jianfeng, Xia Mao, and Lijiang Chen. “Speech Emotion Recognition Using Deep 1D & 2D CNN LSTM Networks.” Biomedical Signal Processing and Control 47 (January 2019): 312–23. https://doi.org/10.1016/j.bspc.2018.08.035.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拓端数据部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AI,深度学习和机器学习:选择最适合的方法
机器学习:构建自动根据数据开展学习的模型的技术。可以分为“传统机器学习” 和 “深度机器学习”。 传统机器学习
平常心
2021/04/14
6990
神经网络结构——CNN、RNN、LSTM、Transformer !!
本文将从什么是CNN?什么是RNN?什么是LSTM?什么是Transformer?四个问题,简单介绍神经网络结构。
JOYCE_Leo16
2024/03/19
28.8K0
神经网络结构——CNN、RNN、LSTM、Transformer !!
使用CNN-LSTM混合深度学习分类基于MUSE采集的运动想象EEG信号
脑机接口(BrainComputer Interfaces)技术是将人脑与外部设备建立起直接的通路,在智能助残、人机工程、神经康复训练等领域有巨大的应用潜力。随着技术发展,BCI不仅可以用于运动障碍患者,甚至可以用于健康人群以增强他们的行动能力。为了将BCI应用进一步推广,本文采用了一种便携、低侵入性的头带式设备来采集被试主动式运动想象的脑电信号,并使用卷积神经网络和长短时记忆网络混合对脑电信号进行分类识别。研究结果表明,配合混合神经网络,这种低侵入式的检测方法依然可以达到很高的运动意图识别准确率(96.5%)。该论文是一篇结合了实验方案、采集设备、深度学习算法的综合性原创BCI研究论文,既可以用于BCI行业入门学习,了解BCI的一般研究方法,也可以为BCI领域内研究人员提供新方法的参考。
脑机接口社区
2020/11/11
1.5K0
使用CNN-LSTM混合深度学习分类基于MUSE采集的运动想象EEG信号
PaddlePaddle︱开发文档中学习情感分类(CNN、LSTM、双向LSTM)、语义角色标注
PaddlePaddle出教程啦,教程一部分写的很详细,值得学习。 一期涉及新手入门、识别数字、图像分类、词向量、情感分析、语义角色标注、机器翻译、个性化推荐。 二期会有更多的图像内容。 随便,帮国产框架打广告:加入TechWriter队伍,强大国产深度学习利器。https://github.com/PaddlePaddle/Paddle/issues/787 . .
悟乙己
2019/05/26
1.2K0
Python TensorFlow双向Bi-LSTM长短期记忆神经网络深度学习可视化用户传感器活动数据
在本文中,我们旨在利用深度学习技术,特别是TensorFlow框架下的Keras库,对WISDM(无线传感器数据挖掘)数据集进行活动识别。(点击文末“阅读原文”获取完整代码数据)。
拓端
2025/04/15
1260
Python TensorFlow双向Bi-LSTM长短期记忆神经网络深度学习可视化用户传感器活动数据
搭建LSTM(深度学习模型)做文本情感分类的代码
传统的文本情感分类思路简单易懂,而且稳定性也比较强,然而存在着两个难以克服的局限性: 一、精度问题,传统思路差强人意,当然一般的应用已经足够了,但是要进一步提高精度,却缺乏比较好的方法; 二、背景知识问题,传统思路需要事先提取好情感词典,而这一步骤,往往需要人工操作才能保证准确率,换句话说,做这个事情的人,不仅仅要是数据挖掘专家,还需要语言学家,这个背景知识依赖性问题会阻碍着自然语言处理的进步。 庆幸的是,深度学习解决了这个问题(至少很大程度上解决了),它允许我们在几乎“零背景”的前提下,为某个领域的实际问
机器学习AI算法工程
2018/03/15
2.3K0
深度学习(一)基础:神经网络、训练过程与激活函数(1/10)
深度学习作为机器学习的一个子领域,近年来在人工智能的发展中扮演了举足轻重的角色。它通过模仿人脑的神经网络结构,使得计算机能够从数据中学习复杂的模式和特征,从而在图像识别、自然语言处理、游戏等领域取得了突破性的进展。
正在走向自律
2024/12/18
5720
深度学习(一)基础:神经网络、训练过程与激活函数(1/10)
听音识情绪 | 程序员手把手教你搭建神经网络,更快get女朋友情绪,求生欲max!⛵
《礼记·乐记》中说:“凡音之起,由人心生也。人心之动,物使之然也。感于物而动,故形于声。声相应,故生变。”
ShowMeAI
2022/08/09
7130
听音识情绪 | 程序员手把手教你搭建神经网络,更快get女朋友情绪,求生欲max!⛵
深层卷积神经网络在路面分类中的应用
编者按:路面峰值附着系数是实现车辆精确运动控制的关键参数。现有的路面识别方法多是基于车辆动力学构建状态观测器实现。此类方法通常适用于车辆加速和减速期间,在轮胎力饱和的情况下,例如在强制动条件下,确定摩擦系数是可行的。困难在于在更正常的驾驶环境下获得摩擦估计,也就是当轮胎滑移率较小时的估计(路面附着利用较低)。实际的道路环境往往复杂多变,而此类方法的收敛速度往往不足以实现实时估计的要求。因此,如何实现高精度实时的路面识别方法将会是此类方法研究的难点与重点。与此同时,基于机器视觉的路面识别方法的优势在于探测范围广、预测性强,但是易受环境中的光线等因素干扰,未来此类方法的研究重点会放在抗干扰能力和对图像识别准确率上。而基于车辆动力学的识别方法与基于图像的识别方法的有效结合,可以充分解决实时性与准确性冲突的问题,基于图像的识别方法为基于车辆动力学的识别方法提供预测的参考输入,可以提前获悉前方路面的特征,使得智能驾驶系统的性能得到提升。
智能算法
2019/07/16
1.7K0
深层卷积神经网络在路面分类中的应用
【机器学习】——神经网络与深度学习:从基础到应用
神经网络是一类仿生算法,通过连接不同的节点(即神经元),实现信息的传递和处理。每个神经元都能接收多个输入信号,经过加权求和后通过激活函数产生输出。神经网络最早于20世纪40年代提出,但直到深度学习技术兴起,才得以广泛应用。
用户11286421
2024/10/10
6340
【AIDL专栏】陶建华:深度神经网络与语音(附PPT)
“人工智能前沿讲习班”(AIDL)由中国人工智能学会主办,旨在短时间内集中学习某一领域的基础理论、最新进展和落地方向,并促进产、学、研相关从业人员的相互交流。对于硕士、博士、青年教师、企事业单位相关从业者、预期转行AI领域的爱好者均具有重要的意义。2018年AIDL活动正在筹备,敬请关注公众号获取最新消息。
马上科普尚尚
2020/05/14
1.4K0
【AIDL专栏】陶建华:深度神经网络与语音(附PPT)
用深度学习构建声乐情感传感器
人类的表达是多方面的,复杂的。例如,说话者不仅通过语言进行交流,还通过韵律,语调,面部表情和肢体语言进行交流。这就是为什么更喜欢亲自举行商务会议而不是电话会议,以及为什么电话会议或发短信会优先考虑电话会议。越接近通信带宽就越多。
代码医生工作室
2019/08/20
1.3K0
用深度学习构建声乐情感传感器
脑机接口新应用,利用深度学习对无声语音信号解码
浙江大学、中国矿业大学和伦敦大学的研究人员研究了可用于识别神经肌肉信号的空间特征和解码器。具体来说,研究人员提出了利用迁移学习和深度学习的方法,将表面肌电信号数据转换为包含丰富的时频域信息的声谱图。对于迁移学习,在大型图像数据集上使用一个预先训练好的Xception模型来生成特征。然后利用提取的特征对三种深度学习方法(MLP、CNN和bLSTM)进行训练,并对其进行评价,以识别词集中的发音肌肉运动。所提出的解码器成功地识别了无声语音,双向长短时记忆的准确率达到了90%,优于其他两种算法。实验结果验证了谱图特征和深度学习算法的有效性。
脑机接口社区
2022/08/17
6550
脑机接口新应用,利用深度学习对无声语音信号解码
深度学习(五):语音处理领域的创新引擎(5/10)
在语音处理领域,传统方法如谱减法、维纳滤波等在处理复杂语音信号时存在诸多局限性。这些方法通常假设噪声是平稳的,但实际噪声往往是非平稳的,导致噪声估计不准确。同时,为了去除噪声,传统方法不可避免地会对语音信号造成一定程度的失真,影响语音的自然性,且面对复杂多变的噪声环境,传统方法的适应性和鲁棒性有限。
正在走向自律
2024/12/18
2280
深度学习(五):语音处理领域的创新引擎(5/10)
Matlab用深度学习循环神经网络RNN长短期记忆LSTM进行波形时间序列数据预测|附代码数据
LSTM 网络是一种循环神经网络 (RNN),它通过循环时间步长和更新网络状态来处理输入数据。网络状态包含在所有先前时间步长中记住的信息。您可以使用 LSTM 网络使用先前的时间步长作为输入来预测时间序列或序列的后续值。要训练 LSTM 网络进行时间序列预测,请训练具有序列输出的回归 LSTM 网络,其中响应(目标)是训练序列,其值偏移了一个时间步长。换句话说,在输入序列的每个时间步,LSTM 网络学习预测下一个时间步的值。
拓端
2023/02/13
1K0
基于对数谱图的深度学习心音分类
这是一篇很有意思的论文,他基于心音信号的对数谱图,提出了两种心率音分类模型,我们都知道:频谱图在语音识别上是广泛应用的,这篇论文将心音信号作为语音信号处理,并且得到了很好的效果。
deephub
2023/09/25
2940
基于对数谱图的深度学习心音分类
Matlab-基于短时神经网络的声音分类
生成1000个白噪声信号、1000个棕色噪声信号和1000个粉色噪声信号。假设采样率为44.1 kHz,每个信号表示0.5秒的持续时间。
用户9925864
2022/07/27
5410
Matlab-基于短时神经网络的声音分类
基于深度学习的人类行为识别算法研究
本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究!
是Dream呀
2025/03/15
930
基于深度学习的人类行为识别算法研究
深度学习基础之循环神经网络
循环神经网络(Recurrent Neural Network,简称RNN)是一种专门用于处理序列数据的神经网络模型。其核心特点是通过在时间维度上重复使用相同的神经元结构,利用前一时间步骤的信息来影响当前步骤的输出,从而实现对序列数据的有效建模。
用户11315985
2024/10/16
1920
深度学习基础之循环神经网络
DNN/LSTM/Text-CNN情感分类实战与分析
最近把2014年Yoon Kim的《Convolutional Neural Networks for Sentence Classification》看了下,不得不说虽然Text-CNN思路比较简单,但确实能够在Sentence Classification上取得很好的效果。另外,之前@霍华德大神提了这个问题,链接如下:
zenRRan
2019/08/09
2.7K3
推荐阅读
相关推荐
AI,深度学习和机器学习:选择最适合的方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档