更改 PCM 音頻采樣率的最佳演算法是什么?
輸入通常int16_t為 44.1 kHz,但也可以為 32kHz 或其他頻率。我需要的輸出是 32 位float48 kHz。我精通 SIMD 內在函式并保證擁有 NEON 或 AVX,因此基于浮點數學的演算法是可以的。
我需要實作FFT 逆,還是有一些計算成本更低的東西?
例如,三次樣條是否適用于這個用例,或者他們會引入頻率偽影?
uj5u.com熱心網友回復:
是的,FFT 是高質量的要求。
這個網站有 100 多個正在做音頻重采樣的軟體的漂亮圖表。根據之前的經驗,我知道 Steinberg 制作的專業軟體通常會做正確的事情。該網站上的圖表同意,對于 Cubase 10 和 Nuendo 11,這些圖表確實非常好。
對我來說幸運的是,ffmpeg 4.2.2 和soxr重采樣器產生了幾乎相同的質量。那個特殊的重采樣庫帶有足夠好的許可證,DLL 甚至可以作為我的目標作業系統的包。
我已經集成了那個庫。在運行時將 44.1 kHz 波形檔案重采樣為 48 kHz 時,我的測驗程式僅消耗大約 1% 的 CPU 時間(CPU 是四碼全志 A64 @ 1 GHz),因此盡管有 FFT,但性能還是不錯的。
回到我最初的問題,該庫中實作的演算法來自 Laurent de Soras 2005 年的論文“ The Quest For The Perfect Resampler ”。
正如自述檔案中所寫,它結合了 Julius O. Smith 的“帶限插值”技術和基于 FFT 的過采樣。那里的數學相當復雜。我很幸運能找到那個圖書館,因為我會浪費太多時間嘗試自己做類似的事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/343370.html
