audio - 使用不同的FFT方法时,音频中出现奇怪的嘶嘶声/伪影

标签 audio signal-processing fft

我正在使用fft(FFTW)进行滤波器卷积。我经历了一些我无法理解的事情。
我有一个输入x(n),我想应用一个过滤器IR u(n)。两者的长度均为N。因此我将两者都设为零。到2n并进行FFT以获得X(n)和U(n)。如果我只做X(n)* U(n)和IFFT,我会得到一个信号y(t)。如果我听到信号没有嘶嘶声,一切听起来还可以。为了加快编程速度并节省内存,我尝试利用U(n)和X(n)的对称性,仅使用U(n)和X(n)的前半部分,并在后半部分使用零填充。所以我做了X(n0 ... n / 2,0,0,0,0,..,N)U(n0,..,n / 2,0,0,0,..,N)和IFFT 。
产生的输出听起来与乘以全长XU时的结果没有什么不同,但是输出上会听到奇怪的细微嘶嘶声。 MoSTLey在响亮/共振的输入信号部分上很明显,听起来几乎像是在切割舞台。在这两种方法中,我都没有更改缩放比例的任何内容,因此,我不知道发生了什么。有人可以帮我一个主意吗?

仅使用U和X的一半,其余部分用零填充是错误的,我必须使用全长吗?还是会发生变化,例如缩放?

最佳答案

您不能简单地将信号频谱的一部分设置为零。任何实信号(没有虚部)都具有共轭复频谱。我想这就是您正在谈论的对称性。如果将频谱的一部分设置为零,则时域中的信号将很复杂,并且与开始时的原始信号完全不同。

如果要加快计算速度,请减少正在使用的样本数量

关于audio - 使用不同的FFT方法时,音频中出现奇怪的嘶嘶声/伪影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56926086/

相关文章:

objective-c - 在 Objective-C 中处理大量音频样本

linux - 从任意音频文件中提取语音部分的好方法是什么?

c++ - 有没有办法在正弦方程中设置像 “unknown”这样的 “x”变量,然后再更改其值?

python - 在不使用 ifft 的情况下使用 FFT 结果重新创建时间序列数据

c - 在波形文件上使用 KissFFT

javascript - 如何让网站上的每个访问者都位于音频文件的同一点来模拟预定的直播?

ios - iOS音频中断

python - 如何使用 scipy 和 lfilter 进行实时过滤?

java - Android多线程-播放声音和响应的时间

html - Cordova 播放本地音频文件