繁体   English   中英

scipy.io fft和ifft的问题

[英]Issues with scipy.io fft and ifft

我正在尝试将机器学习算法应用于原始音频。 我的训练将针对音频信号的傅立叶系数。 我试图获取这些并应用ifft来恢复音频,但是它与我的实现不兼容,这是:

fs, data = wavfile.read('dataset piano/wav/music (1).wav')
Te = 0.25
T = 40

a = data.T[0] #retrieve first channel
#put the information in a matrix, one row will contain the fourier coefficients of 0.25s of music.
#The whole matrix, which has 40 rows will contain information of 10s of the wav file.
X = np.array([fft(a[int(i*fs*Te):int((i+1)*fs*Te)]) for i in range(T)])
Z = ifft(X.flatten())
Z = Z.astype(data.dtype)

wavfile.write('test3.wav',fs,Z)

通常,它应该播放wav文件的前10个,但不会,而且我真的不明白为什么。 我得到的只是高音。 我正在使用scipy的fft和ifft。

你很亲近 只是改变

Z = ifft(X.flatten())

Z = ifft(X).flatten()

您正在做的是对光谱的串联进行傅立叶逆变换,这实际上没有任何意义。 我想您想做的是在光谱上串联傅里叶逆变换。 这就是我所做的,并设法重新构造了听起来不错的信号。

ifft(X)将沿最后一个维度(在您的情况下为频谱维度)在每个数组上运行IFFT,并返回相同形状的数组(40,11025)。 然后展平将连接每一行,发出一个明智的信号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM