0

我必须用 matlab 从 wav 音乐文件中去除噪音。

我知道我必须使用ellipordandellip函数。首先我阅读了wav文件:[x,Fs]=wavread('file.wav');

然后我做一个频谱图: spectrogram(x,512,400,512,Fs,'yaxis');

在此处输入图像描述

现在,我无法理解一些事情:

  • 我必须删除那条红线?(我想那是噪音)
  • 椭圆函数的 Wp 值是多少?(我知道它称为通带拐角频率)。
  • Ws 值会在 14000 到 16000 赫兹之间?消除噪音的价值?我怎样才能找出这个频谱图的 Wp、Ws、Rs 和 Rp 的值?
4

1 回答 1

1

您的噪音看起来像 15000 Hz 的高频嘶嘶声。我认为消除这种噪声的最佳方法是带阻滤波器,虽然很难说不听,但也许低通滤波器会更好地满足您的要求。我也会尝试其他过滤器类型

Fs = 44100;
%what frequencies do you want to pass
wp = [12000 18000] / (Fs/2);
%what frequencies you don't want to pass
ws = [14000 16000] / (Fs/2);
%ellipsoid filter characteristics must be smooth
%so you have to select how many decibels 
%you allow to lose at passband (i.e. 12000 and 18000 hz)
rp = 3;
%stopband (minus decibels at 14000 and 16000 hz)
rs = 60;
[n,Wp] = ellipord(wp,ws,rp,rs)
[b,a] = ellip(n,rp,rs,wp,'stop');
freqz(b,a,Fs,Fs);
于 2013-05-29T20:55:34.227 回答