【情感识别】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

智能推荐

gitlab上克隆远程分支到本地(报错-error: RPC failed; curl 18 transfer closed with outstanding read data remaining)_gitlab 18: transfer closed with outstanding read d-程序员宅基地

文章浏览阅读2.7k次。首先确保你的电脑有安装git环境,本人使用的是windows下的git环境。双击桌面图标 的Git Bash 打开窗口修改配置git config --global user.namegit config --global user.email如:git config --global user.name "muzidigbig"git config --glo..._gitlab 18: transfer closed with outstanding read data remaining

springboot+Shiro快速入门:简洁版(快速搭建示例)_springboot+shiro快速入门:简洁版(快速搭建示例)-程序员宅基地

文章浏览阅读311次,点赞2次,收藏2次。springboot整合shiro快速入门简洁版_springboot+shiro快速入门:简洁版(快速搭建示例)

21 款 yyds 的 IDEA插件-程序员宅基地

文章浏览阅读347次。点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料最近,闲来无事,为了改变一下枯燥的编程环境,特地搜寻了下有助提升代码功力的..._activate mybatis log

使用Jenkins Pipeline插件和Docker打造容器化构建环境-程序员宅基地

文章浏览阅读7k次。Docker和Jenkins像DevOps界的巧克力和花生酱那样,它们的组合产生了无数的机会,当然也产生了很多难题,笔者将提及这两个方面。本文中,我假定读者已经熟悉Jenkins和Docker,我将把焦点放在特定的配置上而不是把笔墨花费在许多博文已经介绍过的入门概念上。设定目标我所要达成的目标其实非常简单:在一个容器中搭建Jenkins主节点,并且在多个主机上搭建多个JNLP代理容器。这些代理节点..._jenkins 插件containernode.inside

青少年软件编程(202209)(C语言)(树&堆&图)等级考试(七级)试题及参考答案_青少年 c语言编程 题目-程序员宅基地

文章浏览阅读359次。给定一棵二叉树,求该二叉树的深度二叉树深度定义:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的节点个数为树的深度时间限制:1000内存限制:65535输入第一行是一个整数n,表示二叉树的结点个数。二叉树结点编号从1到n,根结点为1,n _青少年 c语言编程 题目

unity3d与android交互:aar导出给unity:闪退,Theme.AppCompat.Light,appcompat-v7问题_unity3d 启动aar包的android activity不能显示-程序员宅基地

文章浏览阅读594次。unity接sdk,打包报错 No resource found that matches the given name ‘Theme.AppCompat.Light’.这是因为sdk中用了这个主题,冒然的删除,会导致后面出来的功能有问题使用appcompat-v7-23.0.0.aar解决,这个里面包含了资源,单纯的jar包不行appcompat-v7-23.0.0.aar可以通过androidsdk文件中SDKManager下载Unity接sdk,运行中报错java.lang.NoClassD_unity3d 启动aar包的android activity不能显示

随便推点

MATLAB db4小波分解与重构,语音降噪-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏23次。小波变换3级分解Mallat图:将带噪语音作为输入信号进行逐级DWT小波分解,并将分解出的低频成分cA3cA_3cA3​与强制置0后的高频成分cD3cD_3cD3​,cD2cD_2cD2​,cD1cD_1cD1​进行小波重构。Demo:clc,clear[x,Fs]= audioread('MUsic_Test.wav');snr = 20; %设定信噪比,单位dbnoise = randn(size(x)); % 用randn函数产生高斯白噪声Nx = length(x_db4小波

安装和配置SNMP(windows10和Linux)--附SNMP客户端工具_snmp工具-程序员宅基地

文章浏览阅读8.3k次,点赞5次,收藏34次。首先需要安装 snmp ,使用下面的命令进行安装安装完毕之后,使用下面的命令查看是否安装成功当命令行显示如图即为安装成功。_snmp工具

如何正确的敲键盘(打字习惯改正)_怎么敲键盘-程序员宅基地

文章浏览阅读6.4k次,点赞5次,收藏40次。练习打字的官网:http://dazi.kukuw.com/关于打字的详细介绍:一个过来人的打字指法纠正之路_怎么敲键盘

网络安全解决方案-程序员宅基地

文章浏览阅读9.6k次,点赞3次,收藏68次。一,网络安全体系结构网络安全体系结构是对网络信息安全基本问题的应对措施的集合,通常由保护,检测,响应和恢复等手段构成。1,网络信息安全的基本问题研究信息安全的困难在于:边界模糊数据安全与平台安全相交叉;存储安全与传输安全相制约;网络安全,应用安全与系统安全共存;集中的安全模式与分权制约安全模式相互竞争等。评估困难安全结构非常复杂,网络层,系统层,应用层的安全设备,安全协议和安全程序构成一个有机的整体,加上安全机制与人的互动性,网络的动态运行带来的易变性,使得评价网络安全性成为极_网络安全解决方案

QGIS在Windows下的编译——QGIS3.28.15 + Qt5.15.3 +CMake3.28.0 + VS2022 ---64位版本_qgis windows编译-程序员宅基地

文章浏览阅读1.2k次,点赞22次,收藏29次。QGIS在Windows下的编译——QGIS3.28.15 + Qt5.15.3 +CMake3.28.0 + VS2022 ---64位版本_qgis windows编译

BAAF-Net源码阅读_baafnet-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏3次。BAAF-Net代码是基于RandLANet编写的,所以在数据预处理和训练策略是基本是一致的,这里我们只介绍一下BAAF-Net的网络结构。_baafnet

推荐文章

热门文章

相关标签