簡體   English   中英

如何實現均衡器

[英]How to implement an Equalizer

我知道有很多關於均衡器的問題,但我沒有得到我想要的。 我想要做的是一個均衡器,用於以如下方式修改音頻樣本:

equalizer.eqAudio(audiosamples, band, gain)

我不確定這是否是我想要的確切接口,因為在實現它們方面我對 DSP 知之甚少(我使用了濾波器、限制器、壓縮器但沒有制作它們)。

所以谷歌搜索我讀到我必須對樣本進行 FFT,這樣我才能獲得每個頻率范圍的數據而不是幅度,按照我想要的方式處理它,然后對 FFT 進行逆運算,這樣我就可以再次得到音頻樣本的結果. 我尋找了這個 FFT 的實現,並找到了 Java 的 JTransform。 這個庫有一個 FFT 相關算法的實現,稱為離散余弦變換 (DCT)。

我的問題是:

  • 好吧,我是在正確的方式嗎?
  • 由於 FFT 為我提供了有關頻率的數據,因此我應該將一大塊樣本傳遞給 FFT 算法。 這個塊必須有多大?
  • 有沒有解釋均衡器的關於 DSP 編程的好書?

謝謝!

FFT 不會是我音頻均衡的首選。 我會默認使用 IIR 或 FIR 濾波器構建均衡器。 FFT 在特殊情況下可能很有用。

通常推薦的參考是Audio EQ Biquad Filter CoefficientsCookbook 公式

用於編程雙二階濾波器的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM