我最近選擇了一個項目,我需要對傳入的麥克風數據執行實時滑動FFT分析。我選擇的環境是OpenGL和Cinder,並使用C++。STFT /滑動FFT實時數據
這是我第一次在音頻編程方面的經驗,我有點困惑。
這就是我想在我OpenGL應用程序來實現:
因此,在每一幀,有輸入數據的一部分。在for循環(因此多次通過)中,將消耗當前數據的窗口並對其執行FFT分析。對於for循環的下一次迭代,窗口將通過數據等提前「跳躍大小」,直到達到數據的末尾。
現在這個過程必須是連續的。但是,正如你在上圖中看到的那樣,只要我當前的應用程序框架結束並且下一幀的數據進入時,我就無法選擇離開前一幀的位置(因爲數據已經消失)。你可以在圖中看到藍色區域在兩幀之間。
現在你可以說,選擇window-size/hop-size的方式永遠不會發生,但這是不可能的,因爲這些參數應該在我的項目中留給用戶配置。
對於面向C++ 11的這種處理的建議也非常受歡迎!
謝謝!
我不明白這個字眼:*「只要N個樣本的數量完成,當前緩衝區的處理完成,下一個輸入緩衝區的第一窗塊將不相關的差距與上次窗口塊到k來自上一個緩衝區的數據「* - 也許您可以爲我們繪製該部分的一些ASCII圖表? – 2015-02-09 05:17:38
@JohnZwinck我收錄了一張圖片,希望能夠展示我想要達到的目標。謝謝! – Sepehr 2015-02-09 19:39:21