楊 軍,周啟靖,晉宗俊,鄧 莎
(武漢龍安集團(tuán)有限責(zé)任公司,湖北 武漢 430074)
語(yǔ)音信號(hào)檢測(cè)(Voice Acess Detect,VAD)技術(shù),目的是為正確區(qū)分語(yǔ)音與各種背景噪聲。在語(yǔ)音信號(hào)處理和通信等領(lǐng)域,它有著十分重要的意義。本套算法集成了短時(shí)能量、過(guò)零率與短時(shí)平均幅度差(AMDF)檢測(cè)等算法的組合。
短時(shí)分析將語(yǔ)音流分幀處理,為減小語(yǔ)音幀的截?cái)嘈?yīng),需要加窗處理;窗口的形狀和長(zhǎng)度對(duì)分析影響很大,不同的分析方法對(duì)窗函數(shù)的要求不盡一樣;可分為矩形窗、漢明窗和漢寧窗等。
通常認(rèn)為一個(gè)語(yǔ)音幀內(nèi)含有1~7個(gè)基調(diào)周期比較理想,但人的語(yǔ)音的基調(diào)周期值是變化的,從女性和兒童2ms到老年男子的14ms(即基調(diào)頻率為500Hz~70Hz),所以N的選擇是比較困難的,折衷的選擇N為100~300點(diǎn)比較合適。
一段短語(yǔ)音信號(hào)的能量稱為短時(shí)能量,第n段的短時(shí)能量由En表示,它等于該短段語(yǔ)音取樣的平方和,設(shè)第n幀語(yǔ)音信號(hào)xn(m)的短時(shí)能量用En表示,則其計(jì)算公式如下:

算法中使用短時(shí)能量的主要目的是:去除背景語(yǔ)音對(duì)VAD效果的影響,去除幅度較小的噪聲對(duì)VAD效果的影響。
過(guò)零表示信號(hào)通過(guò)零值,過(guò)零率即每秒內(nèi)信號(hào)值通過(guò)零值的次數(shù)。對(duì)于離散時(shí)間序列,過(guò)零則是指序列取樣值改變符號(hào),過(guò)零率則是每個(gè)樣本改變符號(hào)的次數(shù)。對(duì)于語(yǔ)音信號(hào),則是指在一幀語(yǔ)音中語(yǔ)音信號(hào)波形穿過(guò)橫軸(零電平)的次數(shù),可以用相鄰2個(gè)取樣改變符號(hào)的次數(shù)來(lái)計(jì)算。
對(duì)于完全的周期信號(hào),則相距為周期的整數(shù)倍的采樣點(diǎn)上幅值相等,差值為0。實(shí)際的語(yǔ)音信號(hào)是一個(gè)準(zhǔn)周期信號(hào),差值不為0,但很小,這些極小值將出現(xiàn)在整數(shù)倍周期的位置上。定義短時(shí)平均幅度差函數(shù):

AMDF函數(shù)在濁音基音周期上出現(xiàn)極小值,在清音語(yǔ)音時(shí)無(wú)明顯極小值。在此基礎(chǔ)上,為避免由于信號(hào)強(qiáng)弱帶來(lái)的誤差,需要對(duì)AMDF函數(shù)進(jìn)行歸一化處理。
語(yǔ)音信號(hào)是一種時(shí)變的、非平穩(wěn)的隨機(jī)過(guò)程,從整體來(lái)看其特征及表征其本質(zhì)特征的參數(shù)均是隨時(shí)間變化的。但是,語(yǔ)音的形成過(guò)程與發(fā)聲器官的運(yùn)動(dòng)密切相關(guān),這種物理運(yùn)動(dòng)比起聲音振動(dòng)速度來(lái)要緩慢得多,因此語(yǔ)音信號(hào)可以認(rèn)為在一個(gè)較短的時(shí)間段內(nèi)是平穩(wěn)的,即具有短時(shí)平穩(wěn)性。
根據(jù)語(yǔ)音信號(hào)的這一特點(diǎn),結(jié)合所采用的算法的需要,語(yǔ)音幀的長(zhǎng)度定為16ms,下文將詳細(xì)介紹算法的實(shí)現(xiàn)。
①短時(shí)能量檢測(cè)函數(shù):power_proc(),輸入?yún)?shù)為存放采集一幀數(shù)據(jù)的地址,算法流程圖如圖1所示。

圖1 短時(shí)能量算法流程圖
②短時(shí)過(guò)零率函數(shù):zero_proc(),輸入?yún)?shù)為存放采集一幀數(shù)據(jù)的地址,算法流程圖如圖2所示。

