我正在尝试使用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
当我运行这个时,产生的音频(简化声音样本)有一个新的,响亮的呜呜声,比音频中的任何其他声音都要大,但你可以听到在后台播放的原始音频。
答案 0 :(得分:3)
假设您的信号的FFT如下所示:
如果您的噪音是呜呜声,基本上是固定频率的正弦波,noisefft
将如下所示:
所以signalfft
- 真的是signalPlusNoiseFFT
- 看起来像这样:
除以noisefft
是错误的,因为在noisefft
弱的情况下,你基本上除以零......
你想要乘以这样的函数:
由下列人员给出:
max_noise = max(noisefft)
multiplier = (max_noise - noisefft) / max_noise