《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 基于短時能量和短時過零率的VAD算法及其FPGA實現(xiàn)

基于短時能量和短時過零率的VAD算法及其FPGA實現(xiàn)

2008-04-01
作者:李 昱, 林志謀, 黃云鷹,

  摘 要: 介紹了一種基于短時能量和短時過零率的VAD算法,并對該算法進行了硬件實現(xiàn),。對其中主要的運算模塊——濾波器和平方器模塊,,在硬件實現(xiàn)方法上進行了優(yōu)化和改進,取得了較好效果使其在保證實時性" title="實時性">實時性要求的同時節(jié)省了資源,為進一步向低成本器件上移植或系統(tǒng)中作為IP模塊應(yīng)用提供了可能性,。
  關(guān)鍵詞: 語音激活檢測" title="語音激活檢測">語音激活檢測 短時能量 短時過零率 現(xiàn)場可編程門陣列


  語音激活檢測VAD(Voice Activity Detection)是一種通過特定的判決準則判斷語音中出現(xiàn)的停頓和靜默間隔,,檢測出有效語音部分的技術(shù),。運用這種技術(shù)可以在確保語音質(zhì)量的前提下,,對不同類別的語音段采用不同的比特數(shù)進行編碼,,從而降低語音的編碼速率,。由于在雙工移動通信系統(tǒng)中,,一方只有35%的時間處于激活狀態(tài)[1],,如何降低靜音期的編碼速率對于減少傳輸帶寬、功率以及容量具有積極的作用,因此VAD技術(shù)在語音通信領(lǐng)域具有重要的使用價值,。隨著適合于變比特率語音編碼的CDMA和PRMA等多址技術(shù)的出現(xiàn),,應(yīng)用于蜂窩的語音激活檢測的重要性也隨之提高[2]
  由于語音通信的特殊性,,要求檢測過程能達到實時性的要求,。而目前主流DSP芯片的并行度并不高,因此在實時處理的要求下,,保證語音質(zhì)量和降低語音的編碼速率兩者難以兼顧,。而現(xiàn)場可編程門陣列(FPGA)由于其硬件具有可編程的靈活性,可以實現(xiàn)較高的并行度,,從而可以在滿足實時性要求的前提下,,很好地保證語音質(zhì)量并降低語音的編碼速率。
1算法及檢測流程
1.1 算法簡述
  語音激活檢測算法可以基于時域或頻域,。本文采用的算法是時域分析的方法,。算法對于輸入信號的檢測過程可分為短時能量檢測和短時過零率檢測兩個部分。算法以短時能量檢測為主,,短時過零率檢測為輔,。根據(jù)語音的統(tǒng)計特性,可以把語音段分為清音,、濁音以及靜音(包括背景噪聲)三種,。在本算法中,短時能量檢測可以較好地區(qū)分出濁音和靜音,。對于清音,,由于其能量較小,在短時能量檢測中會因為低于能量門限而被誤判為靜音,;短時過零率則可以從語音中區(qū)分出靜音和清音,。將兩種檢測結(jié)合起來,就可以檢測出語音段(清音和濁音)及靜音段,。
1.2 檢測流程
  檢測流程:對輸入信號先進行高通" title="高通">高通濾波,,減弱以噪聲為主的信號能量。接著進行窗長為80個數(shù)據(jù)的加窗處理,,然后計算該幀的平均能量,再利用短時能量進行VAD初判,。若平均能量大于門限則判為語音幀,若平均能量小于門限則判為靜音幀,。對于初判為靜音幀的幀再進行VAD平滑,,即參考前三幀的情況:如果前三幀中至少包含一幀非平滑過的語音幀,則將該幀平滑為語音幀,,同時記錄下該幀為平滑所得的語音幀,;反之,則判斷為靜音幀。如果平滑結(jié)果仍為靜音幀,,且當前幀的過零率介于30~70之間時,,則改判為語音幀;反之則仍判為靜音幀[3],。VAD算法的檢測流程圖如圖1所示,。


  此外,由于人耳的聽覺具有掩蔽效應(yīng),,因此有必要對短時能量門限進行更新[3],。本算法所采用的門限更新方式是:如果連續(xù)檢測到三幀語音,為了更好地檢測到靜音,,將短時能量門限提高3dB,,但如果提高后的門限超過當前幀的平均能量減12dB,則不提高門限,;如果連續(xù)檢測到三幀靜音,,為了更好地檢測到語音,將短時能量門限降低3dB,,但如果降低后的門限小于當前幀的平均能量加12dB,,則不降低門限。此外,,為了防止門限變得太高或降得太低,, 還應(yīng)把門限限制在GATE_MIN、GATE_MAX范圍內(nèi),。
