一、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:2000switch output1(i)case 1output(i,:)=[1 0 0 0];case 2output(i,:)=[0 1 0 0];case 3output(i,:)=[0 0 1 0];case 4output(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:10E(ii)=0;for i=1:1:1500%% 网络预测输出 x=inputn(:,i);% 隐含层输出for j=1:1:midnumI(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:midnumS=1/(1+exp(-I(j)));FI(j)=S*(1-S);end      for k=1:1:innumfor j=1:1:midnumdw1(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));endendw1=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:1for i=1:500%1500%隐含层输出for j=1:1:midnumI(j)=inputn_test(:,i)'*w1(j,:)'+b1(j);Iout(j)=1/(1+exp(-I(j)));endfore(:,i)=w2'*Iout'+b2;end
end%% 结果分析
%根据网络输出找出数据属于哪类
output_fore=zeros(1,500);
for i=1:500output_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-4k=zeros(1,4);
%找出判断错误的分类属于哪一类
for i=1:500if error(i)~=0[b,c]=max(output_test(:,i));switch ccase 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;endend
end

三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

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

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

  1. bp语音识别matlab,【Matlab学习手记】基于带动量项的BP神经网络语音识别

    正确率 0.7699    1.0000    0.9275    0.9760 代码 clear; clc; % 加载四类语音信号 load data1 c1 load data2 c2 load ...

  2. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  3. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  4. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  5. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  6. 【Matlab水果识别】自助水果超市【含GUI源码 594期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]自助水果超市[含GUI源码 594期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]倪云峰,叶健,樊娇娇 ...

  7. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  8. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  9. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  10. 【Matlab水果识别】苹果质量检测及分级系统(带面板)【含GUI源码 1613期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]苹果质量检测及分级系统(带面板)[含GUI源码 1613期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

最新文章

  1. 抓老鼠啊~亏了还是赚了?
  2. 自学python当黑客-用Python做黑客,暴力破解wifi密码
  3. python 面向对象(类)--学习笔记
  4. Android开发中StackOverflowError错误实例分析
  5. 模仿网易(163)首页Ajax功能中的鼠标延时触发
  6. 怎样在html中实现图层重叠,javascript – 在HTML5画布中实现图层
  7. 每天一小时python官方文档学习(七)————模块与包
  8. 参加开发竞赛遇到的问题【总结】
  9. 【机器视觉学习笔记】直方图的绘制及直方图均衡化(C++)
  10. wangeditor修改图片上传和视频上传
  11. python自关联_django自关联,auth模块
  12. 什么是clearfix?
  13. 图及算法----并查集父亲查找写法比较 DisjointSet
  14. 8数据提供什么掩膜产品_喜茶、茶百道、书亦、古茗8月外卖热销产品数据全解析...
  15. lisp 标注螺纹孔_螺纹的标注方法
  16. 微软云服务器的优点,探寻:微软私有云的优势究竟是什么
  17. RS232串口接线图
  18. Mac电脑下好用的mac版远程控制远程桌面软件
  19. 「GitLab篇」如何用Git平台账号登录建木CI
  20. 【技术美术图形部分】2.3 HLSL常用函数

热门文章

  1. 文件i/o函数 open/close
  2. IOS开发自定义tableviewcell的注意点
  3. 自动生成小学四则运算题目(加强版)
  4. 传智播客 C/C++学习笔记 多级指针
  5. hello github
  6. Atitit 搜索与搜索领域的技术总结 目录 1. 搜索资料 各种文档累 office eml pdf zip 1 1.1. 搜索用的东东。。Es ffmpeg opencv 1 2. 自然语言处
  7. Atitit  Uncaught (in promise) SyntaxError Unexpected token in JSON at position 0
  8. Atitit 图像处理30大经典算法attilax总结
  9. paip.-Djava.library.path -Djava.ext.dirs= 的区别
  10. paip.mysql 性能测试by mysqlslap