龐盼 段圓夢
摘 要 本文以語音端點檢測算法為基礎(chǔ),著重研究了基于短時平均能量以及過零率的語音端點檢測算法原理及其實現(xiàn),并且對其算法進(jìn)行測試,基于該算法使用verilogHDL對其進(jìn)行硬件設(shè)計,最后對該算法在硬件設(shè)計模塊上的性能進(jìn)行了仿真,取得了較好的效果。
關(guān)鍵詞 語音端點檢測;短時能量;VerilogHDL
Abstract Based on the speech endpoint detection algorithm, this paper focuses on the principle and implementation of speech endpoint detection algorithm based on short-term average energy and zero-crossing rate, and tests its algorithm. Based on this algorithm, verilogHDL is used to design hardware. Finally, The performance of the algorithm on the hardware design module was simulated and good results were obtained.
Keywords Voice activity detection; Short-term average energy; VerilogHDL
1語音端點檢測背景及其研究現(xiàn)狀
語音端點檢測(voice activity detection)又稱VAD,是指在一段語音中準(zhǔn)確檢測出語音的起止點和終點,這種技術(shù)廣泛應(yīng)用于語音識別和語音增強(qiáng)技術(shù)中,例如在語音識別中,先檢測出端點再進(jìn)行語音識別,這樣不僅能提高識別準(zhǔn)確率,并且可以降低功耗,通常來講,語音端點檢測就是各種語音信號系統(tǒng)研究中的預(yù)處理。
語音端點檢測的發(fā)展歷史最早可以追溯到1950年左右,經(jīng)過幾十年的研究發(fā)展,VAD相關(guān)的算法研究已經(jīng)比較成熟,甚至有相當(dāng)?shù)乃惴ń?jīng)過人們改進(jìn)之后可以設(shè)計為硬件模塊或者IP核,這也提高了VAD檢測的速度,本文將基于一種VAD算法的研究,并且將其硬件設(shè)計實現(xiàn)[1]。
2VAD相關(guān)算法
VAD算法的應(yīng)用基本是處于兩個背景下的,一種是基于中高信噪比的VAD算法,一種是基于低信噪比的VAD算法。
基于短時平均能量及其過零率的VAD算法實現(xiàn)簡單,穩(wěn)定性強(qiáng),是一種經(jīng)典的VAD算法[2];基于頻帶方差法的VAD算法著重研究語音和噪聲在頻譜中的差異特性,效果較好,衍生出來有子帶頻帶方差VAD算法,頻域BARK子帶方差的VAD算法;低信噪比條件的VAD算法處理思想要先進(jìn)行增強(qiáng)處理然后再結(jié)合頻帶方差或者短時能零率進(jìn)行檢測,對于低信噪比的信號處理效果較好,但缺點是算法復(fù)雜,常用算法有譜減法結(jié)合子帶方差法等。
3基于短時平均能量和過零率的VAD算法原理研究
基于短時平均能量和過零率的算法是VAD中最經(jīng)典的算法,其原理是根據(jù)漢語發(fā)音中韻母中有元音,能量較大,而聲母是輔音,其頻率較高,總會在零點經(jīng)過,所以根據(jù)這兩個特點找出聲母和韻母,就可以準(zhǔn)確檢測出語音段[3]。
假如輸入一段采樣率為16KHZ的語音信號為x(n),對語音進(jìn)行歸一化和分幀處理,假設(shè)幀長為framelen,通常為幾百個采樣點,這里設(shè)置為256個采樣點,同時幀移設(shè)為frameinc,長度為64個采樣點,處理后的語音設(shè)為xi(m),其中i表示第i幀,總幀數(shù)設(shè)置為fn語音分幀處理的原因是可以觀察語音的短時特性[4],同時也有利于語音的平滑處理。
經(jīng)過上述處理,計算每幀信號的短時平均能量,設(shè)AMP為每幀信號的短時平均能量,則:
執(zhí)行每幀信號的短時平均能量和過零率計算的函數(shù)如上所示,接下來根據(jù)語音段和非語音短時平均能量和短時過零率的差異特性進(jìn)行檢測即可,整個算法的框架如下:
語音預(yù)處理的目的在于消除信號直流分量,分幀可以更好地觀察信號的短時特性,根據(jù)公式可以求出短時平均能量及其過零率。
對于判決條件中閾值的選擇,我們可以設(shè)置一段前導(dǎo)無話段來提前估算噪聲的能量,然后根據(jù)此段設(shè)置短時平均能量和過零率閾值即可。
如上圖所示為其中一段測試結(jié)果,Speech為帶噪聲語音,Energy為短時平均能量,ZCR為過零率,兩邊紅綠色線截取即為語音段,也就是檢測結(jié)果,可以看出測試結(jié)果正確率較高。該算法對中高信噪比的信號檢測比較有效且算法復(fù)雜度低,易于實現(xiàn),下一節(jié)將以該算法為基礎(chǔ)研究算法的硬件實現(xiàn)。
4VerilogHDL設(shè)計仿真
這一節(jié)主要設(shè)計將matlab實現(xiàn)的算法轉(zhuǎn)化為硬件層面的算法,使用的語言為VerilogHDL硬件描述語言,后期使用的仿真工具為VCS,dump波形工具為Verdi,對于該設(shè)計將采用VCS+Verdi聯(lián)合仿真[5]。
首先對VAD模塊端口簡單設(shè)計,主要有時鐘輸入端口,復(fù)位端口,信號選擇端口,數(shù)據(jù)輸入端口,有效信號端口,還有輸出端口。
整個模塊數(shù)據(jù)采用16KHZ采樣率采樣的信號,數(shù)據(jù)為16bit定點化有符號數(shù)。首先對整個數(shù)據(jù)使用寄存器緩存兩拍,對于verilogHDL實現(xiàn)語音分幀可以采用計數(shù)器,首先256個采樣點為一幀信號,其實是4*64個采樣點組成,可以對計算出的能量進(jìn)行累加,計數(shù)器計數(shù)至64清零,之后重新計數(shù),定義4個寄存器,將累加的64個能量值依次賦值到新定義的寄存器中,四個寄存器的值相加即可得到每幀256個采樣點,幀移為64 的信號處理結(jié)果。
對于短時平均能量的計算,matlab通常可以直接相除,但是在verilogHDL設(shè)計中不建議直接相除,因為這樣會導(dǎo)致仿真驗證后綜合難以完成或者綜合產(chǎn)生的模塊面積或者功耗過大,所以在初步設(shè)計時候,分幀的采樣點和幀移盡量設(shè)置為2的次方,這樣除法可以直接采用移位完成操作,假如不是2的次方,對于除法仍然可以采用移位相加的形式來完成。
對于短時能量的計算,直接相乘即可,對于過零率的計算,采用同步狀態(tài)機(jī)(FSM)設(shè)計,狀態(tài)機(jī)編碼采用二進(jìn)制碼或者格雷碼,狀態(tài)機(jī)的轉(zhuǎn)移圖如圖4.1所示:
短時平均能量和短時過零率計算完成以后可以根據(jù)其前導(dǎo)無話段計算出來的閾值進(jìn)行逐幀判決,判決結(jié)果輸出為0或者1。
設(shè)計完成之后編寫testbench進(jìn)行仿真驗證,采用vcs和verdi聯(lián)合仿真,dump出模塊中的各個情況的輸出波形查看是否符合預(yù)期結(jié)果,經(jīng)過驗證,結(jié)果符合預(yù)期,det為輸出,輸出為1則表示語音段,輸出為0則表示非語音段。
5結(jié)束語
本文以VAD算法為基礎(chǔ),綜述當(dāng)前比較常用的VAD算法,著重研究了短時平均能量以及過零率的算法,并且將其用verilogHDL設(shè)計成為硬件模塊,可以看出,該算法檢測效果較好,但是測試階段顯示該算法在低信噪比條件下性能不佳。
隨著神經(jīng)網(wǎng)絡(luò)[6]的發(fā)展,現(xiàn)在已經(jīng)有比較成熟的神經(jīng)網(wǎng)絡(luò)算法應(yīng)用在了VAD算法上,今后的VAD也肯定向這個方向發(fā)展,希望未來可以有更好的算法應(yīng)用于語音端點檢測上。
參考文獻(xiàn)
[1] 宋知用.MATLAB語音信號分析與合成[M].北京:北京航空航天大學(xué)出版社,2018:118-119.
[2] 汪魯才,曹鵬霞,姜小龍.一種改進(jìn)的含噪語音端點檢測方法[J].計算機(jī)工程與應(yīng)用,2016,52(15):165-167.
[3] 朱明明,吳小培,羅雅琴.基于子帶能量的語音端點檢測算法的研究[J].工業(yè)控制計算機(jī),2013,26(9):44-45.
[4] 韓立華,王博,段淑鳳.語音端點檢測技術(shù)研究進(jìn)展[J].計算機(jī)應(yīng)用研究,2010,27(4):1220-1226.
[5] 蔡覺平,翁靜純,褚潔,馮必先. VerilogHDL數(shù)字集成電路高級程序設(shè)計[M].西安:西安電子科技大學(xué)出版社,2015:346-462.
[6] 張梅.一種基于模糊神經(jīng)網(wǎng)絡(luò)的語音端點檢測方法[J].計算機(jī)工程與應(yīng)用,2012,48(16):133-134.