2 系統(tǒng)實現(xiàn)及優(yōu)化
  本設(shè)計采用QuartusII以及ModelSim進行開發(fā)(ModelSim是Mentor Graphics公司的仿真軟件)。QuartusII是Altera公司的一套開發(fā)FPGA/CPLD的EDA軟件,,可以完成從設(shè)計輸入,、功能仿真、綜合優(yōu)化,、后仿真,、引腳配置、布局布線到配置芯片的一系列FPGA/CPLD的開發(fā)流程,,并提供調(diào)用其他EDA工具,,如ModelSim、Synplify/Synplify Pro,、FPGA Complier的接口,。
  本設(shè)計的輸入為16位PCM編碼的數(shù)字語音信號,輸出是每80個數(shù)據(jù)為一幀的語音信號的檢測結(jié)果,,其中高電平表示語音,,低電平表示靜音。根據(jù)所用算法的特點,將本設(shè)計劃分成五個模塊:FIFO模塊,、高通濾波模塊,、平均能量模塊、判決模塊以及控制模塊,。系統(tǒng)結(jié)構(gòu)框圖如圖2所示,。


2.1 FIFO模塊
  輸入的語音信號的采樣率為8kHz,如果將8kHz作為系統(tǒng)的時鐘頻率,,極大地削弱了FPGA芯片的速度優(yōu)勢,。因此系統(tǒng)需要兩個時鐘,一個是頻率為8kHz的采樣時鐘,,另一個為系統(tǒng)主時鐘,。
  在FPGA設(shè)計中,多時鐘設(shè)計會帶來不穩(wěn)定的隱患,。為了提高系統(tǒng)的穩(wěn)定性,,本設(shè)計采用一個雙口的FIFO作時鐘隔離。FIFO模塊具有16位的數(shù)據(jù)輸入口及16位的數(shù)據(jù)輸出口,、8kHz時鐘輸入口以及系統(tǒng)主時鐘輸入口,。此外,由于FIFO的讀速度大于寫速度,,因此當FIFO為空時,,需要輸出一個empty信號。
  在高通濾波,、平均能量計算,、判決、控制這四個模塊中均可采用單時鐘設(shè)計,,而且所使用的時鐘均為系統(tǒng)主時鐘,。
2.2 濾波器模塊
  濾波器對輸入信號進行高通濾波的預(yù)處理。高通濾波器的傳輸函數(shù)采用CS-ACELP算法所使用的傳輸函數(shù)[4]
  
  FPGA中IIR濾波器的設(shè)計一般采用如圖3所示的流水線結(jié)構(gòu)(圖中以2階IIR濾波器為例),。這種結(jié)構(gòu)的濾波器可在一個時鐘周期" title="時鐘周期">時鐘周期內(nèi)完成一次濾波計算[5~6],, 并行度較高,但硬件上需要5個乘法器" title="乘法器">乘法器,、4個加法器和若干個寄存器,,占用了較多的資源。采用非流水線結(jié)構(gòu)的濾波器(仍以2階IIR濾波器為例)的結(jié)構(gòu)如圖4所示,。其中:fifo_out為FIFO模塊輸出的數(shù)據(jù),,empty為FIFO是否為空的標志信號,ready_out信號為完成一次濾波計算的標志信號,。此結(jié)構(gòu)的濾波器每5個時鐘周期完成一次濾波計算,,并行度較低,,但在硬件上只需要1個乘法器、1個累加器,、1個計數(shù)器以及若干個寄存器,。

?

?


  由于本文的算法其信號的采樣率只有8kHz,非流水線結(jié)構(gòu)濾波器的處理速度已可以滿足要求,。因此,,為了合理利用資源,本設(shè)計采用了基于非流水線結(jié)構(gòu)的濾波器,。同時考慮到系統(tǒng)的同步性和穩(wěn)定性,,所設(shè)計的濾波器每8個時鐘周期完成一次濾波運算并將結(jié)果鎖存。表1為兩種不同結(jié)構(gòu)的濾波器(系數(shù)采用18位量化,,即2位整數(shù)加16位小數(shù))在同一器件上實現(xiàn)的結(jié)果比較,,所用器件為Altera公司CycloneII系列的EP2C5T144C7,綜合工具為QuartusII 5.0,,優(yōu)化選項均為balanced,。由表1的比較結(jié)果可以看出,雖然非流水線結(jié)構(gòu)的濾波器速度比流水線的慢,,但所使用的資源卻大大減少,,并且能在101.61ns內(nèi)完成一次濾波計算,可滿足實時性的要求,。此模塊的處理延遲為8個時鐘周期,。
