鄒力子, 劉 林
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 610031)
隨著互聯(lián)網(wǎng)技術(shù)的快步發(fā)展,在互聯(lián)網(wǎng)上傳播的數(shù)據(jù)類型逐漸增多。視頻會議系統(tǒng)應(yīng)運(yùn)而生。人類的溝通和交流,主要采用聽和說兩種方式,語音的傳輸成為衡量視頻會議系統(tǒng)性能最重要的一項指標(biāo)。因此,對視頻會議系統(tǒng)中的混音算法進(jìn)行研究具有重要意義。
終端對語音信號的處理必須解決的問題是多路的語音數(shù)據(jù)怎樣在本地進(jìn)行混合以及播放。它會受到自身同步,延時,與視頻同步等多方面影響。在實際的應(yīng)用中,語音經(jīng)混合后對聲卡緩沖區(qū)的溢出是其最大的問題。
這里介紹一種混音結(jié)構(gòu),及新型改進(jìn)的混音算法。在混音的質(zhì)量、效率、溢出率、時延及擴(kuò)展性方面和現(xiàn)有的混音算法進(jìn)行了比較。實驗結(jié)果表明,該算法結(jié)合了人類語音的特性,根據(jù)不同場景的需求,在抑制混音溢出的同時,提高混音的質(zhì)量,降低時延,具有很好的實用潛力。
聲音是由物體振動所產(chǎn)生的一種壓力波。響度、音調(diào)和音色是聲音的三個主要特征。在自然界中,人耳聽見的語音則是來自四面八方聲音的疊加。對于視頻會議系統(tǒng)來說,需要將來自各處的語音數(shù)據(jù)在時域進(jìn)行混合。語音信號的抽樣及量化都放在了聲卡芯片上。常用的聲卡為 16位,量化精度多為16 bit。在眾多操作系統(tǒng)如Linux中,聲卡緩沖區(qū)的數(shù)據(jù)類型通常為signed short,范圍在-32768~32767。多路混音后,幅值有可能超出聲卡可接受的范圍而造成聲音的失真。以下是幾種常見的解決辦法[1]。
(1)直接箝位法
當(dāng)混合后語音強(qiáng)度超出緩沖區(qū)數(shù)據(jù)類型范圍時,以最大幅值來替代。這樣直接箝位會造成語音波形的人為削峰,在破壞語音信號特性的同時會促使噪音的產(chǎn)生。
(2)均值化混音
均值化混音在將各路語音進(jìn)行疊加之后,并除以混音的路數(shù)來保證混音后不溢出。但隨著混音路數(shù)的增加,在多個混音源不在同一時間發(fā)聲的情景時,來自任一方的語音信號將被多路均分,造成音量較小而不能辨識。
(3)對齊混音
可以說是均值混音的變型,這里主要分為強(qiáng)對齊和弱對齊。在強(qiáng)對齊中,對聲強(qiáng)較大的混音路給予較大的混音權(quán)重,原話音較大的語音路得到增強(qiáng),缺點是淹沒了話音較小的語音。弱對齊對聲強(qiáng)較小的混音路給予較大的混音權(quán)重。這樣音量較小的混音路話音得到放大,缺點是同時也放大了背景噪音。
以上算法雖然簡單,但都存在溢出檢測及混音質(zhì)量方面的問題。下面介紹一種新型改進(jìn)的混音方案及算法。
在基于SIP的視頻會議系統(tǒng)中,根據(jù)信令分發(fā)和媒體混合的不同,有多樣的構(gòu)成方式[2]。就媒體流混合方式來說,有集中式混合與終端混合之分[3]。
這里設(shè)計如圖1的分布式混音模型,相比集中式混音,服務(wù)器端不進(jìn)行媒體流的處理,而只執(zhí)行會議系統(tǒng)的管理策略。終端接到分發(fā)過來的語音數(shù)據(jù),進(jìn)行解碼處理后,即開始混音。這種模式不混入終端自身出發(fā)的語音包,不受回聲的影響。綜合來看,這樣的混音系統(tǒng)復(fù)雜度適中,可減輕會議服務(wù)器的壓力。延時較集中式混音也有減少,對于實時應(yīng)用的系統(tǒng)來說,性能的提升很大。
圖1 分布式混音模型
這里設(shè)計為面向中小企業(yè)及學(xué)校教學(xué)用視頻會議系統(tǒng),參與人數(shù)在5人以下。會議參與者共同發(fā)聲的可能性較小,強(qiáng)烈溢出的幾率也比較小。因為語音信號具有短時的相關(guān)性,時間通常在10 ms到30 ms,即這里所說的一個幀。這里在設(shè)計混音算法時兼顧溢出及平滑處理,并且以語音幀為單位,算法流程如下:
①初始化衰減因子f_see為1;
②統(tǒng)計一幀數(shù)據(jù)內(nèi)的信息,包括最大峰值的絕對值,一幀內(nèi)的短時能量及過零率;
③將最大絕對峰值與16 bit數(shù)據(jù)寬度做比較,判斷是否溢出。如果溢出,求出合適的衰減因子并更新(f_see=MaX/sos,Max為最大幅值絕對值,sos為最大絕對峰值與前一幀衰減因子的乘積),并用最新的衰減因子與本幀數(shù)據(jù)相乘,輸出到聲卡緩沖;
④如果沒有溢出,則根據(jù)短時能量和過零率的計算來動態(tài)改變衰減因子。并用最新的衰減因子來輸出本幀數(shù)據(jù)到聲卡緩沖;
⑤讀取下一幀,再次執(zhí)行第2步。
當(dāng)幀長選擇為10 ms時,1 s內(nèi)有100幀,每幀包含80個樣本。第二步中短時能量的計算公式如公式(1)。
對溢出的判定,文獻(xiàn)[4]中所采用的衰減因子法,對每幀的每個樣本和衰減因子相乘。在常用的定點處理器中,較多的乘除法將會大量消耗 CPU的資源,帶來時延。隨意更改樣本間相對大小會導(dǎo)致混合后語音的失真。這里設(shè)計按幀對語音信號進(jìn)行時域平滑處理,它不會改變語音的內(nèi)容。通過平滑處理,一幀的語音信息按照比例縮小,語音特征參數(shù)(如共振峰及基音周期等)的大小不會改變,語音信號的波形和音色也不會改變[5]。
在樣本溢出并進(jìn)行衰減處理后,需要一個機(jī)制來進(jìn)行有效補(bǔ)償。這里對首先衰減因子進(jìn)行歸一化處理,將衰減因子f_see映射成 320等分進(jìn)行運(yùn)算,用整型量 ppp來表達(dá),即f_see=ppp/320,ppp為320與f_see相乘后取整。由于在語音編解碼上采用了G.711協(xié)議,A律壓擴(kuò),增強(qiáng)對小信號的量化精度,對小信號的調(diào)節(jié)較為豐富[6]。這里設(shè)置ppp的增減上下限為160到320。在長期混音的過程中,使語音處于小信號敏感的部位,避開粗糙的大信號,調(diào)節(jié)至人耳舒適的范圍。
歸一化的衰減因子 ppp的增減依據(jù)語音信號過零率的判斷,以及相鄰兩幀短時能量的比較。在第4步進(jìn)行動態(tài)衰減因子的計算時,參考第2步對語音人聲的短時能量及過零率的檢測。根據(jù)文獻(xiàn)[7]中的經(jīng)驗值,取10 ms幀的語音過零率閾值為4。當(dāng)實際檢測的過零率在4以上時,粗略判定其為語音信號幀,之后對相鄰語音信號幀進(jìn)行短時能量的比較,當(dāng)語音的短時能量縮小時逐步增大衰減因子,當(dāng)語音的短時能量增大時逐步縮小衰減因子。這種對衰減因子的動態(tài)恢復(fù),將增強(qiáng)混音后信號的收斂性及健壯性。
為了對比改進(jìn)的混音算法的性能,將寫好的混音算法放在視頻會議系統(tǒng)實際運(yùn)行的嵌入式環(huán)境下來測試。該款處理器為TI公司的DaVinci系列片上系統(tǒng)DM6446-594異構(gòu)雙核處理器。其中混音算法放在 ARM 端運(yùn)行,該 ARM 核為ARM9系列,運(yùn)行頻率為297M。這里共采集3路語音,一路為純背景噪音,一路為人聲,聲強(qiáng)靠近溢出位置,另一路為人聲,聲強(qiáng)適中。兩路人聲均采用較難區(qū)分的男聲。測試結(jié)果如圖2、圖3和圖4所示。
圖2 單純衰減
圖3 定步長單增衰減因子
圖4 動態(tài)更新衰減因子
由混音后時域波形圖可見,圖2為采用單純溢出衰減算法的混音過程。隨著混音過程的推進(jìn)音量逐漸減小。當(dāng)某一刻出現(xiàn)混音高峰時,造成極小的衰減因子,音量變得很小而不可恢復(fù)。圖 3為參考文獻(xiàn)[5]中采用的定步長單增恢復(fù)衰減因子的方法,這種混音方式會使得音量一直維持在最大值附近,聲音刺耳,噪音強(qiáng)烈。它增加了下次混音的溢出幾率,增加了溢出檢測和新的衰減因子計算,消耗資源,帶來時延。圖4為這里改進(jìn)的算法,采用按幀衰減,區(qū)別于文獻(xiàn)[5]的按樣本處理,減少了定點處理器的乘除法操作,提升了計算性能。其衰減因子采用歸一化細(xì)分,并設(shè)置上下限。采用短時能量及過零率來對人聲識別并動態(tài)更新衰減因子。該混音效果聽起來平滑,噪音很小、無爆破音,混音后完全沒有溢出現(xiàn)象發(fā)生。
這里提出了按語音信號特征,以語音幀為單位的衰減因子法解決混音溢出問題,在算法上進(jìn)行改進(jìn),提升了溢出處理的性能。并且提出了用短時能量及短時過零率來對人聲語音進(jìn)行粗檢測及衰減后的補(bǔ)償恢復(fù),提升了混音質(zhì)量。用戶可依據(jù)網(wǎng)絡(luò)環(huán)境對兩種算法進(jìn)行搭配選擇。通過在定點處理器 ARM9上的實現(xiàn)以及結(jié)果分析證明,該算法的性能及效果較好。
[1]王文林,廖建新,朱曉明,等.多媒體會議中新型快速實時混音算法[J]. 電子與信息學(xué)報,2007,29(03):690-695.
[2]IETF RFC 4353-2006. A Framework for Conferencing with the Session Initiation Protocol[S].
[3]IETF RFC 4245-2005. High-Level Requirements for Tightly Coupled SIP Conferencing[S].
[4]張微,毛敏. 多方電話會議系統(tǒng)中混音溢出問題的一種改進(jìn)算法[J].電子器件, 2007,30(01):294-296.
[5]周敬利,馬志龍,范曄斌,等. 一種新的多媒體會議實時混音方案[J].小型微型計算機(jī)系統(tǒng),2009,30(01):169-172.
[6]ITU-T Recommendation G.711-1988. Pulse Code Modulation of Voice Frequencies[S].
[7]劉波,聶明新,向俊濤. 基于短時能量和過零率分析的語音端點檢測方法研究[EB/OL].(2007-02-01)[2010-07-01].http://www.paper.edu.cn/.