【语音识别】基于matlab带动量项的BP神经网络语音识别【含Matlab源码 430期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞💞💞💞💞💞💥💥💥💥💥💥
在这里插入图片描述
✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进;
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式

⛳️座右铭:行百里者,半于九十。
更多Matlab语音处理仿真内容点击👇
Matlab语音处理 (进阶版)
付费专栏Matlab语音处理(初级版)

⛳️关注微信公众号Matlab王者助手或Matlab海神之光,更多资源等你来!!

⛄一、BP神经网络语音识别简介

1 对语音的WAV文件和LAB文件进行处理,产生十个文件,每个文件对应于一个数字,存贮着该数字的波形文件。(shujuzhengli.m)
2 分别利用上面十个文件训练出十个HMM模板,具体方法是:首先将语音的波形文件分帧,以128个点为一帧,帧为64,每一帧通过mfcc.m计算出13个系数,随着波形的长度不同,一个语音文件可以计算得到13N个系数,截取1315的矩阵(mfcc系数)用作训练数据。一般一个HMM模板用20组mfcc系数训练,得到初始状态分布、状态转移矩阵、高斯正态分布的均值和方差以及混合矩阵,这就是该语音的特征,存贮下来,识别的时候使用。(trainmfcc.m)
3 识别过程
识别的前面部分与训练相似,都是要计算得到mfcc系数,不同在于,识别时,将计算得到的mfcc 参数分别代入训练得到的HMM模板求出概率,比较出最大概率者,则该模板对应的数字就是识别的数字。(shibiesb.m)
4 用大量语音文件做测试,结果正确率为90 以上。

⛄二、部分源代码

%% 清空环境变量
clc
clear

%% 训练数据预测数据提取及归一化

%下载四类语音信号
load data1 c1
load data2 c2
load data3 c3
load data4 c4

%四个特征信号矩阵合成一个矩阵
data(1:500,:)=c1(1:500,:);
data(501:1000,:)=c2(1:500,:);
data(1001:1500,:)=c3(1:500,:);
data(1501:2000,:)=c4(1:500,:);

%从1到2000间随机排序
k=rand(1,2000);
[m,n]=sort(k);

%输入输出数据
input=data(:,2:25);
output1 =data(:,1);

%把输出从1维变成4维
output=zeros(2000,4);
for i=1:2000
switch output1(i)
case 1
output(i,:)=[1 0 0 0];
case 2
output(i,:)=[0 1 0 0];
case 3
output(i,:)=[0 0 1 0];
case 4
output(i,:)=[0 0 0 1];
end
end

%随机提取1500个样本为训练样本,500个样本为预测样本
input_train=input(n(1:1500)😅‘;
output_train=output(n(1:1500)😅’;
input_test=input(n(1501:2000)😅‘;
output_test=output(n(1501:2000)😅’;

%输入数据归一化
[inputn,inputps]=mapminmax(input_train);

%% 网络结构初始化
innum=24;
midnum=25;
outnum=4;

%权值初始化
w1=rands(midnum,innum);
b1=rands(midnum,1);
w2=rands(midnum,outnum);
b2=rands(outnum,1);

w2_1=w2;w2_2=w2_1;
w1_1=w1;w1_2=w1_1;
b1_1=b1;b1_2=b1_1;
b2_1=b2;b2_2=b2_1;

%学习率
xite=0.1;
alfa=0.01;
loopNumber=10;
I=zeros(1,midnum);
Iout=zeros(1,midnum);
FI=zeros(1,midnum);
dw1=zeros(innum,midnum);
db1=zeros(1,midnum);

%% 网络训练
E=zeros(1,loopNumber);
for ii=1:10
E(ii)=0;
for i=1:1:1500
%% 网络预测输出
x=inputn(:,i);
% 隐含层输出
for j=1:1:midnum
I(j)=inputn(:,i)‘*w1(j,:)’+b1(j);
Iout(j)=1/(1+exp(-I(j)));
end
% 输出层输出
yn=w2’*Iout’+b2;

   %% 权值阀值修正
    %计算误差
    e=output_train(:,i)-yn;     
    E(ii)=E(ii)+sum(abs(e));
    
    %计算权值变化率
    dw2=e*Iout;
    db2=e';
    
    for j=1:1:midnum
        S=1/(1+exp(-I(j)));
        FI(j)=S*(1-S);
    end      
    for k=1:1:innum
        for j=1:1:midnum
            dw1(k,j)=FI(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));
            db1(j)=FI(j)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));
        end
    end
       
    w1=w1_1+xite*dw1'+alfa*(w1_1-w1_2);
    b1=b1_1+xite*db1'+alfa*(b1_1-b1_2);
    w2=w2_1+xite*dw2'+alfa*(w2_1-w2_2);
    b2=b2_1+xite*db2'+alfa*(b2_1-b2_2);
    
    w1_2=w1_1;w1_1=w1;
    w2_2=w2_1;w2_1=w2;
    b1_2=b1_1;b1_1=b1;
    b2_2=b2_1;b2_1=b2;
end

end

%% 语音特征信号分类
inputn_test=mapminmax(‘apply’,input_test,inputps);
fore=zeros(4,500);
for ii=1:1
for i=1:500%1500
%隐含层输出
for j=1:1:midnum
I(j)=inputn_test(:,i)‘*w1(j,:)’+b1(j);
Iout(j)=1/(1+exp(-I(j)));
end

    fore(:,i)=w2'*Iout'+b2;
end

end

%% 结果分析
%根据网络输出找出数据属于哪类
output_fore=zeros(1,500);
for i=1:500
output_fore(i)=find(fore(:,i)==max(fore(:,i)));
end

%BP网络预测误差
error=output_fore-output1(n(1501:2000))';

%画出预测语音种类和实际语音种类的分类图
figure(1)
plot(output_fore,‘r’)
hold on
plot(output1(n(1501:2000))',‘b’)
legend(‘预测语音类别’,‘实际语音类别’)

%画出误差图
figure(2)
plot(error)
title(‘BP网络分类误差’,‘fontsize’,12)
xlabel(‘语音信号’,‘fontsize’,12)
ylabel(‘分类误差’,‘fontsize’,12)

%print -dtiff -r600 1-4

k=zeros(1,4);
%找出判断错误的分类属于哪一类
for i=1:500
if error(i)~=0
[b,c]=max(output_test(:,i));
switch c
case 1
k(1)=k(1)+1;
case 2
k(2)=k(2)+1;
case 3
k(3)=k(3)+1;
case 4
k(4)=k(4)+1;
end
end
end

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

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 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值