微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么逆FFT与原始信号不匹配

如何解决为什么逆FFT与原始信号不匹配

我有一个音频wav文件,其中记录了一些人声。我已经使用scipy.read来数字化wav文件。我已经计算了FFT,然后从中获得了逆FFT。 当我绘制原始信号时,逆FFT重叠。它们完全匹配。 但是当我绘制原始信号和反FFT的数据集时,它们根本不匹配。 我观察到,这种情况仅发生在带有人声的文件上,而与乐器录音一样。

下面是我尝试过的代码

import scipy.io.wavfile as wavfile
import scipy
import scipy.fftpack as fftpack
from matplotlib import pyplot as plt
import pandas as pd
import csv
import numpy as np
fs_rate,signal = wavfile.read("Sa.wav")
print ("Frequency sampling",fs_rate," Hz")
l_audio = len(signal.shape)
print ("Channels",l_audio,"Audio data shape",signal.shape,"l_audio",l_audio)
if l_audio == 2:
    signal = signal.sum(axis=1) / 2
N = signal.shape[0]
length = N / fs_rate
print ("Duration of audio wav file in secs",length,"Samples chosen",signal.shape[0])
time =np.linspace(0,signal.shape[0])
sampling_interval=time[1]-time[0]

inverse_fft_amplitude = scipy.ifft(scipy.fft(signal)) 
plt.xlabel('Time[s]')
plt.ylabel('Amplitude')
plt.plot(time,signal,'blue',time,inverse_fft_amplitude,'red')
plt.legend(('Original Signal','Reconstructed Signal using Inverse FFT'))
# They match exactly same

#Getting the data points for original signal
df = pd.DataFrame({"Time" : time,"Amplitude" : signal})
df.to_csv("OriginalData.csv",header=None,index=False)

#Getting the data points for inverse FFT signal
df = pd.DataFrame({"Time" : time,"Amplitude" : abs(inverse_fft_amplitude)})
df.to_csv("ReconstructedDataSet.csv",index=False)

原始信号和FFT的重叠

enter image description here

重叠原始信号和逆FFT数据集

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。