gpt4 book ai didi

python - scipy.io fft 和 ifft 的问题

转载 作者:行者123 更新时间:2023-11-30 09:51:41 25 4
gpt4 key购买 nike

我正在尝试对原始音频应用机器学习算法。我的训练将针对音频信号的傅里叶系数。我试图获取这些并应用 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)。然后展平将连接每一行,产生一个合理的信号。

关于python - scipy.io fft 和 ifft 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44053110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com