?? 諧比例系數(shù)2.txt
字號(hào):
clear all
for h=1:30
fname=sprintf('D:\\study\\音頻采樣\\music\\%d.wav',h);
x=wavread(fname);
x=x(:,1);
[c,l]=wavedec(x,3,'db4');
ca=appcoef(c,l,'db4',3);%近似系數(shù)
x=ca;
enframex=enframe(x,128,64);%對(duì)信號(hào)x分幀處理,每幀有128個(gè)采樣點(diǎn),相鄰幀之間有50%的疊加率
[row,col]=size(enframex);%返回行,列,每一行代表一幀,每一列表示1到128個(gè)采樣點(diǎn)
framelen=col;
frameinc=64;
hang=row;%計(jì)算出分幀后語(yǔ)音矩陣的行數(shù)
temp1=enframe(x,framelen,frameinc);%將分幀后的數(shù)據(jù)存入temp1數(shù)組矩陣
for i=1:hang;
j=1:frameinc;
z(i)=max(temp1(i,j));%求第i幀前frameinc個(gè)元素最大值并存入z(i)數(shù)組中
end
for i=1:hang;
j=framelen-frameinc:framelen;
a(i)=max(temp1(i,j));
end
i=1:hang;
c(i)=min(z(i),a(i))*0.68;%計(jì)算每幀的門限值
for i=1:hang;
for j=1:framelen;
if temp1(i,j)>c(i)
y(i,j)=temp1(i,j)-c(i);
else if abs(temp1(i,j))<=c(i)
y(i,j)=0;
else if temp1(i,j)<c(i)*(-1)
y(i,j)=temp1(i,j)+c(i);
end
end
end
end
end
for i=1:hang;
if (j>=0)&(j<=20)
y(i,j)=0;
end
end %將0到20點(diǎn)置零
for i=1:hang;
for j=framelen:450;
y(i,j)=0; %將framelen點(diǎn)到450點(diǎn)的值置零
end
end
for i=1:hang;
for j=1:framelen;
if y(i,j)>0
y1(i,j)=1;
else if y(i,j)==0;
y1(i,j)=0;
else if y(i,j)<0
y1(i,j)=-1;
end
end
end
end
end
for i=1:hang;
if (j>=0)&(j<=20)
y1(i,j)=0;
end
end %將0到20點(diǎn)置零
for i=1:hang;
for j=framelen:450;
y1(i,j)=0; %將framelen點(diǎn)到450點(diǎn)的值置零
end
end
for i=1:hang;
for k=1:128;
n=21:framelen;
R(i,k)=sum(y(i,n).*y1(i,n+k));
end
end
%計(jì)算每一幀y與y1的互相關(guān)值
for i=1:hang;
k=20:128;
Rmax(i)=max(R(i,k));%計(jì)算每幀的Rmax值
end
for i=1:hang;
k=20:128;
[r,kmax(i)]=max(R(i,k));%找出每幀Rmax對(duì)應(yīng)的k值kmax
end
for i=1:hang;
if Rmax(i)<0.25*R(i,1)
P(i)=0;
else P(i)=kmax(i);
end
end
music(h)=0;
for i=1:hang-1;
if P(i)==P(i+1)
music(h)=music(h)+1;
end
end
musicbi(h,1)=music(h)/hang;
end
musicbi
for h=1:30
fname=sprintf('D:\\study\\音頻采樣\\speech\\%d.wav',h);
x=wavread(fname);
x=x(:,1);
[c,l]=wavedec(x,3,'db4');
ca=appcoef(c,l,'db4',3);%近似系數(shù)
x=ca;
enframex=enframe(x,128,64);%對(duì)信號(hào)x分幀處理,每幀有128個(gè)采樣點(diǎn),相鄰幀之間有50%的疊加率
[row,col]=size(enframex);%返回行,列,每一行代表一幀,每一列表示1到128個(gè)采樣點(diǎn)
framelen=col;
frameinc=64;
hang=row;%計(jì)算出分幀后語(yǔ)音矩陣的行數(shù)
temp1=enframe(x,framelen,frameinc);%將分幀后的數(shù)據(jù)存入temp1數(shù)組矩陣
for i=1:hang;
j=1:frameinc;
z(i)=max(temp1(i,j));%求第i幀前frameinc個(gè)元素最大值并存入z(i)數(shù)組中
end
for i=1:hang;
j=framelen-frameinc:framelen;
a(i)=max(temp1(i,j));
end
i=1:hang;
c(i)=min(z(i),a(i))*0.68;%計(jì)算每幀的門限值
for i=1:hang;
for j=1:framelen;
if temp1(i,j)>c(i)
y(i,j)=temp1(i,j)-c(i);
else if abs(temp1(i,j))<=c(i)
y(i,j)=0;
else if temp1(i,j)<c(i)*(-1)
y(i,j)=temp1(i,j)+c(i);
end
end
end
end
end
for i=1:hang;
if (j>=0)&(j<=20)
y(i,j)=0;
end
end %將0到20點(diǎn)置零
for i=1:hang;
for j=framelen:450;
y(i,j)=0; %將framelen點(diǎn)到450點(diǎn)的值置零
end
end
for i=1:hang;
for j=1:framelen;
if y(i,j)>0
y1(i,j)=1;
else if y(i,j)==0;
y1(i,j)=0;
else if y(i,j)<0
y1(i,j)=-1;
end
end
end
end
end
for i=1:hang;
if (j>=0)&(j<=20)
y1(i,j)=0;
end
end %將0到20點(diǎn)置零
for i=1:hang;
for j=framelen:450;
y1(i,j)=0; %將framelen點(diǎn)到450點(diǎn)的值置零
end
end
for i=1:hang;
for k=1:128;
n=21:framelen;
R(i,k)=sum(y(i,n).*y1(i,n+k));
end
end
%計(jì)算每一幀y與y1的互相關(guān)值
for i=1:hang;
k=20:128;
Rmax(i)=max(R(i,k));%計(jì)算每幀的Rmax值
end
for i=1:hang;
k=20:128;
[r,kmax(i)]=max(R(i,k));%找出每幀Rmax對(duì)應(yīng)的k值kmax
end
for i=1:hang;
if Rmax(i)<0.25*R(i,1)
P(i)=0;
else P(i)=kmax(i);
end
end
speech(h)=0;
for i=1:hang-1;
if P(i)==P(i+1)
speech(h)=speech(h)+1;
end
end
speechbi(h,1)=speech(h)/hang;
end
speechbi
for h=1:30
fname=sprintf('D:\\study\\音頻采樣\\speechwithmusic\\%d.wav',h);
x=wavread(fname);
x=x(:,1);
[c,l]=wavedec(x,3,'db4');
ca=appcoef(c,l,'db4',3);%近似系數(shù)
x=ca;
enframex=enframe(x,128,64);%對(duì)信號(hào)x分幀處理,每幀有128個(gè)采樣點(diǎn),相鄰幀之間有50%的疊加率
[row,col]=size(enframex);%返回行,列,每一行代表一幀,每一列表示1到128個(gè)采樣點(diǎn)
framelen=col;
frameinc=64;
hang=row;%計(jì)算出分幀后語(yǔ)音矩陣的行數(shù)
temp1=enframe(x,framelen,frameinc);%將分幀后的數(shù)據(jù)存入temp1數(shù)組矩陣
for i=1:hang;
j=1:frameinc;
z(i)=max(temp1(i,j));%求第i幀前frameinc個(gè)元素最大值并存入z(i)數(shù)組中
end
for i=1:hang;
j=framelen-frameinc:framelen;
a(i)=max(temp1(i,j));
end
i=1:hang;
c(i)=min(z(i),a(i))*0.68;%計(jì)算每幀的門限值
for i=1:hang;
for j=1:framelen;
if temp1(i,j)>c(i)
y(i,j)=temp1(i,j)-c(i);
else if abs(temp1(i,j))<=c(i)
y(i,j)=0;
else if temp1(i,j)<c(i)*(-1)
y(i,j)=temp1(i,j)+c(i);
end
end
end
end
end
for i=1:hang;
if (j>=0)&(j<=20)
y(i,j)=0;
end
end %將0到20點(diǎn)置零
for i=1:hang;
for j=framelen:450;
y(i,j)=0; %將framelen點(diǎn)到450點(diǎn)的值置零
end
end
for i=1:hang;
for j=1:framelen;
if y(i,j)>0
y1(i,j)=1;
else if y(i,j)==0;
y1(i,j)=0;
else if y(i,j)<0
y1(i,j)=-1;
end
end
end
end
end
for i=1:hang;
if (j>=0)&(j<=20)
y1(i,j)=0;
end
end %將0到20點(diǎn)置零
for i=1:hang;
for j=framelen:450;
y1(i,j)=0; %將framelen點(diǎn)到450點(diǎn)的值置零
end
end
for i=1:hang;
for k=1:128;
n=21:framelen;
R(i,k)=sum(y(i,n).*y1(i,n+k));
end
end
%計(jì)算每一幀y與y1的互相關(guān)值
for i=1:hang;
k=20:128;
Rmax(i)=max(R(i,k));%計(jì)算每幀的Rmax值
end
for i=1:hang;
k=20:128;
[r,kmax(i)]=max(R(i,k));%找出每幀Rmax對(duì)應(yīng)的k值kmax
end
for i=1:hang;
if Rmax(i)<0.25*R(i,1)
P(i)=0;
else P(i)=kmax(i);
end
end
speechwithmusic(h)=0;
for i=1:hang-1;
if P(i)==P(i+1)
speechwithmusic(h)=speechwithmusic(h)+1;
end
end
speechwithmusicbi(h,1)=speechwithmusic(h)/hang;
end
speechwithmusicbi
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -