陳鳳偉,陳 光,陶 翠,靳 超
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)
近年來(lái),隨著信號(hào)處理算法、網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化、硬件處理能力方面的不斷發(fā)展,多媒體語(yǔ)音通信已經(jīng)迅速普及。多方音頻電話會(huì)議產(chǎn)品是多媒體通信系統(tǒng)的基本模塊,作為有多個(gè)終端參與的音頻電話會(huì)議,可以采取令牌控制或輪詢(xún)控制下的互斥模式,即只有擁有發(fā)言權(quán)的那個(gè)與會(huì)者才可以講話,這樣每個(gè)與會(huì)者某一時(shí)刻只能聽(tīng)到一路音頻信號(hào),顯然這種半雙工情況是不方便和不實(shí)用的。更多的時(shí)候,需要采用自由參與的討論方式,為了能夠在每個(gè)終端同時(shí)接收多個(gè)與會(huì)者的聲音,必須采取多路音頻混音與交換技術(shù),而音頻混音算法則是其中的關(guān)鍵技術(shù)[1-2]。隨著DSP技術(shù)的不斷發(fā)展和進(jìn)步,由于其具有容量大、成本低、升級(jí)靈活等優(yōu)點(diǎn),采用通用DSP實(shí)現(xiàn)多方電話會(huì)議的混音,逐漸成為首選方案。
聲音是由于物體振動(dòng)對(duì)周?chē)目諝猱a(chǎn)生壓力而傳播的一種壓力波,轉(zhuǎn)換成電信號(hào)后,再經(jīng)過(guò)抽樣、量化,量化后的語(yǔ)音信號(hào)的頻率與聲音的頻率對(duì)應(yīng),振幅與聲音的音量對(duì)應(yīng),所以當(dāng)各信號(hào)的抽樣頻率一致時(shí),混音可以實(shí)現(xiàn)將各信號(hào)的采樣數(shù)據(jù)進(jìn)行線性疊加[1]。在時(shí)域上,語(yǔ)音是短時(shí)平穩(wěn)信號(hào),對(duì)語(yǔ)音信號(hào)進(jìn)行處理的一個(gè)基本概念就是對(duì)語(yǔ)音樣本以緩沖區(qū)為單位處理,即對(duì)輸入的語(yǔ)音樣本分幀。當(dāng)多個(gè)音頻同時(shí)播放時(shí),人耳聽(tīng)到的聲波就是各個(gè)聲源的波形的線性疊加,這正是模擬混音的基礎(chǔ)。這個(gè)事實(shí)說(shuō)明數(shù)字音頻的混合也應(yīng)該是音頻的線性疊加。而線性相加又可能產(chǎn)生溢出,溢出現(xiàn)象是由于受到語(yǔ)音數(shù)據(jù)表示精度(8 bit或16 bit)的限制而產(chǎn)生的,而精度是由相應(yīng)編碼器的硬件特性所決定的。對(duì)溢出的語(yǔ)音波形進(jìn)行平滑處理不會(huì)改變語(yǔ)音的音質(zhì)和內(nèi)容,因?yàn)檎Z(yǔ)音信號(hào)具有短時(shí)相關(guān)性(10~30 ms)[3]。
現(xiàn)有混音算法的方案有很多,但是基本思想都是一致的。混合算法的基本思想是:首先將解碼后的多路語(yǔ)音數(shù)據(jù)進(jìn)行線性疊加,然后對(duì)疊加后的語(yǔ)音數(shù)據(jù)進(jìn)行溢出檢查,并對(duì)含有溢出數(shù)據(jù)的混合語(yǔ)音包的語(yǔ)音樣本進(jìn)行濾波處理,采用平滑技術(shù)消除疊加溢出所引入的噪聲[4]。具體的說(shuō),混音算法主要完成以下功能:
(1)線性疊加
若有N路音頻數(shù)據(jù)需要進(jìn)行混音處理,混音的時(shí)候,需要屏蔽某一路自己的本地音頻數(shù)據(jù),這樣就不會(huì)聽(tīng)到本地的自己的聲音,只能聽(tīng)到其他N-1路的聲音,也就是說(shuō),對(duì)于第t路音頻,要發(fā)送給這個(gè)終端t的混音后的數(shù)據(jù)如公式(1)所示:
其中mixing[i]為混合后一幀中的第i個(gè)樣本,input[j, i]為j個(gè)用戶幀的第i個(gè)樣本,n為一幀的樣本數(shù)目,N為會(huì)議的與會(huì)者個(gè)數(shù)[3-4]。
(2)溢出判斷與平滑處理
將混音后的話音數(shù)據(jù)與硬件設(shè)備允許的極限范圍的最大與最小值相比較,若存在超出此范圍的數(shù)據(jù),表示該混合語(yǔ)音包有溢出,則需要進(jìn)行平滑處理來(lái)消除因溢出所引入的噪聲?,F(xiàn)有的混音算法如均值混音算法、對(duì)齊混音算法、箝位混音算法等都是根據(jù)選擇不同的權(quán)重來(lái)防止輸出的結(jié)果發(fā)生溢出,但是這些現(xiàn)有的混音算法都有其不可避免的缺點(diǎn)[1]。其中,均值算法的權(quán)重是將采樣數(shù)據(jù)線性疊加后取平均值,但是隨著混音的路數(shù)的增加,各路語(yǔ)音的衰減將愈加嚴(yán)重,最終導(dǎo)致語(yǔ)音細(xì)不可聞。對(duì)齊算法的權(quán)重是各路音頻流中當(dāng)前幀中采樣值的最大值與累加結(jié)果中采樣值的絕對(duì)值的最大值的比值,但是這種算法沒(méi)有考慮到累加結(jié)果的絕對(duì)值可能超出硬件所允許的極限范圍,從而導(dǎo)致溢出[1,5]。箝位算法實(shí)現(xiàn)簡(jiǎn)單,當(dāng)發(fā)生上溢時(shí),箝位以后的值為其所能表示的最大值,當(dāng)發(fā)生下溢時(shí),箝位后的值為其所能表示的最小值,如式(2)所示:
但是,如果在混音路數(shù)較多時(shí),溢出的概率就會(huì)較大,隨著混音路數(shù)的增多,導(dǎo)致音量的變化十分明顯,此算法適用于小規(guī)模、混音路數(shù)變化不大的會(huì)議中?,F(xiàn)在很多現(xiàn)有的論文和系統(tǒng)都是采用箝位方法,因?yàn)閷?shí)現(xiàn)簡(jiǎn)單,快速,效率很高。但是可以看出,這種箝位方法相當(dāng)于在最大和最小的臨界處切了一刀,非常生硬,會(huì)造成較大的波形失真,引入了噪聲[3]。
通過(guò)對(duì)現(xiàn)有混音算法的分析可以看出,變化的混音權(quán)重是導(dǎo)致混音后音量不穩(wěn)的主要原因,在此基礎(chǔ)上,這里提出了一種采用與混音輸入路數(shù)無(wú)關(guān)的恒定混音權(quán)重的混音算法。
算法的基本思想是:先將所有與會(huì)者的語(yǔ)音信號(hào)進(jìn)行混合,變成一路混音信號(hào);再用混音信號(hào)與所對(duì)應(yīng)用戶的語(yǔ)音信號(hào)分別相減,得到除該用戶自己以外的所有其他用戶的混音信號(hào),然后將此混音信號(hào)轉(zhuǎn)發(fā)給該用戶,這樣就實(shí)現(xiàn)了所有參會(huì)者之間的語(yǔ)音交換。假設(shè)某一多方會(huì)議系統(tǒng)有k個(gè)與會(huì)者,即有k路音頻輸入,一般地,定義第i路輸入為 input(i),其在所有路的輸入中對(duì)應(yīng)的權(quán)重為 w(i),這樣經(jīng)過(guò)混音后,總的輸出output如下式(3)所示:
第 i個(gè)與會(huì)者所能接收到其他與會(huì)者的音頻輸出輸出output(i)如式(4)所示:
點(diǎn)混音時(shí)的高性能、高實(shí)時(shí)性,同時(shí)也保證了參與混音的各路輸入的時(shí)域細(xì)節(jié)特征,因此具有很好的聽(tīng)覺(jué)舒適感和連續(xù)感[1,6]。
選擇通用的16 bit定點(diǎn)DSP TMS320VC5402來(lái)完成多路音頻流的混音,最多可以實(shí)現(xiàn) 64路音頻流的混音。由于該算法的數(shù)據(jù)來(lái)自ST-BUS鏈路送來(lái)的某一用戶時(shí)隙的8 bit A律PCM話音數(shù)據(jù),因此需要先將其變?yōu)榫€性碼,然后才能進(jìn)行混音,DSP輸出時(shí)再變回A律的PCM碼流發(fā)送出去。DSP數(shù)據(jù)處理流程圖如圖1所示。
圖1 DSP處理數(shù)據(jù)流程
基本原理是 DSP同時(shí)啟動(dòng) McBSP的收發(fā)端口,當(dāng)McBSP的接收端口收到ST-BUS鏈路送來(lái)的第M幀對(duì)應(yīng)于某一用戶時(shí)隙的8 bitA律PCM話音數(shù)據(jù)后,然后在線性碼的右端補(bǔ)上 3 bit的 0送給接收寄存器 DRR1,這是因?yàn)門(mén)MS320VC5410是16位的,只能對(duì)片上RAM按16 bit訪問(wèn),線性碼轉(zhuǎn)換完后McBSP通知分配給它的接收DMA控制器,此時(shí),DRR1的數(shù)據(jù)已就緒,接收DMA控制器立即將此16 bit數(shù)據(jù)按照其對(duì)應(yīng)的地址寫(xiě)入接收緩沖區(qū)中。在配置DMA時(shí),在分配給它的數(shù)據(jù)緩沖區(qū)達(dá)到半滿和全滿時(shí),向 DSP內(nèi)的CPU發(fā)送中斷,因此DMA接收完第M幀話音數(shù)據(jù)后向CPU發(fā)送中斷。當(dāng)CPU收到DMA中斷時(shí),表明DMA已經(jīng)接收到了第M幀所有時(shí)隙的數(shù)據(jù),CPU在第M+1幀的期間依據(jù)這里提出的算法對(duì)接收到的數(shù)據(jù)進(jìn)行處理,然后在第 M+2幀時(shí)發(fā)送DMA控制器從它的數(shù)據(jù)緩沖區(qū)內(nèi)依次讀出相應(yīng)的數(shù)據(jù)送給 McBSP的發(fā)送端口,發(fā)送端口首先將此線性碼語(yǔ)音數(shù)據(jù)轉(zhuǎn)成A律語(yǔ)音數(shù)據(jù),然后完成PCM話音數(shù)據(jù)發(fā)送[6-7]。
現(xiàn)對(duì)這種算法進(jìn)行了實(shí)際試驗(yàn),圖2為1路解碼后的語(yǔ)音輸入,圖3為另一路解碼后的語(yǔ)音輸入,圖3為采用這里提出的混音算法得出的1路混音輸出。
根據(jù)與現(xiàn)有的混音算法比較,混音后的音頻流自然、連續(xù),也沒(méi)有溢出所導(dǎo)致的爆破噪聲,在測(cè)試中,隨著混音音頻流的增加,改進(jìn)的混音算法的性能改善也越發(fā)明顯,說(shuō)明該混音方案完全可以適用于人數(shù)較多的混音環(huán)境。
圖2 解碼后的語(yǔ)音輸入1
圖3 解碼后的語(yǔ)音輸入2
圖4 改進(jìn)混音算法的輸出
這里所提出的算法,采用了與混音路數(shù)無(wú)關(guān)的恒定的混音權(quán)重,混音效果理想,并且不會(huì)發(fā)生溢出現(xiàn)象,通過(guò)用DSP實(shí)現(xiàn)驗(yàn)證,混音后語(yǔ)音自然流暢,沒(méi)有噪音,具有良好的主觀聽(tīng)覺(jué)感受,而且該算法簡(jiǎn)單、實(shí)時(shí)、快速,能夠滿足多方會(huì)議中高性能、高并發(fā)的混音要求,能支持大規(guī)模的混音應(yīng)用,容易采用硬件實(shí)現(xiàn)。這種混音方案不僅能夠滿足一般應(yīng)用場(chǎng)合的實(shí)際要求,而且在具有高并發(fā)量要求的混音時(shí)應(yīng)用該算法也能獲得高質(zhì)量的實(shí)時(shí)混音結(jié)果。它不僅保證了在多路混音時(shí)的高性能,而且具有很高的實(shí)時(shí)性。
[1] 王文林,廖建新,朱曉民,沈奇威.多媒體會(huì)議中新型快速實(shí)時(shí)混音算法[J].電子與信息學(xué)報(bào), 2007,29(03):90-695.
[2] 王崇,周淵平,王維果.基于DSP的語(yǔ)音時(shí)延估計(jì)實(shí)現(xiàn)[J].通信技術(shù),2010,43(11):61-63.
[3] 張微,毛敏.多方電話會(huì)議系統(tǒng)中混音溢出問(wèn)題的一種改進(jìn)算法[J].電子器件,2007,30(01):294-296.
[4] 趙代強(qiáng).基于數(shù)字語(yǔ)音交換技術(shù)的多方會(huì)議系統(tǒng)[J].網(wǎng)絡(luò)與通信,2004,30(13):87-88.
[5] 熊堃,陳向東,葛林,等.針對(duì)無(wú)線語(yǔ)音通信的G.729算法的改進(jìn)及DSP實(shí)現(xiàn)[J].通信技術(shù),2010,43(06):219-223.
[6] FAN Xing, GU Weikang, YE Xiuqing.Research on Fast Real-time Adaptive Audio Mixing in Multimedia Conference[J].Journal of Zhejiang University-Science A.2005,6(06): 507-512.
[7] 張玉業(yè),鄧勇全,李玲遠(yuǎn).語(yǔ)音編解碼算法 G.729的軟件實(shí)現(xiàn)[J].通信技術(shù),2002(02):4-6.