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