[英]How to implement an Equalizer
我知道有很多關於均衡器的問題,但我沒有得到我想要的。 我想要做的是一個均衡器,用於以如下方式修改音頻樣本:
equalizer.eqAudio(audiosamples, band, gain)
我不確定這是否是我想要的確切接口,因為在實現它們方面我對 DSP 知之甚少(我使用了濾波器、限制器、壓縮器但沒有制作它們)。
所以谷歌搜索我讀到我必須對樣本進行 FFT,這樣我才能獲得每個頻率范圍的數據而不是幅度,按照我想要的方式處理它,然后對 FFT 進行逆運算,這樣我就可以再次得到音頻樣本的結果. 我尋找了這個 FFT 的實現,並找到了 Java 的 JTransform。 這個庫有一個 FFT 相關算法的實現,稱為離散余弦變換 (DCT)。
我的問題是:
謝謝!
FFT 不會是我音頻均衡的首選。 我會默認使用 IIR 或 FIR 濾波器構建均衡器。 FFT 在特殊情況下可能很有用。
通常推薦的參考是Audio EQ Biquad Filter Coefficients的Cookbook 公式。
用於編程雙二階濾波器的 Java 教程。 http://arachnoid.com/BiQuadDesigner/index.html
有沒有解釋均衡器的關於 DSP 編程的好書?
了解數字信號處理是對 DSP 的很好介紹。 有關於 FIR 和 IIR 濾波器的章節。
Julius O. Smith III 的音頻應用數字濾波器簡介。
使用高階遞歸濾波器的圖形均衡器設計Martin Holters 和 Udo Zolzer 是一篇詳細介紹一種 EQ 濾波器設計方法的簡短論文。
獲得均衡器的方式有很多種,正如香農所解釋的那樣,IIR/FIR 濾波器方式就是其中之一。 但是,如果您的目標是快速啟動並運行均衡器,那么采用 FFT 方式對您來說可能更容易,因為存在大量參考實現。
至於您的 FFT 大小問題,這取決於您希望均衡器具有什么頻率分辨率。 如果選擇大小為 16,則將在頻域中獲得 9(8 個復數 + 1 個實數)通道,從 0 到 fs/2 等距。 第一個以 0Hz 為中心,第 9 個以 fs/2 Hz 為中心。 請注意,一些實現返回 16 個通道,其中高部分是低部分的鏡像和復共軛版本。
至於均衡器功能的實現,將每個通道與所需增益相乘。 如果頻譜有鏡像部分,也鏡像增益。 如果不這樣做,以下 IFFT 的結果將不是實值信號。 乘法后,應用 IFFT。
至於 FFT 和基於濾波器的均衡器之間的區別,請記住,FFT 只是一種計算一組 FIR 濾波器的快速方法,這些濾波器以正弦作為脈沖、嚴格采樣(用濾波器長度下采樣)和均勻間隔的中心頻率。
問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.