我对随机 wav 文件使用了短时傅立叶变换,并对幅度谱进行了一些更改。为了“听”我所做的,我尝试使用逆 STFT 来反转该过程。
在 Python 中,频谱如下所示。 Magnitude Spectrum in Python
但是,如果我尝试将整个内容转换回 wav 并查看其频谱,它看起来像这样: Magnitude Spectrum after ISTFT
我只是使用逆 FFT 的幅度。我究竟做错了什么? 我还需要相位信号吗?即使我操纵了幅度,我也可以使用相同的相位信号吗?
# ....read wav-file, perform STFT on it and manipulate the magnitude spectrum
# Then (as follows) I'm trying to write it back
fs = 41000.0 # Frequency Spectrum
filteredwrite = istft(magnitude)
from scipy.io.wavfile import read, write
write('../data/mxx.wav', fs, filteredwrite.astype(x.dtype))
如果我执行 ifft(fft(F)) ,傅立叶函数可以正常工作 - 这里没有问题。
最佳答案
需要相位来重建原始信号,因为分量频率的相对相位决定了这些波的叠加。
关于python - 仅具有幅度的傅里叶逆变换 - 我还需要相位吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33495715/