谱减法降噪的matlab代码实现

本文详细介绍了如何使用MATLAB进行谱减法降噪的代码实现,包括噪声估计、频谱减法原理及具体步骤,适用于信号处理和噪声抑制领域的研究。
摘要由CSDN通过智能技术生成
clc;clear;close all;
winsize=256;%窗长
n=0.2;%噪声水平
a=2;
b=5;
c=0.01;
fs=44100;
[speech,fs,nbits]=wavread('file_1.wav') ;%读入wav文件
sound(speech,fs) ;
pause(5);
size=length(speech);%语音长度
numofwin=floor(size/winsize);%窗数
%定义汉明窗
ham=hamming(winsize)';
hamwin=zeros(1,size);
enhanced=zeros(1,size);
improved=zeros(1,size);
%生成噪声信号

y=speech(:,1)'+n*randn(1,size)
sound(y,fs) ;
pause(5);
%噪声处理
noisy=n*randn(1,winsize);
Q=fft(speech);
N=fft(noisy);
npow=abs(N);
for q=1:2*numofwin-1
yframe=y(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2);%分帧
hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+ham;%
%加噪信号FFT
y1=fft(yframe.*ham);
ypow=abs(y1);%加噪信号幅度
yangle=angle(y1);%相位
%计算功率谱密度
Py=ypow.^2;
Pn=npow.^2;
Pyy=ypow.^a;
Pnn=npow.^a;
%基本谱减
for i=1:winsize
if Py(i)-Pn(i)>0
Ps(i
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值