• 大小: 370KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2022-12-30
  • 语言: Matlab
  • 标签: 语音  识别  BP  

资源简介

利用BP神经网络识别语音信号,文档已包含语音数据,可直接运行,运环境为matlab

资源截图

代码片段和文件信息

%% 该代码为基于带动量项的BP神经网络语音识别
%

该案例作者申明: 1:本人长期驻扎在此板块里,对该案例提问,做到有问必答。本套书籍官方网站为:video.ourmatlab.com 2:点此从当当预定本书:《Matlab神经网络30个案例分析》。 3:此案例有配套的教学视频,视频下载方式video.ourmatlab.com/vbuy.html。 

4:此案例为原创案例,转载请注明出处(《Matlab神经网络30个案例分析》)。 5:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。

%% 清空环境变量
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(12000);
[mn]=sort(k);

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

%把输出从1维变成4维
output=zeros(20004);
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):)‘;

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

%% 网络结构初始化
innum=24;
midnum=25;
outnum=4;
 
%权值初始化
w1=rands(midnuminnum);
b1=rands(midnum1);
w2=rands(midnumoutnum);
b2=rands(outnum1);

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(1midnum);
Iout=zeros(1midnum);
FI=zeros(1midnum);
dw1=zeros(innummidnum);
db1=zeros(1midnum);

%% 网络训练
E=zeros(1loopNumber);
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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6159  2013-08-21 07:25  chapter1\chapter1\BPDLX.m

     文件       3896  2013-08-21 07:15  chapter1\chapter1\chapter1_1.asv

     文件       4030  2013-08-21 07:18  chapter1\chapter1\chapter1_1.m

     文件      93015  2009-08-29 16:54  chapter1\chapter1\data1.mat

     文件      92845  2009-08-29 16:54  chapter1\chapter1\data2.mat

     文件      92937  2009-08-29 16:54  chapter1\chapter1\data3.mat

     文件      93438  2009-08-29 16:54  chapter1\chapter1\data4.mat

     目录          0  2017-11-21 14:14  chapter1\chapter1

     目录          0  2017-11-21 14:14  chapter1

----------- ---------  ---------- -----  ----

               386320                    9


评论

共有 条评论