在音頻處理中,,均衡器" title="均衡器">均衡器可以改變音頻信號的頻響特性,,從而彌補信號在傳輸過程中的缺陷或是達到特定的聲音處理效果。通常情況下,,均衡器將音頻處理信號(20~20 K)按一定的規(guī)律分為10段,,15段,25段或31段來進行調節(jié),。
常采用的均衡器算法是使用IIR或者FIR濾波" title="濾波">濾波器濾波的設計方法,。這種方法有幾個不足之處:IIR濾波器具有反饋回路,會出現相位偏差,;FIR濾波器會造成很大的時間延遲,,這對于實時濾波是非常不利的。另外,,如果使用IIR或者FIR濾波器,,所調節(jié)的頻段越多,增加的濾波器的個數也越多,,運算量也明顯增大,。而通過傅里葉變換設計均衡器,不但在濾波的過程中具有很大的優(yōu)越性,不存在相位誤差,、時間延遲這些問題,,對調節(jié)多段均衡程序運算量上也有明顯的減少。另外,,這段程序是在TMS320DM642上進行的,,該芯片的特點就是可以進行快速的乘法運算,因此,,卷積等運算可以在芯片上高速的運行,。
1 設計原理
均衡器的基本功能就是調節(jié)信號各段頻率的強弱,從而彌補信號在傳輸過程中的缺陷或是達到特定的聲音處理效果,。因此為了達到這個目的,,調節(jié)信號的各段頻率可以將輸入的信號進行以下處理:
1)對輸入的信號進行快速傅里葉變換,使得各個頻段的信號分開,;
2)對需要變化的頻點及其周圍的頻點進行相應的處理,;
3)將處理后的信號進行傅里葉反變換,得到最后需要的信號,。
2 傅里葉變換
快速傅里葉變換的時域抽取方法是將輸入的信號按奇偶分開,,打亂原來的順序,之后進行蝶形運算,,以保證輸出的序列是按著時間順序排列的,。分解過程遵循兩條規(guī)則:1)對時間進行偶奇分解,即碼位倒置,;2)對頻率進行前后分解,,即蝶形運算。
2.1 碼位倒置
將長度為Ⅳ的時域序列x(n)按n的奇偶分為兩組,,變成兩個N/2序列
碼位倒置可以將輸入數據依照奇偶分開,,如表1所示。
2.2 蝶形運算
2.2.1 蝶形運算的原理
蝶形變換是將處理的信號進行分級處理,,逐次進行DFT變換,,以減少復數的乘法減少運算次數。對于輸入x(n)序列奇偶按分開的兩個序列的DFT運算分別是
2.2.2 蝶形運算的算法
蝶形運算是逐級運算累加實現的,,在傳統的蝶形運算中,,旋轉因子的N是保持一個固定的值而k是不斷變化的,第一級到第級中,,k的變化是以2為底的冪指數的變化,,而到第級時,k的變化則是0,,1,,…,(N/2)-1。如果依照k的這種變化規(guī)律,,在第級時,就很難繼續(xù)依照前級進行變化,。因此,,根據以上分析,采用另外一種思路來對蝶形運算進行重新的整理,。在旋轉因子中,,N是每個
蝶形單元輸入數據的個數,k的變化規(guī)律是0,,1,,…,(N/2)-1,,采用這種方法就可以有效的縮短代碼的長度,,提高運行速度。圖1為蝶形運算流程圖,。
2.3 快速傅里葉變換的實現
蝶形運算的旋轉因子,,輸入的復數表示為InputData=RealInData+j*ImagInData,因此在計算過程中,,旋轉因子和輸入數據的計算過程是將實數和復數分開計算所得到的,。
因為旋轉因子中k=0,1,,…,,(N/2)-1,因此隨著k的增長cos(-2Pik/N)和sin(-2Pik/N)也相繼發(fā)生成倍的變化,。
對這一現象采用的處理方法是使用正余弦的倍角公式:
這樣,,處理的變化的過程就變?yōu)樘幚碚液陀嘞冶督亲兓倪^程,從而簡化了程序,。部分程序如下:
其中,,Block是每一個蝶形單元輸入個數的一半即N/2,r0和i0分別是旋轉因子的實部和虛部,。
3 均衡處理
對于頻點的調節(jié)是調節(jié)頻點周圍這一段的頻率幅度的大小,,以最終達到調節(jié)頻率的目的。為了防止在抽取頻點時,,因某一點的調節(jié)范圍過大而使這一段的聲音聽起來不和諧,,在對頻點進行調節(jié)時,采用的方法是調節(jié)該頻點及其附近的頻點以達到最終的調節(jié)效果,。
算法的實現:取頻率點周圍的點,,將所取的點調節(jié)的范圍是該點與對應頻率點的距離的反比,這樣就避免該點頻率的影響太強烈。算法流程如圖2所示,。針對某一個頻點的處理的程序如下:
Mid為調節(jié)頻點對應的頻率軸的位置,,i為Mid相鄰近的后面的點。
4 結束語
本文提出的采用頻率濾波器對均衡器進行設計的方法,,區(qū)別于其他的均衡器的實時濾波器的設計,,既避免了IIR濾波器相位偏移的現象,又避免了FIR濾波器的延遲,,因此對頻率濾波具有很好的效果,。另外,由于處理采用頻域濾波,,在處理音頻信號時可以只經過一次傅里葉變換,,就能處理各個頻段的信號,大大減少了數據的運算量,,因此使用頻域濾波器可以更快捷,、更高效地對數據進行處理。在使用該種方法
進行濾波處理時,,應注意采樣點個數的選取,,可以根據處理器緩存的大小決定采樣點的個數,從而可達到更好的處理效果,。