首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FFT音频去噪技术

FFT音频去噪技术
EN

Stack Overflow用户
提问于 2014-04-02 15:27:37
回答 1查看 953关注 0票数 0

我正试图用matlab中的频域消除音频记录中的静态噪声,但是无法获得以下信息来产生我期望的音频:

代码语言:javascript
复制
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. 如果理论上应该有效,我做错了什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-02 15:41:45

假设信号的FFT如下所示:

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

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

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

你想用这样的函数相乘:

它是由以下方面提供的:

代码语言:javascript
复制
max_noise = max(noisefft)
multiplier = (max_noise - noisefft) / max_noise
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22816161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档