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

📄 minenframe.m

📁 此函数实现含噪语音的信噪比的计算
💻 M
字号:
%此函数为单帧逼近谱估计的一部分
%dx=dzp(x,a,b);
%minxenf为输出的估计噪声
%x语音信号
%
function minxenf=minenframe(x,N,Nshift)
N=N;%%帧长
enfshift=Nshift;%帧移
len=length(x);
t=1;
while (t-1)*enfshift+N<=len
    xenf(t,:)=x((t-1)*enfshift+1:(t-1)*enfshift+N);
    t=t+1;
end
M=t-1;%帧数
% 计算能量
enp=zeros(1,M);%定义每一帧的能量
for t=1:M    
    xfft(t,:)=xenf(t,:);% FFT变换
    for n=1:N
        enp(t)=enp(t)+abs(xfft(t,n));%求出每一帧的能量
    end
end
% 
enp_min=min(enp);%求出最小的那一帧作为噪声帧
p=find(enp==enp_min);%返回最小帧的帧号
% 求出最二三小能量帧
t=1:M;
enp_min1=min(enp(t~=p));
p1=find(enp==enp_min1);
enp_min2=min(enp(t~=p&t~=p1));
p2=find(enp==enp_min2);

%三帧平均
xmean=(xfft(p,:)+xfft(p1,:)+xfft(p2,:))/3;
enp_mean=enp_min/N;%求出这一噪声帧的平均值
%下面求残差
perf=xfft(p,:);
can_c=perf-enp_mean;%有可能为负,所以取绝对值
% 恢复带修正
a=3;
minxenf=(xmean+can_c.^a)/2;












⌨️ 快捷键说明

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