2.3 加窗、平均能量計算模塊
 ?。?)相關(guān)公式
  將通過高通濾波器的信號進行加Hamming窗處理,,窗長為80個數(shù)據(jù)。處理所使用的計算公式如下:
  
  其中,,x(i)為通過高通濾波器后的信號,,y(i)為經(jīng)過加窗處理后的信號。
  對經(jīng)過加窗處理過的信號,,計算其平均能量的計算公式如下:
  
  其中,y(0),、y(1),、……、y(79)為經(jīng)過加窗處理的信號,,E_average為該幀的平均能量,。


  在加窗的計算中涉及到余弦的運算,為了節(jié)省資源及提高處理速度,,采用查表法來得到0.54-0.46×cos(e×i/79)部分的數(shù)值,。
 ?。?)平方器的實現(xiàn)
  由于平方運算與普通的乘法器相比具有一定的特殊性,因此在平方器的硬件實現(xiàn)上采用如下的算法來減少硬件資源并提高運算速度:
  設(shè)X的二進制表示為 In In-1……I1I0,,Iij為第i位和第j位的乘積,。由于在平方運算中Iij=Iji,故 Iij+Iji=2Iij,。因此以4bit數(shù)的平方運算為例,,參考圖5,可以通過合并相同項后,,左移一位(相當于乘2運算)來減少部分積的位數(shù)[7],。對所得到的部分積使用Wallace壓縮樹將部分積壓縮至兩組,然后再使用超前進位加法器來得到最后結(jié)果,。


  由于本模塊計算得到的平均能量僅用于同語音判決模塊中的門限比較,,出于節(jié)省硬件資源的考慮,該平均能量和語音判決模塊中的門限均不化成dB單位,。通過Matlab仿真驗證,,這種做法并不會影響到最后的判決結(jié)果。加窗,、平均能量計算模塊的處理延遲為5個時鐘周期,,圖6為本模塊的結(jié)構(gòu)框圖。圖中的ready_out信號為高通濾波模塊完成一次濾波計算后輸出的數(shù)據(jù)可讀信號,,acc_clken信號為累加器的時鐘使能信號,。


2.4 語音判決模塊
  根據(jù)計算出的當前幀的平均能量以及之前幀的情況,判斷該幀是否為語音幀,。通過使用四個標志位:frame_attribute[2:0]和smooth來決定是否需要進行平滑,,其中,frame_attribute[2:0]記錄前三幀的屬性,smooth記錄前三幀中是否存在非平滑過的語音,。此模塊的處理延遲為1個時鐘周期,。
2.5 控制模塊
  控制模塊控制高通濾波、加窗,、平均能量計算以及語音判決模塊的運行,,并且根據(jù)實際情況對門限進行更新。
2.6 系統(tǒng)綜合結(jié)果
  表2為本設(shè)計在兩款FPGA芯片上的綜合結(jié)果,。


  綜合結(jié)果顯示,,本設(shè)計在硬件上占用的資源較少,并可在低成本的FPGA(考慮到成本,,選用CycloneII系列的EP2C5T144C7)上實現(xiàn),。因此本設(shè)計也可以與其他數(shù)字語音處理模塊一起構(gòu)成完整的語音處理芯片。
2.7 仿真結(jié)果及分析
  圖7為ModelSim仿真結(jié)果,。圖中最后一行信號為檢測結(jié)果,,高電平表示語音,,低電平表示靜音。由仿真結(jié)果可以看到,,所設(shè)計的FPGA可以滿足準確性及實時性的要求,。


  由前面各個模塊的分析結(jié)果可以推算出,本設(shè)計在采集完一幀數(shù)據(jù),、在14個時鐘周期后可將判決結(jié)果輸出,。
  本文介紹了基于短時能量和短時過零率的VAD算法的FPGA實現(xiàn)。整個系統(tǒng)采用VHDL進行描述,,并進行了仿真,,驗證了設(shè)計的正確性。系統(tǒng)的時鐘頻率可達46.22MHz,可在采集完一幀數(shù)據(jù)后的302.90ns內(nèi)輸出檢測結(jié)果,,符合實時性的要求,。由于本設(shè)計采用VHDL進行描述,因此具有可移植性,,同時由于設(shè)計所使用的硬件資源并不多,,因此也可以作為一個模塊應(yīng)用到其他系統(tǒng)中。
參考文獻
1 BRADY P T. A technique for investigating on-off patterns of speech[J]. Bell Syst Tech J, 1965,;(44):1~22
2 GERSHO A,PAKSOY E. An overview of variable rate speech coding for cellular networks[A]. IEEE Conf Selected on Topics Wireless Commun[C]. Vancouver, 1992;172~175
3 吳智勇.VoIP中語音壓縮Codec的研究與實現(xiàn).碩士論文.南開大學(xué), 2003
4 ITU-T Rec.G.729,Coding of speech at 8 Kbit/s using conjugate-structure algebraic-code-excited linearprediction(CS ACELP) [S]. 1996
5 Parhi K K.VLSI digital signal processing systems: Design and Implementation. 北京:機械工業(yè)出版社,2003
6 Kuo S M,, Lee B H著,盧伯英譯.實時數(shù)字信號處理.北京:中國鐵道出版社,2004
7 韓雁,姚慶棟.數(shù)字專用集成電路中平方運算的硬件實現(xiàn).電子科學(xué)學(xué)刊,1996;18(6)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。