matlab去噪声方法,matlab滤除音频噪声
【信号去噪】基于Boll的改进谱减法语音去噪包含Matlab源代码_ Matlab仿真博客的技术博客_博客
1导言
编辑
2部分代码函数output=spectralsubim(信号,风,公司,NIS,伽马,贝塔)
nwin=长度(风);
If (nwin==1)%确定窗口长度是否为1。如果为1,则表示没有开窗函数。
W=风;%是,帧长度=风
wnd=汉明(W);
其他
W=nwin%否,帧长度=窗口长度
wnd=风;
目标
nfft=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=零(大小(N));%最大噪声残留
noise counter=0;
noise length=9;%噪声平滑因子
YS=Y;%平均光谱值
对于i=2:(numberOfFrames-1)
YS(:i)=(Y(:i-1) Y(:i) Y(:I 1))/3;
目标
对于i=1:numberOfFrames
[NoiseFlag,SpeechFlag,NoiseCounter,Dist]=vad_LogSpec(Y(:I)。^(1/gamma),n.^(1/gamma),noisecounter);基于光谱距离的% VAD检测
如果SpeechFlag==0
N=(NoiseLength*N Y(:I))/(noise length 1);%更新和平滑噪声
NRM=马克斯(NRM,YS(:I)-N);%更新最大噪声残留。
x(:i)=Beta*Y(:I);
其他
D=YS(:I)-N;%光谱减法
I1i帧数%减少噪声残留
对于j=1:长度(D)
如果NRM(j)
D(j)=min([D(j) YS(j,i-1)-N(j) YS(j,I 1)-N(j)]);
目标
目标
目标
x(:i)=max(D,0);
目标
目标
output=overlapadd2(x.^(1/gamma),yphase,w,inc);3模拟结果
编辑
4参考文献[1]林禽,张道新,吴晓佩。基于改进谱减法的语音去噪新方法[J].计算机技术与发展,2007,17(7):4。
博主:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等领域的Matlab仿真。相关的matlab代码问题可以私信交流。有些理论引用自网络文献。如有侵权,联系博主删除。
编辑
原创作品来自matlab研究助手,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。