【信号去噪】基于Boll的改进谱减法语音去噪含Matlab源码

1 简介

2 部分代码

function output=SpectralSubIm(signal,wind,inc,NIS,Gamma,Beta)nwin=length(wind);if (nwin == 1)              % 判断窗长是否为1,若为1,即表示没有设窗函数   W = wind;               % 是,帧长=wind   wnd=hamming(W);else   W = nwin;              % 否,帧长=窗长   wnd=wind;endnfft=W;y=enframe(signal,W,inc)';Y=fft(y,nfft);YPhase=angle(Y(1:fix(end/2)+1,:));          %含噪语音的相位Y=abs(Y(1:fix(end/2)+1,:)).^Gamma;      %功率谱numberOfFrames=size(Y,2);N=mean(Y(:,1:NIS)')';                           %初始的能量谱均值D(k)NRM=zeros(size(N));                           %噪声残余量最大值NoiseCounter=0;NoiseLength=9;                                  %噪声平滑因子YS=Y;                                               %平均谱值for i=2:(numberOfFrames-1)    YS(:,i)=(Y(:,i-1)+Y(:,i)+Y(:,i+1))/3;endfor i=1:numberOfFrames    [NoiseFlag, SpeechFlag, NoiseCounter, Dist]=vad_LogSpec(Y(:,i).^(1/Gamma),N.^(1/Gamma),NoiseCounter);       %基于频谱距离的VAD检测    if SpeechFlag==0        N=(NoiseLength*N+Y(:,i))/(NoiseLength+1);                               %更新并平滑噪声        NRM=max(NRM,YS(:,i)-N);                                                          %更新最大的噪声残余        X(:,i)=Beta*Y(:,i);    else        D=YS(:,i)-N;                                                                                 %谱减        if i>1 && i<numberOfFrames                                                      %减少噪声残留项                        for j=1:length(D)                if D(j)<NRM(j)                    D(j)=min([D(j) YS(j,i-1)-N(j) YS(j,i+1)-N(j)]);                end            end        end        X(:,i)=max(D,0);    endendoutput=OverlapAdd2(X.^(1/Gamma),YPhase,W,inc);

3 仿真结果

4 参考文献

[1]林琴, 张道信, 吴小培. 一种基于改进谱减法的语音去噪新方法[J]. 计算机技术与发展, 2007, 17(7):4.​

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值