python - 仅具有幅度的傅里叶逆变换 - 我还需要相位吗?

标签 python audio machine-learning fft

我对随机 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/

相关文章:

machine-learning - Weka 添加多个元过滤分类器

python - 如何减去两个不同数据帧之间的行并替换原始值?

python - 如何创建一个 numpy 数组,该数组对应于一个点是否位于 numpy 多边形数组内?

android - (Android SDk 2.1)使用setAudioSource和setVideoSource时出现错误

javascript - 使用 SoundCloud API 暂停声音

machine-learning - K 最近邻算法

python-2.7 - 哪一个更快?逻辑回归还是带有线性核的 SVM?

python - 如何使用 pythonCOM 将表格从 excel 复制到 word

python - 如何计算列表中两个值之间的位置差异

actionscript-3 - AS3 : ByteArray sound data loop smoothing issue