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

📄 jinbao.m

📁 基于自适应子带频谱熵的稳健性语音端点检测
💻 M
字号:
clear all;
clc;
%基于自适应子带频谱熵的稳健性语音端点检测
N=256;%
Winsiz=256;%帧长
Shift=128;%帧移
[x,Fs]=wavread('8a.wav');
x=double(x);
%对信号做预加重处理
x=filter([1 -0.9375], 1, x);

nseg=floor((length(x)-Winsiz)/Shift)+1;
A=zeros(Winsiz/2+1,nseg);

%下面循环是x信号的加窗处理并求出各点频谱能量
for i=1:nseg
    n1=(i-1)*Shift+1;n2=n1+(Winsiz-1);
    xx=x(n1:n2);xx=xx.*hamming(Winsiz);
    y=fft(xx,N);
    y=y(1:Winsiz/2+1);
    y=y.*conj(y);
    A(:,i)=y;
end
%计算总能量
Esum=zeros(1,nseg);
for i=1:nseg
    for j=1:Winsiz/2
        Esum(i)=Esum(i)+A(j,i);
    end
end 
%下面是计算每一帧的谱的能量
for i=1:nseg
    for n=1:Winsiz/2
        E(n,i)=A(n,i);
    end
end   
%下面是计算每帧中每个样本点的概率分布
for i=1:nseg
    for n=1:Winsiz/2
      P(n,i)=E(n,i)/Esum(i);  
    end
end
%下面是计算每一帧的谱熵值
H=zeros(1,nseg);
for i=1:nseg
    for n=1:Winsiz/2
        H(i)=H(i)+P(n,i)*log(P(n,i)+eps);
    end
end    
%画出wav文件的波形和对应的信息熵
subplot(311)
plot(x);
subplot(312)
plot(H);
%为了消除单个点受噪声的影响,现在把4点放在一起,变成一子带,4*32=128 
Eb=zeros(32,nseg);Ebsum=zeros(1,nseg);
for i=1:nseg
    for m=1:32
        for k=(4*m-3):4*m
           Eb(m,i)=Eb(m,i)+E(k,i);
        end
        Ebsum(i)=Ebsum(i)+Eb(m,i);
    end
    
end   
%实现文中公式(8)
for i=1:nseg          
    for k=1:32
     Pb(k,i)=Eb(k,i)/Ebsum(i);
    end
end     
%实现文中公式(9)
Hb=zeros(1,nseg);
for i=1:nseg
    for k=1:32
        Hb(i)=Hb(i)-Pb(k,i)*log(P(k,i)+eps);
    end
end
%画出wav文件的波形和对应的信息熵
subplot(313)
plot(Hb);
    

⌨️ 快捷键说明

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