当前位置:   article > 正文

matlab基于BP网络的语言识别_语音识别为什么要设置midnum=25

语音识别为什么要设置midnum=25

1、内容简介

2、内容说明

3、仿真分析

  1. %% 清空环境变量
  2. clc
  3. clear
  4. %% 训练数据预测数据提取及归一化
  5. %下载四类语音信号
  6. load data1 c1
  7. load data2 c2
  8. load data3 c3
  9. load data4 c4
  10. %四个特征信号矩阵合成一个矩阵
  11. data(1:500,:)=c1(1:500,:);
  12. data(501:1000,:)=c2(1:500,:);
  13. data(1001:1500,:)=c3(1:500,:);
  14. data(1501:2000,:)=c4(1:500,:);
  15. %从12000间随机排序
  16. k=rand(1,2000);
  17. [m,n]=sort(k);
  18. %输入输出数据
  19. input=data(:,2:25);
  20. output1 =data(:,1);
  21. %把输出从1维变成4
  22. output=zeros(2000,4);
  23. for i=1:2000
  24. switch output1(i)
  25. case 1
  26. output(i,:)=[1 0 0 0];
  27. case 2
  28. output(i,:)=[0 1 0 0];
  29. case 3
  30. output(i,:)=[0 0 1 0];
  31. case 4
  32. output(i,:)=[0 0 0 1];
  33. end
  34. end
  35. %随机提取1500个样本为训练样本,500个样本为预测样本
  36. input_train=input(n(1:1500),:)';
  37. output_train=output(n(1:1500),:)';
  38. input_test=input(n(1501:2000),:)';
  39. output_test=output(n(1501:2000),:)';
  40. %输入数据归一化
  41. [inputn,inputps]=mapminmax(input_train);
  1. %% 网络结构初始化
  2. innum=24;
  3. midnum=25;
  4. outnum=4;
  5. %权值初始化
  6. w1=rands(midnum,innum);
  7. b1=rands(midnum,1);
  8. w2=rands(midnum,outnum);
  9. b2=rands(outnum,1);
  10. w2_1=w2;w2_2=w2_1;
  11. w1_1=w1;w1_2=w1_1;
  12. b1_1=b1;b1_2=b1_1;
  13. b2_1=b2;b2_2=b2_1;
  14. %学习率
  15. xite=0.1;
  16. alfa=0.01;
  17. loopNumber=10;
  18. I=zeros(1,midnum);
  19. Iout=zeros(1,midnum);
  20. FI=zeros(1,midnum);
  21. dw1=zeros(innum,midnum);
  22. db1=zeros(1,midnum);
  1. %% 语音特征信号分类
  2. inputn_test=mapminmax('apply',input_test,inputps);
  3. fore=zeros(4,500);
  4. for ii=1:1
  5. for i=1:500%1500
  6. %隐含层输出
  7. for j=1:1:midnum
  8. I(j)=inputn_test(:,i)'*w1(j,:)'+b1(j);
  9. Iout(j)=1/(1+exp(-I(j)));
  10. end
  11. fore(:,i)=w2'*Iout'+b2;
  12. end
  13. end
  14. %% 结果分析
  15. %根据网络输出找出数据属于哪类
  16. output_fore=zeros(1,500);
  17. for i=1:500
  18. output_fore(i)=find(fore(:,i)==max(fore(:,i)));
  19. end
  20. %BP网络预测误差
  21. error=output_fore-output1(n(1501:2000))';
  22. %画出预测语音种类和实际语音种类的分类图
  23. figure(1)
  24. plot(output_fore,'r')
  25. hold on
  26. plot(output1(n(1501:2000))','b')
  27. legend('预测语音类别','实际语音类别')
  28. %画出误差图
  29. figure(2)
  30. plot(error)
  31. title('BP网络分类误差','fontsize',12)
  32. xlabel('语音信号','fontsize',12)
  33. ylabel('分类误差','fontsize',12)
  34. %print -dtiff -r600 1-4
  35. k=zeros(1,4);
  36. %找出判断错误的分类属于哪一类
  37. for i=1:500
  38. if error(i)~=0
  39. [b,c]=max(output_test(:,i));
  40. switch c
  41. case 1
  42. k(1)=k(1)+1;
  43. case 2
  44. k(2)=k(2)+1;
  45. case 3
  46. k(3)=k(3)+1;
  47. case 4
  48. k(4)=k(4)+1;
  49. end
  50. end
  51. end
  52. %找出每类的个体和
  53. kk=zeros(1,4);
  54. for i=1:500
  55. [b,c]=max(output_test(:,i));
  56. switch c
  57. case 1
  58. kk(1)=kk(1)+1;
  59. case 2
  60. kk(2)=kk(2)+1;
  61. case 3
  62. kk(3)=kk(3)+1;
  63. case 4
  64. kk(4)=kk(4)+1;
  65. end
  66. end
  67. %正确率
  68. rightridio=(kk-k)./kk;
  69. disp('正确率')
  70. disp(rightridio);

 

正确率
  列 1 至 3

    0.8394    1.0000    0.6435

  列 4

    0.9185
 

4、参考论文
略企q鹅q号:1762016542

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/105640
推荐阅读
相关标签
  

闽ICP备14008679号