呜呜声的FFT音频噪声消除技术

时间:2014-04-02 15:27:37

标签: matlab signal-processing

我正在尝试使用matlab中的频域从录音中删除静态噪音,并且无法获得以下内容以产生我期望的音频:

signalsamples = [...]; % n noisey signal samples
noisesamples = [...]; % isolated noise samples

signalfft = fft(signalsamples);
noisefft = fft(noisesamples, n);

reducednoisefft = signalfft ./ (noisefft * removalfactor); % Decrease the amount of noise frequencies in the signal in the frequency domain
reducednoisesamples = ifft(reducednoisefft); % Create new samples

当我运行这个时,产生的音频(简化声音样本)有一个新的,响亮的呜呜声,比音频中的任何其他声音都要大,但你可以听到在后台播放的原始音频。

  1. 这种方法有用吗(或者我错过了什么)?
  2. 如果理论上应该有效,我做错了什么?

1 个答案:

答案 0 :(得分:3)

假设您的信号的FFT如下所示:

signal FFT

如果您的噪音是呜呜声,基本上是固定频率的正弦波,noisefft将如下所示:

noise FFT

所以signalfft - 真的是signalPlusNoiseFFT - 看起来像这样:

signal plus noise ffT

除以noisefft是错误的,因为在noisefft弱的情况下,你基本上除以零......

你想要乘以这样的函数:

desired multiplier

由下列人员给出:

max_noise = max(noisefft)
multiplier = (max_noise - noisefft) / max_noise