500组24维语音特征信号419是什么意思思

神经网络在音乐分类中的应用研究_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
神经网络在音乐分类中的应用研究
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢人工神经网络入门 - 博客频道 - CSDN.NET
Hater_Wu的博客
分类:机器学习
本文简要介绍了人工神经网络和基于matlab的BP神经网络的简单实现的案例。
人工神经网络简介
首先在这里要澄清一点,如果你没了解过神经网络,千万不要觉得它很复杂。对于目前的科学水平来说,人们对人脑的结构都还根本没有搞清楚,更不用说人工的神经网络了。其实除了借用了生物学上的一些名词,并且做了一些形象的比喻外,人工神经网络和人脑扯不上什么关系。虽然人脑的结构那么复杂,但是人工神经网络并不复杂,入门也不难,接下来我将尽可能用非技术性的语言来讲述如何实现一个人工神经网络(当然,这也需要读者有一定的编程基础)。
我们先来看一张人工神经网络的拓扑图:
图中的每个圆圈都叫做节点,图中的线称为弧;
每一条弧上都有一个值w1、w2……(称为权重或者权值);
从下往上看,第一层的节点叫做输入层,第二层的节点叫做隐含层(中间层),最上面一层的节点叫做输出层。
我们可以发现,所有的节点都是分层的,每一层节点都可以通过有向弧指向上一层节点(没错,它就是一张特殊的有向图),但是同一层节点之间没有弧互相连接,而且每一个节点不能“越级”;
一般来说,除了第一层(输入层)和最后一层(输出层)外,其他层数都统称为中间层,这些层对外是不可见的,因此又被称为隐含层;
图中的人工神经网络只有三层,但实际上网络的层数和每一层的节点数都可以是任意的(但一般不会有人设计超过五层的网络,因为网络的层数越多,计算就越复杂)。
然后…就没有了!简单的人工神经网络就这样,实际应用中只是将这个简单的网络结构复杂化而已。而人工神经网络的主要应用就是分类和预测,其应用领域有语音识别、机器翻译、人脸识别、预测股市走向等等等。
简单介绍完人工神经网络后,接下来我们来看一个典型的神经网络——BP神经网络。
BP神经网络
BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号向前传递,误差方向传播。在前向传播中,输入信号从输入层经隐含层逐层处理,直至输出层(每一层的神经元状态只影响下一层神经元状态)。如果输出层得不到期望输出,则转入方向传播,根据预测误差调整网络权值和阈值,从而使BP神经网络预测输出不断逼近期望输出。
使用BP神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。BP神经网络的训练流程图如下:
网络初始化。根据实际情况确定输入层、输出层、隐含层的节点数,初始化输入层、隐含层和输出层神经元之间的连接权值,初始化隐含层阈值,输出层阈值,给定学习速率和神经元激励函数;
输入训练样本。根据上面所定义的输入层对应地输入训练样本;
求隐单元输出。根据输入变量,输入层和隐含层之间的连接权值以及隐含层的阈值a,计算隐含层的输出;
计算输出单元输出。根据隐含层输出,连接权值和阈值b,计算BP神经网络预测输出;
求输出层单元偏差。根据网络预测输出和期望输出,计算网络预测误差;
修正权值、阈值。根据网络预测误差,更新网络连接权值和阈值。
判断算法是否迭代结束(达到最大迭代次数或预测误差小于给定值),若没有结束,重复步骤3~7.
语音特征信号识别
本案例素材源于《MATLAB神经网络43个案例分析》,有兴趣的读者可以参考原著深入学习。
案例中用倒谱系数法提取了500组24维语音特征信号,部分数据如下表所示(具体的原理可以不管,只需知道我们手上拿到了这些数据是什么样的就可以了):
上表所给的数据中,第一列是所给出的类别标签,第二列到第二十五列是语音特征信号。要做到语音信号识别,我们要通过已知的这些数据构造一个参考模式,使得有一组新的语音信号时,我们可以识别出它属于哪一种类型。
使用BP神经网络来构建这个参考模式,首先我们就要构建一个BP神经网络,然后对BP神经网络进行训练,最后将测试数据输入到训练好的BP神经网络,来对这个BP神经网络分类的准确性等其他性能进行评价。
因为提取出来的语音特征信号有24维数据,所以输入层有24个节点,而待分类的类别共有4类,所以输出层有4个节点。因此,本例中BP神经网络的结构为24-25-4.即输入层、隐含层、输出层的节点数分别为24、25、4.
另外,因为我们要对训练好的网络进行测试,所以我们要从2000组语音特征信号中随机选择1500组作为训练数据,剩下的500组作为测试数据测试网络的分类能力。
matlab实现
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,:);
input=data(:,2:25);
output1 =data(:,1);
output=zeros(2000,4);
for i=1:2000
switch output1(i)
output(i,:)=[1 0 0 0];
output(i,:)=[0 1 0 0];
output(i,:)=[0 0 1 0];
output(i,:)=[0 0 0 1];
k=rand(1,2000);
[m,n]=sort(k);
input_train=input(n(1:1500),:)';
output_train=output(n(1:1500),:)';
input_test=input(n(1501:2000),:)';
output_test=output(n(),:)';
[inputn,inputps]=mapminmax(input_train);
midnum=25;
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;
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:loopNumber
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)));
yn=w2'*Iout'+b2;
e=output_train(:,i)-
E(ii)=E(ii)+sum(abs(e));
for j=1:1:midnum
S=1/(1+exp(-I(j)));
FI(j)=S*(1-S);
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));
w1=w1_1+xite*dw1';
b1=b1_1+xite*db1';
w2=w2_1+xite*dw2';
b2=b2_1+xite*db2';
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;
inputn_test=mapminmax('apply',input_test,inputps);
fore=zeros(4,500);
for ii=1:1
for i=1:500
for j=1:1:midnum
I(j)=inputn_test(:,i)'*w1(j,:)'+b1(j);
Iout(j)=1/(1+exp(-I(j)));
fore(:,i)=w2'*Iout'+b2;
output_fore=zeros(1,500);
for i=1:500
output_fore(i)=find(fore(:,i)==max(fore(:,i)));
error=output_fore-output1(n(1501:2000))';
%画出预测语音种类和实际语音种类的分类图
plot(output_fore,'r')
plot(output1(n(1501:2000))','b')
legend('预测语音类别','实际语音类别')
plot(error)
title('BP网络分类误差','fontsize',12)
xlabel('语音信号','fontsize',12)
ylabel('分类误差','fontsize',12)
k=zeros(1,4);
for i=1:500
if error(i)~=0
[b,c]=max(output_test(:,i));
k(1)=k(1)+1;
k(2)=k(2)+1;
k(3)=k(3)+1;
k(4)=k(4)+1;
kk=zeros(1,4);
for i=1:500
[b,c]=max(output_test(:,i));
kk(1)=kk(1)+1;
kk(2)=kk(2)+1;
kk(3)=kk(3)+1;
kk(4)=kk(4)+1;
rightridio=(kk-k)./
disp('正确率')
disp(rightridio);
排名:千里之外
(1)(2)(3)神经网络_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩9页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢语音信号MFCC的特征提取Matlab源码
语音信号处理MFCC提取的Matlab源码,
Matlab调试运行的时候注意添加语音工具箱voicebox查找路径。即,
Matlab:File-&Set Path…-&Add
Folder…&选择你所解压的voicebox文件夹路径。
%function ccc=mfcc(x)
%归一化mel滤波器组系数
filename=input('input filename:','s');
[x,fs,bits]=wavread(filename);
bank=melbankm(24,256,fs,0,0.5,'m');
bank=full(bank);
bank=bank/max(bank(:));
�T系数,12*24
for k=1:12
dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));
%归一化倒谱提升窗口
w=1+6*sin(pi*[1:12] ./12);
w=w/max(w);
%预加重滤波器
xx=double(x);
xx=filter([1 -0.9375],1,xx);
%语音信号分帧
xx=enframe(xx,256,80);
%计算每帧的MFCC参数
for i=1:size(xx,1)
s=y' .*hamming(256);
t=abs(fft(s));
c1=dctcoef*log(bank*t(1:129));
c2=c1.*w';
m(i,:)=c2';
dtm=zeros(size(m));
for i=3:size(m,1)-2
dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m(i+2,:);
dtm=dtm/3;
%合并mfcc参数和一阶差分mfcc参数
ccc=[m dtm];
%去除首位两帧,因为这两帧的一阶差分参数为0
ccc=ccc(3:size(m,1)-2,:);
subplot(211)
ccc_1=ccc(:,1);
plot(ccc_1);title('MFCC');
% ylabel('幅值');
% title('一维数组及其幅值的关系')
% [h,w]=size(ccc);
% A=size(ccc);
% subplot(212)
% plot([1,w],A);
% xlabel('维数');
% ylabel('幅值');
% title('维数于幅值的关系')
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 hold是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信