吳樹興
摘要:在語音識別和語音合成中,基頻周期的準(zhǔn)確估計(jì)是一項(xiàng)重要的語音處理環(huán)節(jié)。自相關(guān)函數(shù)法是一種適用于低信噪比下的非常有效的基音周期估計(jì)算法,這種算法需要對信號相關(guān)后的峰值位置進(jìn)行準(zhǔn)確估計(jì)。本文提出了一種峰值點(diǎn)位置判別方法,它可以對時(shí)域語音信號相關(guān)后的峰值點(diǎn)位置進(jìn)行準(zhǔn)確判斷,從而比較準(zhǔn)確地估計(jì)出語音信號的基頻周期,并且復(fù)雜性不高,易于實(shí)現(xiàn)。
關(guān)鍵詞:語音合成;基頻周期;時(shí)域;自相關(guān)函數(shù)法;峰值估計(jì)
中圖分類號:TP247? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)22-0214-03
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
A Time Domain Estimation Algorithm for Speech Signal Pitch Period
WU Shu-xing
(Beijing Information Technology College, Beijing 100015, China)
Abstract: In speech recognition and speech synthesis, accurate estimation of the fundamental frequency period is an important part of speech processing. The autocorrelation function method is a very effective pitch period estimation algorithm suitable for low SNR. This algorithm needs to accurately estimate the peak position after signal correlation. In this paper, a method for judging the peak position is proposed, which can accurately judge the position of the peak point after the correlation of the time domain speech signal, so as to estimate the fundamental frequency period of the speech signal more accurately, and the complexity is not high and easy to implement.
Key words: speech synthesis; fundamental frequency; period time domain; autocorrelation function method; peak estimation
在語音信號處理技術(shù)中,基頻周期的估計(jì)是一個(gè)非常重要的環(huán)節(jié)[1-2]?;魴z測廣泛地應(yīng)用于語音分析合成、語音壓縮編碼、語音識別以及語音分段等方面[3],多年來,研究者們提出了各種基音檢測算法,例如自相關(guān)函數(shù)法(Autocorrelation Functi,ACF)[4]、平均幅度差函數(shù)法(Average Magnitude Difference Function,AMDF)、小波變換法、倒譜法等。通常,基音周期提取方法主要有時(shí)域估計(jì)法和變換域估計(jì)法。
時(shí)域估計(jì)法是直接由語音信號波形來估計(jì)基音周期,很早就得到應(yīng)用,由于其實(shí)現(xiàn)起來比較簡單、運(yùn)算量少應(yīng)用非常廣泛。自相關(guān)函數(shù)法就屬于這種時(shí)域估計(jì)法,比較適合低信噪比情況下的基音周期提取 [5-6]。自相關(guān)函數(shù)法在進(jìn)行基音提取時(shí),需要對峰值位置進(jìn)行估計(jì),當(dāng)峰值位置由于局部極小值導(dǎo)致估計(jì)不準(zhǔn)確時(shí),就會影響其性能。
本文將描述一種峰值點(diǎn)位置估計(jì)方法,它能使峰值點(diǎn)位置的判斷更加準(zhǔn)確,從而比較準(zhǔn)確地估計(jì)出語音信號的基頻周期。
1短時(shí)自相關(guān)函數(shù)法估計(jì)基音周期
自相關(guān)函數(shù)法屬于時(shí)域估計(jì)算法,與其他時(shí)域算法相比,具有較好的抗噪聲干擾的特性,提取到的基音輪廓特征明顯,準(zhǔn)確度較好,實(shí)現(xiàn)簡單,同時(shí)也是語音信號處理領(lǐng)域中使用廣泛的一種算法。
算法的原理是語音信號的自相關(guān)函數(shù)值會在基音周期的整數(shù)倍位置上出現(xiàn)峰值,檢測峰值的位置即可提取出基音周期,如圖1所示。
通過短時(shí)自相關(guān)函數(shù)的計(jì)算公式對每一幀進(jìn)行自相關(guān)計(jì)算,
[acf(τ)=i=0n-1-τs(i)s(i+τ)]? ? ? ? ? ? ?(1)
再通過搜索極值點(diǎn),檢測到峰值的位置,既可估計(jì)出基音周期。
采用自相關(guān)函數(shù)法進(jìn)行基音周期檢測,除了需要采用自相關(guān)模塊進(jìn)行處理外,還需要事先進(jìn)行數(shù)據(jù)采集、分幀、加窗和濾波等信號處理,以便取得更好的效果。
在信號處理中,加窗通常使用矩形窗和漢明窗[7]。選擇窗長時(shí),需要考慮語音信號的基音周期。一般在一個(gè)幀內(nèi)應(yīng)包含個(gè)1-7個(gè)基音周期。在16kHz采樣率下,一般選擇10-20ms為一個(gè)窗長。選擇好窗函數(shù)和窗長后,還要設(shè)定幀移參數(shù),以便讓幀與幀之間平滑過渡,保持連續(xù)性。
由于基音檢測中,搜索峰值會受到各種干擾的影響,導(dǎo)致檢測誤差。因此,在進(jìn)行自相關(guān)計(jì)算之后,使用低通濾波器,將高頻干擾進(jìn)行初步過濾,確保提取到比較準(zhǔn)確的基音周期。
2一種用于基音周期估計(jì)的峰值點(diǎn)檢測算法
采用自相關(guān)函數(shù)法對語音信號的基音周期進(jìn)行估計(jì)時(shí),最重要的一步是準(zhǔn)確地檢測峰值的位置。峰值位置的檢測一般都直接采用搜尋最大值點(diǎn)的方法來實(shí)現(xiàn),這種方法最大的優(yōu)勢是簡單、直觀,但容易陷入局部極值點(diǎn)中,從而影響最終的效果。這里提出一種多截線法進(jìn)行峰值位置的檢測,其基本思想是依據(jù)波形的對稱性,通過對波形的大部分位置進(jìn)行多次截取,間接計(jì)算中值來評估峰值位置,如圖2所示,最上邊的截線與波形相交得到的起始位置A1和結(jié)束位置B1,將A1和B1取中值就是對峰值位置P的估計(jì),同理由中間的截線獲得的A2和B2,下邊的截線獲得的A3和B3,取中值仍然可以得到對峰值位置P的估計(jì),將得到的中值取均值,就可以得到對峰值位置準(zhǔn)確的估計(jì)。由于多截線的濾波作用,這種方法能夠避免誤將局部極值點(diǎn)作為峰值點(diǎn),與直接搜尋峰值點(diǎn)的方法相比,能夠獲得更加準(zhǔn)確的峰值點(diǎn)位置,從而準(zhǔn)確估計(jì)出語音信號的基頻周期。
若實(shí)現(xiàn)這里所提出的多截線法進(jìn)行峰值位置檢測,需要先對當(dāng)前要判別的峰值點(diǎn)所對應(yīng)的周期進(jìn)行粗略估計(jì),假設(shè)估值為T,一般來說,該估計(jì)值是通過新峰值點(diǎn)之前的若干個(gè)已估計(jì)周期來預(yù)測的,因此,該值是不準(zhǔn)確的,不能由它導(dǎo)出峰值點(diǎn)的確切位置,而之前的峰值點(diǎn)已經(jīng)通過這里所介紹的判決方法得到,是已知的和準(zhǔn)確的,進(jìn)而得到的周期也是準(zhǔn)確的。盡管我們不使用評估出的周期直接來估計(jì)峰值點(diǎn),但我們需要使用它來輔助完成峰值點(diǎn)評估過程,在這個(gè)過程中,周期估計(jì)值用來確定評估過程的起止點(diǎn),對正確評估峰值點(diǎn)有著關(guān)鍵作用。在下面的“峰值點(diǎn)評估過程”中的T就是我們這里所提到的周期估值T。
要正確進(jìn)行峰值點(diǎn)位置的判定,我們先來確定峰值點(diǎn)評估過程的開始點(diǎn),我們通常的做法是把峰值點(diǎn)評估過程的結(jié)束點(diǎn)作為下一次峰值點(diǎn)評估過程的開始點(diǎn),首先判斷截線完成計(jì)數(shù)器值是否達(dá)到預(yù)設(shè)值m,如果達(dá)到則搜索過程停止,否則判斷從前一個(gè)峰值點(diǎn)到當(dāng)前讀取的采樣點(diǎn)之間是否達(dá)到了5/4T個(gè)采樣點(diǎn),如果已經(jīng)達(dá)到5/4T個(gè)采樣點(diǎn),則搜索過程停止,評估出新峰值點(diǎn),如果當(dāng)前采樣點(diǎn)已經(jīng)超過新峰值點(diǎn)3/8T,那么將當(dāng)前采樣點(diǎn)作為下一次峰值點(diǎn)評估過程的開始點(diǎn),否則向前推進(jìn)到距離新峰值點(diǎn)3/8T位置作為下一次峰值點(diǎn)評估過程的開始點(diǎn),從該點(diǎn)進(jìn)行下一次峰值點(diǎn)評估過程,這點(diǎn)也是此次峰值點(diǎn)評估過程的結(jié)束點(diǎn)。如圖3所示,圖中的A點(diǎn)到E點(diǎn)之間是5/4T個(gè)采樣點(diǎn),新峰值點(diǎn)C到F點(diǎn)之間是3/8T個(gè)采樣點(diǎn),如果設(shè)定m=4,那么搜索過程將在D點(diǎn)結(jié)束,如果m=5或者m大于5,那么搜索過程將在E點(diǎn)結(jié)束,搜索過程結(jié)束后,如果F點(diǎn)位于D和E的右側(cè)(如圖3所示),那么F點(diǎn)是下一次峰值點(diǎn)評估過程的起點(diǎn)。
評估過程的起點(diǎn)確定好后,就需要通過下面的“峰值點(diǎn)評估過程”來實(shí)現(xiàn),具體操作如下:
(1)開始點(diǎn)的采樣值設(shè)定為閾值A(chǔ)(1),與縱軸交點(diǎn)值A(chǔ)(1),做平行于橫軸的截線1,即y= A(1),與波形相交于M(1)點(diǎn)和N(1)點(diǎn),M(1)點(diǎn)也是開始點(diǎn),位置記錄為ps(1)。并且截線1對應(yīng)計(jì)數(shù)器c(1),c(1)值為1,設(shè)定下一條截線2對應(yīng)的閾值A(chǔ)(2),A(2)=? A(1)+△(1)。如圖4所示。
(2)如果截線完成計(jì)數(shù)器值沒有達(dá)到數(shù)目m并且前一個(gè)峰值點(diǎn)到當(dāng)前采樣點(diǎn)之間沒有達(dá)到5/4T個(gè)采樣點(diǎn),則進(jìn)行第(3)步,否則搜索過程停止,跳到第(5)步。
(3)假設(shè)已經(jīng)做好了第N個(gè)截線,下一個(gè)截線也就是第N+1個(gè)截線對應(yīng)的閾值為A(N+1),A(N+1)=A(N)+△(N)。讀取當(dāng)前采樣點(diǎn)值,如果采樣點(diǎn)值大于等于 A(N+1),與縱軸交點(diǎn)值A(chǔ)(N+1),做平行于橫軸的截線N+1,與波形相交于M(N+1)點(diǎn)和N(N+1)點(diǎn),位置記錄為ps(N+1),并且截線N+1對應(yīng)計(jì)數(shù)器c(N+1),c(N+1)值設(shè)為0,更新下一條截線N+2對應(yīng)的閾值A(chǔ)(N+2),A(N+2)=? A(N+1)+△(N+1),如圖5所示。采樣點(diǎn)值與已有的所有截線進(jìn)行比較,如果采樣點(diǎn)在截線的上方,相應(yīng)截線計(jì)數(shù)器值加1,即c(1),c(2),…,c(N+1)中,只要采樣點(diǎn)在相應(yīng)截線的上方就加1,如圖5,如果采樣點(diǎn)在截線下方并且對應(yīng)截線計(jì)數(shù)器值大于0時(shí),該位置記錄為該截線的結(jié)束點(diǎn),記錄該位置pe(N+1),截線完成計(jì)數(shù)器值加1,并進(jìn)行更新。
(4)重復(fù)步(2)和步(3)。
(5)評估出新峰值點(diǎn),如果當(dāng)前采樣點(diǎn)已經(jīng)超過新峰值點(diǎn)3/8T,那么將當(dāng)前采樣點(diǎn)作為下一次峰值點(diǎn)評估過程的開始點(diǎn),否則向前推進(jìn)到距離新峰值點(diǎn)3/8T位置作為下一次峰值點(diǎn)評估過程的開始點(diǎn),也是此次“峰值點(diǎn)評估過程”的結(jié)束點(diǎn)。
(5)中評估出新峰值點(diǎn),是根據(jù)記錄的截線位置來進(jìn)行計(jì)算的,計(jì)算方法為所有完成的截線起始點(diǎn)位置與結(jié)束點(diǎn)位置求和取均值得到的就是新峰值點(diǎn)位置,如圖6中的ps(4),ps(5),ps(6),ps(7),pe(4),pe(5),pe(6),pe(7),將這8個(gè)值求和取平均值再取整數(shù)即為新峰值點(diǎn)位置,也可以采用其他加權(quán)方法來求得。
在具體實(shí)現(xiàn)過程中,我們可以限定最大截線數(shù)目,將截線循環(huán)使用,以便節(jié)省內(nèi)存資源,但算法復(fù)雜度會有所提高。
當(dāng)然,在進(jìn)行此處的操作之前需要進(jìn)行低通濾波,并且確定出濁音之后來通過該算法進(jìn)行基頻周期估計(jì)。
3算法性能驗(yàn)證
我們采用比較簡單的方法初步對前文所提出的峰值位置檢測算法進(jìn)行了驗(yàn)證。驗(yàn)證是采用單一頻率信號疊加各種參數(shù)白噪聲信號對算法進(jìn)行測試,設(shè)置不同的信噪比,當(dāng)信噪比比較大時(shí),提出的算法與傳統(tǒng)峰值檢測方法相比,兩者沒有明顯差別,但當(dāng)信噪比比較小時(shí),低于10dB,采用新提出的算法進(jìn)行峰值位置估計(jì),會顯著好于普通峰值檢測算法,這說明該算法在抗干擾性能方面由于傳統(tǒng)峰值檢測方法。我們在低信噪比下也對不同截線數(shù)目下該方法的性能進(jìn)行了仿真評估,結(jié)果顯示,性能與截線密集程度有關(guān),太密集和太稀疏都不能獲得良好的性能,各個(gè)截線所得交點(diǎn)的采樣點(diǎn)間隔為3時(shí)性能最好。
4結(jié)束語
本文提出了一種語音信號峰值位置檢測算法,它可以在一定程度上消除干擾,從而獲得對語音信號基頻周期進(jìn)行比較精確的估計(jì)。該算法不僅可以對語音信號進(jìn)行基頻周期估計(jì),也可以對由磁感應(yīng)效應(yīng)得到的信號進(jìn)行周期估計(jì),從而解調(diào)出數(shù)據(jù)。
參考文獻(xiàn):
[1] 劉維巍.語音信號基音周期檢測算法研究[D].哈爾濱:哈爾濱工程大學(xué),2010.
[2] 李坤,劉加. 基于小波變換和線性預(yù)測的基音提取[J]. 計(jì)算機(jī)工程,2010,36(10):276-278.
[3] 趙靜,羅興國,蔡文濤.噪聲環(huán)境下語音信號的基音檢測[J].電聲技術(shù),2007,31(3):54?56.
[4] KRUBSACK D A,NIEDERJOHN R J. An autocorrelation pitch detector and voicing decision with confidence measures developed for noise?corrupted speech [J]. IEEE transactions on signal processing,199,39(2):319?329.
[5] 小利.含噪語音基音周期檢測算法的研究[D].鄭州:解放軍信息工程大學(xué),2007.
[6] 沈曉東.語音增強(qiáng)技術(shù)研究[D].北京:清華大學(xué),2010.
[7] 趙力,語音信號處理[M]北京:機(jī)械工業(yè)出版社,2003.
【通聯(lián)編輯:梁書】