⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 各种SVM分类算法
💻 TXT
字号:
clear all
  fname=sprintf('D:\\test\\speech\\1.wav');
  x=wavread(fname);
  x=x(:,1);t=cputime;
  [c,l]=wavedec(x,3,'db4');
  ca=appcoef(c,l,'db4',3);%近似系数
  x=ca;
  enframex=enframe(x,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
  [row,col]=size(enframex);%返回行,列,每一行代表一帧,每一列表示1到128个采样点
  c=melcepst(x,22050);
  [row,col]=size(c);
  mfcc=zeros(1,12);
  for i=1:col
      for j=1:row  
        mfcc(1,i)=mean(c(j,i));
      end
  end
mfccspeech=mfcc;
t=cputime-t

clear all
fname=sprintf('D:\\test\\speech\\1.wav');
x=wavread(fname);
x=x(:,1);t=cputime;
[c,l]=wavedec(x,3,'db4');
ca=appcoef(c,l,'db4',3);%近似系数
x=ca;
enframex=enframe(x,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
[row,col]=size(enframex);%返回行,列,每一行代表一帧,每一列表示1到128个采样点
framelen=col;
frameinc=64;  
hang=row;%计算出分帧后语音矩阵的行数
temp1=enframe(x,framelen,frameinc);%将分帧后的数据存入temp1数组矩阵
for i=1:hang;
 j=1:frameinc;
    z(i)=max(temp1(i,j));%求第i帧前frameinc个元素最大值并存入z(i)数组中
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;%计算每帧的门限值
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点置零
for i=1:hang;
   for j=framelen:450;
       y(i,j)=0;  %将framelen点到450点的值置零
       
   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点置零
for i=1:hang;
   for j=framelen:450;
       y1(i,j)=0;  %将framelen点到450点的值置零
   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
%计算每一帧y与y1的互相关值
for i=1:hang;
    k=20:128;
Rmax(i)=max(R(i,k));%计算每帧的Rmax值
end
for i=1:hang;
    k=20:128;
    [r,kmax(i)]=max(R(i,k));%找出每帧Rmax对应的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=0;
for i=1:hang-1;
    if P(i)==P(i+1)
       speech=speech+1;
    end
end
speechbi=speech/hang;
t=cputime-t




clear
   fname=sprintf('D:\\test\\speech\\1.wav');
   x=wavread(fname);
   x=x(:,1);t=cputime;
   [c,l]=wavedec(x,3,'db4');
   ca=appcoef(c,l,'db4',3);%近似系数
   x=ca;
   enframex=enframe(x,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
   [row,col]=size(enframex);%返回行,列,每一行代表一帧,每一列表示1到128个采样点
   A=log10(abs(enframex).^2);
   energy=zeros(row,1);
   for j=1:row
     energy(j)=sum(A(j,:));
   end
   s=0;
     for j=1:row
     s=s+energy(j);
   end
   s=0.7*(s/row);
   speech=0;
   for k=1:row
       if energy(k,1)<s
          speech=speech+1;
       end
   end
   speechshangbi=speech/row;
t=cputime-t



clear all
fname=sprintf('D:\\test\\speech\\1.wav');
x=wavread(fname);
x=x(:,1);t=cputime;
[c,l]=wavedec(x,3,'db4');
ca=appcoef(c,l,'db4',3);%近似系数
x=ca;
enframex=enframe(x,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
[row,col]=size(enframex);%返回行,列,每一行代表一帧,每一列表示1到128个采样点

framelen=col;
frameinc=64;  
hang=row;%计算出分帧后语音矩阵的行数
temp1=enframe(x,framelen,frameinc);%将分帧后的数据存入temp1数组矩阵
for i=1:hang;
 j=1:frameinc;
    z(i)=max(temp1(i,j));%求第i帧前frameinc个元素最大值并存入z(i)数组中
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;%计算每帧的门限值
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点置零
for i=1:hang;
   for j=framelen:450;
       y(i,j)=0;  %将framelen点到450点的值置零
       
   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点置零
for i=1:hang;
   for j=framelen:450;
       y1(i,j)=0;  %将framelen点到450点的值置零
   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
%计算每一帧y与y1的互相关值
for i=1:hang;
    k=20:128;
Rmax(i)=max(R(i,k));%计算每帧的Rmax值
end
for i=1:hang;
    k=20:128;
    [r,kmax(i)]=max(R(i,k));%找出每帧Rmax对应的k值kmax
end
  
for i=1:hang;
    if Rmax(i)<0.25*R(i,1)
        P(i)=0;
    else P(i)=1/kmax(i);
    end
end

a=0;
for i=1:(hang-1);
    a=a+abs(P(i+1)-P(i));
end
speechbianhualv=a/hang;
t=cputime-t


clear all
   fname=sprintf('D:\\test\\speech\\1.wav');
   x=wavread(fname);
   x=x(:,1);t=cputime;
   [c,l]=wavedec(x,3,'db4');
   ca=appcoef(c,l,'db4',3);%近似系数
   x=ca;
   enframex=enframe(x,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
   [row,col]=size(enframex);%返回行,列,每一行代表一帧,每一列表示1到128个采样点
   A=abs(enframex).^2;
   for j=1:row
     energy(j)=sum(A(j,:));
   end
   se=0;
   for j=1:row
       se=se+energy(j);
   end
   for j=1:row
       p(j)=energy(j)./se;
   end
   s=0;
   for j=1:row
     s=s+p(j).*log2(p(j));
   end
   Err=-s;
  speechErrzhuzhi=mean(Err);
t=cputime-t



clear all
 fname=sprintf('D:\\test\\speech\\1.wav');
 x=wavread(fname);
 x=x(:,1);t=cputime;
 [c,l]=wavedec(x,3,'db4');
 ca=appcoef(c,l,'db4',3);%近似系数
 x=ca;
 enframex=enframe(x,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
[row,col]=size(enframex);%返回行,列,每一行代表一帧,每一列表示1到128个采样点
 A=abs(enframex).^2;
 energy=zeros(row,1);
 for j=1:row
   energy(j)=sum(A(j,:));
 end
 num=0;
 for j=1:row
     if energy(j)<0.01
     num=num+1;
     end
 end
 speechjingyinbi=num/row;
t=cputime-t



clear all
fname=sprintf('D:\\test\\speech\\1.wav');
x=wavread(fname);
x=x(:,1);t=cputime;
[c,l]=wavedec(x,3,'db4');
ca=appcoef(c,l,'db4',3);%近似系数
x=ca;
enframex=enframe(x,128,64);%对信号x分帧处理,每帧有128个采样点,相邻帧之间有50%的叠加率
[row,col]=size(enframex);%返回行,列,每一行代表一帧,每一列表示1到128个采样点
 A=abs(enframex).^2;
 for j=1:row
   energy(j)=sum(A(j,:));
 end
for j=1:row
   sum1(j)=0;
   for i=1:col
   sum1(j)=sum1(j)+i*A(j,i);
   end
end
centroid=sum1./energy;
for j=1:row
    sum2(j)=0;
    for i=1:col
        sum2(j)=sum2(j)+(i-centroid(j)).^2*A(j,i);
    end
end
 bandwidth=sum2./energy;
speechbandwidthjuzhi=mean(bandwidth);
t=cputime-t

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -