【情感识别】PNN概率神经网络语音情感识别【含Matlab源码 544期】-程序员宅基地

技术标签: matlab  Matlab语音处理(进阶版)  

博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
个人主页:海神之光
代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

一、PNN概率神经网络语音情感识别简介

1 语音情感识别系统
在语音情感识别系统中,录制的语料包含5个演员的5种不同情感,即高兴、害怕、悲伤、愤怒和中性,同时语料又被分成训练集和测试集。语音情感识别系统的设计如图1所示。首先对语音信号进行特征提取,采用 HMM 的训练算法(分段 K 均值算法)对 HMM 进行训练,得到各单词的 HMM 参数;其 次,利用该参数求出语音信号的最佳状态时间序 列;再 次,根 据 每 个 HMM 状态对应的若干帧语音倒谱矢量,可以看作是特性相近的语音事件(如音素、音节等),将这些长短不一的具有同一状态的倒谱矢量语音信号应用时间进行规整,使其成为具有相同维数的语音特征矢量;最后用 PNN 神经网络进行语音识别。
在这里插入图片描述
图1 语音情感识别系统

1.1 语音参数特征提取
常用的语音情感识别特征参数主要从时间结、能量、基音、共振峰等结构方面考虑。系统选用平均振幅、最大振幅、语速、语句发音持续时间、平均基音频率、最大基音频率、基音变化率、最大第一共振峰、第一共振峰均值及第一共振峰变化率作为情感特征参数。

1.2 基于PNN的语音情感识别模型
PNN是基于统计原理设计的神经网络模型,见图2所示。用类条件概率密度作为模式划分的依据,网络由输入层、特征层、总和层和输出层构成。输入、输出层由线性神经元组成;特征层为动态概率层,包含 P个神经元,P在网络 训 练 中 动 态 变 化;总 和 层 节 点 是 高 斯 核 函数,该核函数能对输入产生局部响应,从而将输入空间划分成若干小的局部区间,以达到分类和函数逼近的目的;输出层包含 K 个神经元,每个神经元分别对应一个要识别的 语 音 基 元 (实 验 中 取 K =10)。 与 多 层 感 知 器(multi-layerperception,MLP)相比,网络结构在系统面临外界环境因素改变时,仅须对新进的分类数据定义权值,而无须像其他类型的网络结构那样加入新的分类
数据和改变全部的网络权值,同时,该网络学习速度很快,其学习所需的时间为零,因为其网络连结权值只是直接从训练范例中加载所需数据,无迭代过程。当模式矢量维数较高时,PNN 具有良好的分类性能和更快的训练速度。
在这里插入图片描述
图2 PNN结构图

二、部分源代码

lc
close all
clear all
load A_fear fearVec;
load F_happiness hapVec;
load N_neutral neutralVec;
load T_sadness sadnessVec;
load W_anger angerVec;
trainsample(1:30,1:140)=angerVec(:,1:30)‘;
trainsample(31:60,1:140)=hapVec(:,1:30)’;
trainsample(61:90,1:140)=neutralVec(:,1:30)‘;
trainsample(91:120,1:140)=sadnessVec(:,1:30)’;
trainsample(121:150,1:140)=fearVec(:,1:30)‘;
trainsample(1:30,141)=1;
trainsample(31:60,141)=2;
trainsample(61:90,141)=3;
trainsample(91:120,141)=4;
trainsample(121:150,141)=5;
testsample(1:20,1:140)=angerVec(:,31:50)’;
testsample(21:40,1:140)=hapVec(:,31:50)‘;
testsample(41:60,1:140)=neutralVec(:,31:50)’;
testsample(61:80,1:140)=sadnessVec(:,31:50)‘;
testsample(81:100,1:140)=fearVec(:,31:50)’;
testsample(1:20,141)=1;
testsample(21:40,141)=2;
testsample(41:60,141)=3;
testsample(61:80,141)=4;
testsample(81:100,141)=5;
class=trainsample(:,141);
sum=bpnn(trainsample,testsample,class);
figure(1)
bar(sum,0.5);
set(gca,‘XTickLabel’,{‘生气’,‘高兴’,‘中性’,‘悲伤’,‘害怕’});
ylabel(‘识别率’);
xlabel(‘五种基本情感’);

p_train=trainsample(:,1:140)‘;
t_train=trainsample(:,141)’;
p_test=testsample(:,1:140)‘;
t_test=testsample(:,141)’;
sumpnn=pnn(p_train,t_train,p_test,t_test);
figure(2)
bar(sumpnn,0.5);
set(gca,‘XTickLabel’,{‘生气’,‘高兴’,‘中性’,‘悲伤’,‘害怕’});
ylabel(‘识别率’);
xlabel(‘五种基本情感’);
sumlvq=lvq(trainsample,testsample,class);
function sum=bpnn(trainsample,testsample,class)
%输入参数:trainsample是训练样本,testsample是测试样本,class表示训练样本的类别,与trainsample中数据对应
%sum:五种基本情感的识别率
for i=1:140
feature(:,i)= trainsample(:,i);
end
%特征值归一化
[input,minI,maxI] = premnmx( feature’) ;

%构造输出矩阵
s = length( class ) ;
output = zeros( s , 5 ) ;
for i = 1 : s
output( i , class( i ) ) = 1 ;
end

%创建神经网络
net = newff( minmax(input) , [10 5] , { ‘logsig’ ‘purelin’ } , ‘traingdx’ ) ; %创建前馈神经网络

%设置训练参数
net.trainparam.show = 50 ;
net.trainparam.epochs = 150 ;
net.trainparam.goal = 0.1 ;
net.trainParam.lr = 0.05 ;

%开始训练
net = train( net, input , output’ ) ;

%读取测试数据
for i=1:140
featuretest(:,i)= testsample(:,i);
end
c=testsample(:,141);
%测试数据归一化
testInput = tramnmx(featuretest’ , minI, maxI ) ;

%仿真
Y = sim( net , testInput )
sum=[0 0 0 0 0]; %每类情感正确识别个数
%统计识别正确样本数
for i=1:20
if Y(1,i)>Y(2,i)&&Y(1,i)>Y(3,i)&&Y(1,i)>Y(4,i)&&Y(1,i)>Y(5,i)
sum(1)=sum(1)+1;
end
function sumlvq=lvq(trainsample,testsample,class)
P=trainsample(:,1:140)‘;
C=class’;
T=ind2vec;
net=newlvq(minmax§,20,[0.2 0.2 0.2 0.2 0.2],0.1); %创建lvq网络
w1=net.IW{1};
net.trainParam.epochs=100;
net=train(net,P,T);
y=sim(net,testsample(:,1:140)');
y3c=vec2ind(y);
sumlvq=[0 0 0 0 0]; %每类情感正确识别个数
%统计识别正确样本数
for i=1:20
if y3c(i)==1
sumlvq(1)=sumlvq(1)+1;
end
end
for i=21:40
if y3c(i)==2
sumlvq(2)=sumlvq(2)+1;
end
end
for i=41:60
if y3c(i)==3
sumlvq(3)=sumlvq(3)+1;
end
end
for i=61:80
if y3c(i)==4
sumlvq(4)=sumlvq(4)+1;
end
end
for i=81:100
end

三、运行结果

在这里插入图片描述
在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.
[3]叶斌.基于HMM和PNN的语音情感识别研究.[J]青岛大学学报(工程技术版). 2011,26(04)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/KeepingMatlab/article/details/135042332

智能推荐

arcgis10之获取面要素中心点坐标_arcgis获取面的中心点坐标-程序员宅基地

文章浏览阅读1.7w次,点赞16次,收藏44次。第一步 获取中心的文件第二步 新建两个存储中心点做坐标的字段第三步 计算要要素中心的xy坐标同理,计算中心点Y坐标即可_arcgis获取面的中心点坐标

C:L1-061 新胖子公式 (10分)-程序员宅基地

文章浏览阅读1.4k次。根据钱江晚报官方微博的报导,最新的肥胖计算方法为:体重(kg) / 身高(m) 的平方。如果超过 25,你就是胖子。于是本题就请你编写程序自动判断一个人到底算不算胖子。输入格式:输入在一行中给出两个正数,依次为一个人的体重(以 kg 为单位)和身高(以 m 为单位),其间以空格分隔。其中体重不超过 1000 kg,身高不超过 3.0 m。输出格式:首先输出将该人的体重和身高代入肥胖...

Python中 list, numpy.array, torch.Tensor的相互转化_一个列表中含多个torch.tensor如何转化为np.array-程序员宅基地

文章浏览阅读598次。Python中 list, numpy.array, torch.Tensor 格式相互转化原地址:https://www.cnblogs.com/siyuan1998/p/10792481.html1.1 list 转 numpyndarray = np.array(list)1.2 numpy 转 listlist = ndarray.tolist()2.1 list 转 torch.Tensortensor=torch.Tensor(list)2.2 torch.Tensor 转 li_一个列表中含多个torch.tensor如何转化为np.array

Linux文件系统_(1)创建目录/home/guestuser1/work1,/home/guestuser/work-程序员宅基地

文章浏览阅读4.9k次。【操作过程】:(1)根据项目描述要求在/home/guestuser1/目录下分别创建work1和work2两个子目录,由于已经明确所要生成目录的绝对路径,所以可以通过mkdir命令直接生成指定的目录,执行命令:$mkdir /home/guestuser1/work1$mkdir /home/guestuser1/work2需要注意的是,在生成目录时,可以使用绝对路径,也可以使用相对路径。如果只写出一个目录的名字,则新的目录将会在当前目录中。(2)要进入指定的路径,可以直接使用_(1)创建目录/home/guestuser1/work1,/home/guestuser/work2;(2)将当前目录切

Spring各注册bean注解对应模式及其生命周期存亡_spring用注解设置bean的生命周期注解是那个-程序员宅基地

文章浏览阅读652次。一、注解模式@Component注解默认实例化的对象是单例,如果想声明成多例对象可以使用@Scope(“prototype”)@Repository默认单例@Service默认单例@Controller默认多例二、Spring中的bean的生命周期singleton(全局的)是随着spring的存亡而存亡prototype 又叫多例模式,用的时候就new一下,用完就没有了。session 存在这一次会话 session 中,session过期后它就没了。request_spring用注解设置bean的生命周期注解是那个

【微信小程序开发与设计】垃圾智能分类小程序_垃圾分类微信小程序-程序员宅基地

文章浏览阅读7.3k次,点赞12次,收藏73次。垃圾分类是将来生活可持续发展的必需项。但是很多人由于缺乏垃圾分类知识,或是因为垃圾分类困难,费时费力,所以没有好好贯彻垃圾分类政策,此时设计一款方便于群众进行智能化垃圾识别分类的微信小程序就显得尤为必要。_垃圾分类微信小程序

随便推点

docker怎么访问宿主中redis服务6379端口_docker redis怎么开放端口-程序员宅基地

文章浏览阅读7.3k次。1.宿主机中执行ifconfig, 获取当前的ip,2.配置redis 2.1关闭redis的保护模式(即会阻挡外部网址访问), 首先打开redis的配置文件redis.conf, 然后找到protected-mode yes一行将yes改为no,当然如果你本身就是no就不用修改了 2.2 确保redis监听的本地所有地址,而不只是127.0.0.1地址(默认只监听这个地址) . 还是找到redis.conf文件找到绑定地址指令一般为bind 127.0.0.1 :1 , 在这行前将#,..._docker redis怎么开放端口

机器学习技法课程学习笔记11 -- Gradient Boosted Decision Tree_boosted decision tree learners的算法-程序员宅基地

文章浏览阅读873次。上节课我们主要介绍了Random Forest算法模型。Random Forest就是通过bagging的方式将许多不同的decision tree组合起来。除此之外,在decision tree中加入了各种随机性和多样性,比如不同特征的线性组合等。RF还可以使用OOB样本进行self-validation,而且可以通过permutation test进行feature selection。本节课_boosted decision tree learners的算法

大数据 day01笔记 —(大数据的介绍)-程序员宅基地

文章浏览阅读93次。什么是大数据?​ 字面意思理解:大量的数据,海量的数据​ 数据集的大小已经远远超过了现有普通数据库软件和工具的处理能力的数据大数据有什么特点?​ 海量化​ 数据量大(多)​ 多样化​ 结构化数据,半结构化数据,和非结构化数据​ 快速化​ 数据的增长速度快​ 高价值​ 海量数据价值高大数据能做什么?​ 1、海量数据快速查询​ 2、海量数据的存储(数据量大,单个大文...

解决pip的ImportError: cannot import name 'PackageFinder' from 'pip._internal.index' (xxxx)-程序员宅基地

文章浏览阅读2.1w次,点赞18次,收藏19次。问题出现环境:ubuntu16.04 ,anacona中的一个py37的环境,pip版本20.0.1当时是为了install fbs,使用conda环境python对应的pip报错如下:ImportError: cannot import name 'PackageFinder' from 'pip._internal.index' (/home/yushan/anaconda3/lib/..._importerror: cannot import name 'packagefinder' from 'pip._internal.index' (

python数学公式编辑器_GitHub - EruDev/python_data_structures_and_algorithms: Python 中文数据结构和算法教程...-程序员宅基地

文章浏览阅读159次。Python 算法与数据结构视频教程课程简介数据结构和算法是每个程序员需要掌握的基础知识之一,也是面试中跨不过的槛。目前关于 Python 算法和数据结构的中文资料比较欠缺,笔者尝试录制视频教程帮助 Python 初学者掌握常用算法和数据结构,提升开发技能。本教程是付费教程(文字内容和代码免费),因为笔者录制的过程中除了购买软件、手写板等硬件之外,业余需要花费很多时间和精力来录制视频、查资料、编写..._算法导论作者 开发数学编辑器

ubuntu系统重启系统丢失问题_ubuntu重启后配置都没有了-程序员宅基地

文章浏览阅读2.2k次。1.问题现象工作电脑系统为ubuntu16.04,昨天早上使用时,突然发现多出来一个100Mb的盘符,类似新增了一个硬盘,进入后可以看到ubuntu系统的各个目录结构及相关文件,但是并不wan'zhe_ubuntu重启后配置都没有了

推荐文章

热门文章

相关标签