圖2 短時(shí)過(guò)零率算法流程圖
③短時(shí)平均幅度差函數(shù):amdf_proc(),輸入?yún)?shù)為存放采集一幀數(shù)據(jù)的地址。其中D(N)存放的是不同Z(基音周期)得到的幅度差,算法流程圖如圖3所示。
語(yǔ)音檢測(cè)時(shí),為保證檢測(cè)的準(zhǔn)確性,連續(xù)10幀檢測(cè)有效時(shí)才認(rèn)為確實(shí)有語(yǔ)音,連續(xù)20幀檢測(cè)無(wú)效時(shí)才認(rèn)為確實(shí)無(wú)語(yǔ)音。為了滿足多幀檢測(cè)需求,又不至于出現(xiàn)掉字情況,同時(shí)還要保證檢測(cè)信號(hào)和語(yǔ)音信號(hào)的同步性,設(shè)計(jì)了一個(gè)環(huán)形緩沖區(qū),模擬語(yǔ)音通道1和通道2各有一個(gè)對(duì)應(yīng)的環(huán)形緩沖區(qū)delay1和delay2,每一個(gè)環(huán)形緩沖區(qū)都有3個(gè)指針:接收指針、處理指針和發(fā)送指針,分別供DMA通道0中斷服務(wù)程序、短時(shí)能量子函數(shù)和短時(shí)平均幅度差子函數(shù)、DMA通道1中斷服務(wù)程序使用。

圖3 短時(shí)平均幅度差算法流程圖
系統(tǒng)的硬件實(shí)現(xiàn),核心器件為TI公司的低端DSP芯片TMS320VC5402(以下簡(jiǎn)稱C5402),片內(nèi)DARAM僅有16Kbyte,地址有效范圍0x0080H~0x3FFFH,其中配置地址有效范圍為0x0000H~0x005FH。
除算法外,在具體研制過(guò)程中遇到了雙通道A/D采樣時(shí)通道無(wú)法有效控制、擴(kuò)展片外RAM后程序不能正常加載、系統(tǒng)因負(fù)荷過(guò)大不能正確啟動(dòng)等難題,通過(guò)長(zhǎng)期的探索和嘗試,這些問(wèn)題都得到了妥善的解決,并掌握了實(shí)現(xiàn)2路A/D同時(shí)采樣的狀態(tài)控制字配置方法,為算法的實(shí)施打下了堅(jiān)實(shí)的基礎(chǔ)。大致的配置方法如下:
①所有保留位控制字,采用缺省設(shè)置;
②接收寄存器接收幀長(zhǎng)度設(shè)置成每幀1個(gè)字;
③接收寄存器接收字長(zhǎng)度設(shè)置成32位;
④發(fā)送寄存器發(fā)送幀長(zhǎng)度設(shè)置成每幀1個(gè)字;
⑤發(fā)送寄存器發(fā)送字長(zhǎng)度設(shè)置成32位。
McBSP0引腳控制寄存器配置如下:
①DX等引腳設(shè)置為串口;
②DR等引腳設(shè)置為串口;
③幀同步發(fā)送位設(shè)置成內(nèi)部發(fā)送模式;
④幀同步接收位設(shè)置成外部發(fā)送模式;
⑤時(shí)鐘發(fā)送位設(shè)置成外部發(fā)送模式;
⑥時(shí)鐘接收位設(shè)置成內(nèi)部發(fā)送模式;
⑦幀同步發(fā)送設(shè)置高電平有效;
⑧幀同步接收設(shè)置高電平有效;
⑨發(fā)送時(shí)鐘設(shè)置成為上升沿觸發(fā);
⑩接收時(shí)鐘設(shè)置成為上升沿觸發(fā)。
McBSP1引腳控制寄存器相關(guān)配置與McBSP0相似,額外配置如下:發(fā)送時(shí)鐘設(shè)置為內(nèi)部模式;接收時(shí)鐘設(shè)置為外部模式;發(fā)送時(shí)鐘設(shè)置為下降沿觸發(fā)。
提出了采用平均幅度、過(guò)零率和短時(shí)能量等系列算法進(jìn)行語(yǔ)音處理的原理及具體實(shí)現(xiàn)方法,并介紹了承載該算法的硬件組成,該套語(yǔ)音處理模塊基于低端的DSP處理芯片,綜合考慮了性能價(jià)格比,在實(shí)現(xiàn)所有功能及性能的前提下,最大程度地節(jié)省了成本,提高了產(chǎn)品的市場(chǎng)競(jìng)爭(zhēng)力,核心算法的實(shí)現(xiàn),凝聚了團(tuán)隊(duì)的心血,在行業(yè)內(nèi)處于領(lǐng)先地位。實(shí)踐證明該語(yǔ)音處理模塊硬件小巧,語(yǔ)音質(zhì)量好,易于實(shí)現(xiàn),性價(jià)比較高,可推廣至各類需要語(yǔ)音處理的通信產(chǎn)品中。
[1]蔡蓮紅,黃德智,蔡銳.現(xiàn)代語(yǔ)音技術(shù)基礎(chǔ)與應(yīng)用[M].北京:清華大學(xué)出版社,2003.
[2]趙力.語(yǔ)音信號(hào)處理[M].北京:機(jī)械工業(yè)出版社,2003.
[3]劉慶升,徐宵鵬,黃文浩.一種語(yǔ)音端點(diǎn)檢測(cè)方法的探究[J].計(jì)算機(jī)工程,2003(2):1-10.
[4]鄭建華,黃漢明,鐘明輝,等.幾種語(yǔ)音信號(hào)端點(diǎn)檢測(cè)方法的比較研究[J].廣西師范大學(xué)物理與電子工程學(xué)院,2007(4):10-14.