趙 萍
(上海電力學(xué)院計(jì)算機(jī)與信息工程學(xué)院,上海 200090)
基音周期的估計(jì)稱為基音周期檢測(cè),基音周期檢測(cè)的最終目的是得到與聲音振動(dòng)頻率吻合較好的基音周期變化軌跡曲線.在語(yǔ)音信號(hào)的處理中只有準(zhǔn)確捕獲語(yǔ)音信號(hào)參數(shù),才能高效地識(shí)別語(yǔ)音.而在這些語(yǔ)音信號(hào)參數(shù)中,基音周期提取的精確性和效率直接影響到合成語(yǔ)音能否真實(shí)快速地再現(xiàn)原始語(yǔ)音信號(hào).本文在基音周期檢測(cè)一般方法的基礎(chǔ)上,對(duì)自相關(guān)運(yùn)算過(guò)程加以修改,并給出使用該種方法對(duì)兩段語(yǔ)音信號(hào)進(jìn)行基音周期檢測(cè)的結(jié)果.
語(yǔ)音信號(hào)基音周期檢測(cè)的一般處理過(guò)程[1]如圖1所示.
圖1 基音周期檢測(cè)的處理過(guò)程
圖1 中各部分的功能及原理主要有:
(1)帶通濾波模塊 語(yǔ)音信號(hào)包含非常豐富的諧波分量,基音頻率最低可達(dá)80 Hz,最高可達(dá)500 Hz,但基音頻率大多數(shù)分布在100~200 Hz,為了提高檢測(cè)的準(zhǔn)確度,算法中引入了一個(gè)60~500 Hz的帶通濾波模塊濾除語(yǔ)音幀的高次諧波分量;
(2)取樣模塊 從頻率為8 000 Hz的語(yǔ)音信號(hào)中截取Length(樣點(diǎn)數(shù))長(zhǎng)的個(gè)樣點(diǎn)值,一般取樣點(diǎn)數(shù)設(shè)計(jì)成幀長(zhǎng)度的整數(shù)倍;
(3)分幀模塊 主要將語(yǔ)音去樣點(diǎn)分割為若干個(gè)語(yǔ)音幀,語(yǔ)音信號(hào)屬于短時(shí)平穩(wěn)信號(hào),一般認(rèn)為在10~30 ms內(nèi)語(yǔ)音特性基本上是不變的,或者變化緩慢,因此可從中截取一段進(jìn)行頻譜分析,在范例中取一幀信號(hào)的長(zhǎng)度為30 ms,即每幀為240點(diǎn);
(4)短時(shí)能量分析 對(duì)分割好的語(yǔ)音幀信號(hào)進(jìn)行清濁音的判斷,知道濁音變清音的時(shí)刻,提取濁音段;
(5)自相關(guān)分析 計(jì)算濁音段信號(hào)的自相關(guān)函數(shù),根據(jù)自相關(guān)函數(shù)的周期性計(jì)算語(yǔ)音信號(hào)的基音周期.
用8 000 Hz的采樣頻率采集到兩個(gè)人的聲音,經(jīng)過(guò)濾波、取樣、分幀后,進(jìn)行短時(shí)能量分析.短時(shí)能量為:
N——窗長(zhǎng);
h(n)=w(n)2.
算法中采用布萊克曼窗,具體實(shí)現(xiàn)代碼如下:
兩個(gè)語(yǔ)音信號(hào)短時(shí)能量分布如圖2所示.濁音有基音周期,而清音的基音周期為零,因而清濁音判斷是基音周期檢測(cè)的第一步.語(yǔ)音濁音段的短時(shí)平均能量遠(yuǎn)遠(yuǎn)大于清音段的短時(shí)平均能量,因此通過(guò)短時(shí)能量En的計(jì)算可以區(qū)分清音段與濁音段,即En(濁)>En(清).
圖2 語(yǔ)音信號(hào)短時(shí)能量分析
根據(jù)圖2中的曲線變化情況,短時(shí)能量由高到低的跳變可定出濁音變?yōu)榍逡粽Z(yǔ)音的時(shí)刻.濁音段語(yǔ)音信號(hào)1為4 901~5 140(一幀240個(gè)點(diǎn)),語(yǔ)音信號(hào)2為8 001~8 240.
對(duì)于兩個(gè)長(zhǎng)度相同,能量有限的語(yǔ)音信號(hào)自相關(guān)函數(shù)[2]:
自相關(guān)函數(shù)反映了信號(hào)x(n)與其經(jīng)過(guò)一段延遲后的x(n+m)的相似程度.如果序列x(n)具有周期Np,則其自相關(guān)函數(shù)是準(zhǔn)周期函數(shù),周期性變化與x(n)序列相同[3].濁音信號(hào)具有準(zhǔn)周期性,濁音信號(hào)的自相關(guān)函數(shù)在基音周期的整數(shù)倍位置上出現(xiàn)峰值,而清音信號(hào)的自相關(guān)函數(shù)沒(méi)有明顯的峰值.對(duì)于濁音信號(hào),只要檢測(cè)到N的位置,就可以估計(jì)語(yǔ)音信號(hào)的基音周期值.
由于乘法運(yùn)算的工作精度和頻率較低,為了提高運(yùn)算速度,采用1 bit量化的方法將進(jìn)行相關(guān)運(yùn)算的信號(hào)進(jìn)行簡(jiǎn)化[4].這樣,式(2)由兩信號(hào)的乘法運(yùn)算轉(zhuǎn)化為x(m)的加法運(yùn)算.信號(hào)的1 bit量化公式為:
圖3是采用極性相關(guān)算法計(jì)算出來(lái)的基音頻率.由圖3可知,其結(jié)果與直接計(jì)算的結(jié)果相同.實(shí)現(xiàn)方法如下:
x12=y13(4901:5140);%對(duì)語(yǔ)音信號(hào)1的濁音段截取;
圖3 自相關(guān)基音周期檢測(cè)結(jié)果
自相關(guān)函數(shù)是準(zhǔn)周期函數(shù),各個(gè)峰值隨時(shí)間的增加而逐漸變小,因而在自相關(guān)運(yùn)算中可以采用兩次計(jì)算的方法來(lái)進(jìn)一步減少自相關(guān)運(yùn)算的點(diǎn)數(shù),以達(dá)到提高運(yùn)算速度的目的.具體方法如下:
(1)進(jìn)行隔點(diǎn)自相關(guān)運(yùn)算,估計(jì)出峰值大概位置,如峰值位置為T(mén)max;
(2)進(jìn)行精確計(jì)算,使自相關(guān)運(yùn)算的點(diǎn)數(shù)N≥2Tmax-1,以減少誤差.
圖3中,對(duì)聲音1和聲音2若隔點(diǎn)自相關(guān)運(yùn)算時(shí)隔4點(diǎn)進(jìn)行,則其自相關(guān)運(yùn)算的點(diǎn)數(shù)為60;若進(jìn)行精確計(jì)算的點(diǎn)數(shù)分別為101和61,則兩次共進(jìn)行相關(guān)運(yùn)算點(diǎn)數(shù)分別為161和121,計(jì)算的點(diǎn)數(shù)分別減少至原來(lái)的67%和51%.
此外,在搜索峰值的過(guò)程中,由于基音頻率分布在80~500 Hz之間,所以相關(guān)運(yùn)算的峰值在16~100點(diǎn)之間搜索即可.采用以上方法檢測(cè)出聲音1的基音頻率為205.128 2 Hz(周期為4.8 ms),聲音2的基音頻率為307.692 3 Hz(周期為3.25 ms).
本文利用信號(hào)的自相關(guān)運(yùn)算實(shí)現(xiàn)了兩個(gè)語(yǔ)音信號(hào)的基音周期檢測(cè).在檢測(cè)過(guò)程中采用極性相關(guān)和峰值估計(jì)法,一方面可降低相關(guān)計(jì)算中乘法的計(jì)算量,另一方面也降低了進(jìn)行自相關(guān)運(yùn)算的點(diǎn)數(shù),從而提高了基因周期檢測(cè)的效率.這種極性相關(guān)和峰值估算的方法還可應(yīng)用到信號(hào)的互相關(guān)峰值搜索過(guò)程中,使利用互相關(guān)運(yùn)算對(duì)流量和速度等進(jìn)行檢測(cè)的系統(tǒng)具有更好的實(shí)時(shí)性.
[1]付青青,吳愛(ài)平.基于Matlab的語(yǔ)音信號(hào)自相關(guān)基音檢測(cè)[J].長(zhǎng)江大學(xué)學(xué)報(bào),2006,3(4):99-101.
[2]萬(wàn)永革.數(shù)字信號(hào)處理的MATLAB的實(shí)現(xiàn)[M].北京:北京航空航天大學(xué)出版社,2007:65-66.
[3]王秀君,和應(yīng)民,木建一.一種有效的語(yǔ)音基因周期提取算法[J].應(yīng)用科技,2006,33(1):7-9.
[4]徐秉錚,歐陽(yáng)景正.信號(hào)分析與相關(guān)技術(shù)[M].北京:科學(xué)出版社,1981:94-95.