如果此問題非常基本,我很抱歉。重疊添加信號合成
我使用FFT將音頻信號(當前是純正弦波)從時域變換到頻域,然後返回到時域以比較差異與原始信號。
當前我在做:
- 採用非重疊幀(例如每幀1024個採樣)。
- FFT該幀
- IFFT的頻率域信息
- 發送輸出到揚聲器
EDIT(1):
這似乎現在的工作(見圖像不具有和具有一個窗口,在這裏輸入=棕色,輸出=藍色)。
END EDIT(1)
現在我要執行的overlapp相加法:
- 以具有50%重疊的幀(樣品0-1023,512-1535,1024至2047年...)
- 應用漢寧窗對ecah幀
- FFT
- IFFT
- ???這是我的問題!
所以在我的iFFT結束時,我有1024個樣本的輸出幀。這是否意味着我需要將前512個採樣發送到揚聲器,而其他512個採樣(512-1023)應該保存在緩衝區中以添加到下一幀的前512個採樣中?那麼簡單,還是我誤解了一些東西?
謝謝!
爲什麼你會期望輸出是原始正弦波的質量差的副本(除了你沒有看到它的事實)? – jaket
@jaket我附上了一張圖片。輸入聽起來像連續的,而輸出聽起來像是短脈衝。根據我的理解,輸出因頻譜泄漏而不同,輸入頻率並不完全匹配任何FFT頻率倉。 – Merlevede
您的代碼中存在一個錯誤。未經修改的複雜FFT結果的IFFT應返回確切的原始數據(減去微小的數字舍入問題)。所以你在搗毀你的數據。例如:扔掉相位信息將極大地扭曲你的結果。 – hotpaw2