• 大小:
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-06-26
  • 语言: 其他
  • 标签: K-NN  语音识别  

资源简介

基于K-NN的语音情感识别

资源截图

代码片段和文件信息

%情感特征提取函数
function feature=featvector(filename)
[yfs]=audioread(filename); 
L=length(y);
ys=y;
for i=1:(length(y)-1)
    if (abs(y(i))<1e-3)  %  剔除较小值,计算短时能量时使用  %
        ys(i)=ys(i+1);
        L=L-1;
    end
end 
y1=ys(1:L);
s=enframe(yhamming(256)128); %  分帧加窗  %
s1=enframe(y1hamming(256)128); 
[nframeframesize]=size(s);  
[nframe1framesize1]=size(s1);
E=zeros(1nframe1);  
Z=zeros(1nframe);
F=zeros(1nframe);
for i=1:nframe
    Z(i)=sum(abs(sign(s(iframesize:2)-s(iframesize-1:1))))/2;  %  过零率  %
end
for i=1:nframe1
    E(i)=sum(s1(i:).*s1(i:)); %  短时能量  %
end
%  基音频率  %
N=2048;R=4;
for i=1:nframe
    k = 1:R:N/2; K = length(k);  %  N是FFT变换点数,R是乘的次数,f是采样频率  %
    X = fft (s(i:) N); 
    X=abs(X);  %  对X做绝对值,取到幅度  %
    HPSx = X(k); 
    for r= R-1:-1:1
        HPSx = HPSx.*X (1:r:r*K);
    end
    [~I]=max(HPSx);  %  取最大值点,I是对应下标  %
    F(i)=I/N*fs; %  基音频率  %
end
%  浊音帧差分基音  %
nf=1;
for i=1:(nframe-1)
    if(F(i)*F(i+1)~=0)
        dF(nf)=F(i)-F(i+1);
        nf=nf+1;
    end
end
%  0-250hz所占比例  %
[s2f1t1]=specgram(y1256fs);
sn=20*log10(abs(s2)+eps);
sn1=sn+min(sn(:));
n=round(length(f1)*250/max(f1(:)));
Eratio=sum(sum(sn1(1:n:)))/sum(sn1(:));

%  估计共振峰  %
[fm~] = formant_get(yfs);
Fm1=fm(:1);
Fm2=fm(:2);
Fm3=fm(:3);
%  MFCC  %
MFCCs=melcepst(yfs‘0d‘); %  MFCC及其一阶差分系数  %


%%    特征向量构成    %%
%  短时能量E  %
dim_max=140;  %大小要与.mat数据文件匹配
feature=zeros(dim_max1);
x=0;t=0;
for i=1:(nframe1-1)
    t=abs(E(i)-E(i+1))/(nframe1-1);
    x=x+t;
end
E_shimmer=x/mean(E);
x1=0;x2=0;x3=0;x4=0;
for i=1:nframe1
    t1=i*mean(E);t2=i*E(i); t3=i*i;t4=i;
    x1=x1+t1;x2=x2+t2;x3=x3+t3;x4=x4+t4;
end
x4=x4*x4/nframe1;
s1=x2-x1;s2=x3-x4;
E_Reg_coff=s1/s2;
x=0;
for i=1:nframe1
    t=E(i)-(mean(E)-s1/s2*x4/nframe1)-s1/s2*i;
    x=x+t^2/nframe1;
end
E_Sqr_Err=x;
feature(1:71)=[max(E);min(E);mean(E);var(E);E_shimmer;E_Reg_coff;E_Sqr_Err];%  短时能量相关特征  %

%  能量比  %
feature(81)=Eratio;

%  基音频率F  %
x=0;
for i=1:(nframe-1)
    t=abs(F(i)-F(i+1));
    x=x+t;
end
F_Jitter1=100*x/(mean(F)*(nframe-1));
x=0;
for i=2:(nframe-1)
    t=abs(2*F(i)-F(i+1)-F(i-1));
    x=x+t;
end
F_Jitter2=100*x/(mean(F)*(nframe-2));

