簡體   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