基于短時(shí)能量和短時(shí)過(guò)零率的VAD算法及其FPGA實(shí)現
FPGA中IIR濾波器的設計一般采用如圖3所示的流水線(xiàn)結構(圖中以2階IIR濾波器為例)。這種結構的濾波器可在一個(gè)時(shí)鐘周期內完成一次濾波計算[5~6], 并行度較高,但硬件上需要5個(gè)乘法器、4個(gè)加法器和若干個(gè)寄存器,占用了較多的資源。采用非流水線(xiàn)結構的濾波器(仍以2階IIR濾波器為例)的結構如圖4所示。其中:fifo_out為FIFO模塊輸出的數據,empty為FIFO是否為空的標志信號,ready_out信號為完成一次濾波計算的標志信號。此結構的濾波器每5個(gè)時(shí)鐘周期完成一次濾波計算,并行度較低,但在硬件上只需要1個(gè)乘法器、1個(gè)累加器、1個(gè)計數器以及若干個(gè)寄存器。
本文引用地址:http://dyxdggzs.com/article/84500.htm由于本文的算法其信號的采樣率只有8kHz,非流水線(xiàn)結構濾波器的處理速度已可以滿(mǎn)足要求。因此,為了合理利用資源,本設計采用了基于非流水線(xiàn)結構的濾波器。同時(shí)考慮到系統的同步性和穩定性,所設計的濾波器每8個(gè)時(shí)鐘周期完成一次濾波運算并將結果鎖存。表1為兩種不同結構的濾波器(系數采用18位量化,即2位整數加16位小數)在同一器件上實(shí)現的結果比較,所用器件為Altera公司CycloneII系列的EP2C5T144C7,綜合工具為QuartusII 5.0,優(yōu)化選項均為balanced。由表1的比較結果可以看出,雖然非流水線(xiàn)結構的濾波器速度比流水線(xiàn)的慢,但所使用的資源卻大大減少,并且能在101.61ns內完成一次濾波計算,可滿(mǎn)足實(shí)時(shí)性的要求。此模塊的處理延遲為8個(gè)時(shí)鐘周期。
2.3 加窗、平均能量計算模塊
?。?)相關(guān)公式
將通過(guò)高通濾波器的信號進(jìn)行加Hamming窗處理,窗長(cháng)為80個(gè)數據。處理所使用的計算公式如下:
其中,x(i)為通過(guò)高通濾波器后的信號,y(i)為經(jīng)過(guò)加窗處理后的信號。
對經(jīng)過(guò)加窗處理過(guò)的信號,計算其平均能量的計算公式如下:
其中,y(0)、y(1)、……、y(79)為經(jīng)過(guò)加窗處理的信號,E_average為該幀的平均能量。
在加窗的計算中涉及到余弦的運算,為了節省資源及提高處理速度,采用查表法來(lái)得到0.54-0.46×cos(e×i/79)部分的數值。
?。?)平方器的實(shí)現
由于平方運算與普通的乘法器相比具有一定的特殊性,因此在平方器的硬件實(shí)現上采用如下的算法來(lái)減少硬件資源并提高運算速度:
設X的二進(jìn)制表示為 In In-1……I1I0,Iij為第i位和第j位的乘積。由于在平方運算中Iij=Iji,故 Iij+Iji=2Iij。因此以4bit數的平方運算為例,參考圖5,可以通過(guò)合并相同項后,左移一位(相當于乘2運算)來(lái)減少部分積的位數[7]。對所得到的部分積使用Wallace壓縮樹(shù)將部分積壓縮至兩組,然后再使用超前進(jìn)位加法器來(lái)得到最后結果。
由于本模塊計算得到的平均能量?jì)H用于同語(yǔ)音判決模塊中的門(mén)限比較,出于節省硬件資源的考慮,該平均能量和語(yǔ)音判決模塊中的門(mén)限均不化成dB單位。通過(guò)Matlab仿真驗證,這種做法并不會(huì )影響到最后的判決結果。加窗、平均能量計算模塊的處理延遲為5個(gè)時(shí)鐘周期,圖6為本模塊的結構框圖。圖中的ready_out信號為高通濾波模塊完成一次濾波計算后輸出的數據可讀信號,acc_clken信號為累加器的時(shí)鐘使能信號。
2.4 語(yǔ)音判決模塊
根據計算出的當前幀的平均能量以及之前幀的情況,判斷該幀是否為語(yǔ)音幀。通過(guò)使用四個(gè)標志位:frame_attribute[2:0]和smooth來(lái)決定是否需要進(jìn)行平滑,其中,frame_attribute[2:0]記錄前三幀的屬性,smooth記錄前三幀中是否存在非平滑過(guò)的語(yǔ)音。此模塊的處理延遲為1個(gè)時(shí)鐘周期。
評論