%% 使F得最小值是有效(去除等值)
k=1;
for i=2:numel(F)
    if(F(i)==F(1))
        continue;
    end
    FF(k)= F(i);
    k=k+1;
 
end

feature(9:141)=[max(F);min(FF);mean(F);var(F);F_Jitter1;F_Jitter2];%  基音频率相关特征  %

%  浊音帧差分基音  %
feature(15:181)=[max(dF);min(dF);mean(dF);var(dF)];%  浊音帧差分基音  %

%  共振峰  %
x1=0;x2=0;x3=0;
for i=1:(numel(Fm1)-1)
    t1=abs(Fm1(i)-Fm1(i+1));
    t2=abs(Fm2(i)-Fm2(i+1));
    t3=abs(Fm3(i)-Fm3(i+1));
    x1=x1+t1;x2=x2+t2;x3=x3+t3;
end
Fm1_Jitter1=100*x1/(mean(Fm1)*(numel(Fm1)-1));%  前三个共振峰的一阶抖动  %
Fm2_Jitter1=100*x2/(mean(Fm2)*(numel(Fm1)-1));
Fm3_Jitter1=100*x3/(mean(Fm2)*(numel(Fm1)-1));
Fm2R=Fm2./(Fm2-Fm1);
nFm=[max(Fm1);min(Fm1);mean(Fm1);var(Fm1);Fm1_Jitter1;max(Fm2);min(Fm2);mean(Fm2);va

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-04-07 23:08  基于K-NN的语音情感识别\
     文件       51215  2015-03-15 16:09  基于K-NN的语音情感识别\A_fear.mat
     文件        3553  2018-04-07 23:25  基于K-NN的语音情感识别\featvector.m
     文件       51237  2015-03-15 16:14  基于K-NN的语音情感识别\F_happiness.mat
     文件        3183  2018-04-07 20:24  基于K-NN的语音情感识别\KnnRecognition.m
     文件       51284  2015-03-15 16:15  基于K-NN的语音情感识别\N_neutral.mat
     文件       51252  2015-03-15 16:16  基于K-NN的语音情感识别\T_sadness.mat
     目录           0  2018-04-07 22:59  基于K-NN的语音情感识别\wavs\
     目录           0  2018-04-07 22:59  基于K-NN的语音情感识别\wavs\A_fear\
     文件       48200  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\03a04Ad.wav
     文件       98848  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\03a05Aa.wav
     文件       98758  2004-05-21 15:57  基于K-NN的语音情感识别\wavs\A_fear\03b02Aa.wav
     文件       90548  2004-05-21 15:57  基于K-NN的语音情感识别\wavs\A_fear\03b10Ab.wav
     文件       59374  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\08a01Ab.wav
     文件       50732  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\08a02Ab.wav
     文件       54006  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\08a02Ac.wav
     文件       85704  2004-05-21 15:57  基于K-NN的语音情感识别\wavs\A_fear\08b01Aa.wav
     文件      101844  2004-05-21 15:57  基于K-NN的语音情感识别\wavs\A_fear\08b09Ab.wav
     文件       85010  2004-05-21 15:57  基于K-NN的语音情感识别\wavs\A_fear\08b10Aa.wav
     文件       53038  2004-05-21 15:57  基于K-NN的语音情感识别\wavs\A_fear\09b10Aa.wav
     文件       53788  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\10a01Ac.wav
     文件       51498  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\10a02Ab.wav
     文件       83376  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\10a05Aa.wav
     文件       51118  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\10a07Aa.wav
     文件       51352  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\10a07Ad.wav
     文件       66846  2004-05-21 15:57  基于K-NN的语音情感识别\wavs\A_fear\10b01Aa.wav
     文件       78838  2004-05-21 15:57  基于K-NN的语音情感识别\wavs\A_fear\10b02Aa.wav
     文件       63302  2004-05-21 15:57  基于K-NN的语音情感识别\wavs\A_fear\10b09Ad.wav
     文件       49878  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\11a01Aa.wav
     文件       48180  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\11a01Ab.wav
     文件       49182  2004-05-21 15:56  基于K-NN的语音情感识别\wavs\A_fear\11a04Ac.wav
............此处省略262个文件信息

评论

共有 条评论