我正试图用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当我运行这个结果音频(减少噪音)有一个新的,响亮的抱怨比任何其他声音在音频中,然而,你可以听到原来的音频播放在后台。
发布于 2014-04-02 15:41:45
假设信号的FFT如下所示:

如果你的噪音是一种发牢骚的声音,基本上是一种固定频率的正弦波,那么noisefft将如下所示:

所以signalfft --实际上是signalPlusNoiseFFT --看起来会是这样的:

除以noisefft是错误的,因为在noisefft弱的情况下,本质上是除以零.
你想用这样的函数相乘:

它是由以下方面提供的:
max_noise = max(noisefft)
multiplier = (max_noise - noisefft) / max_noisehttps://stackoverflow.com/questions/22816161
复制相似问题