張文豐+余秋萍
摘 要:在多媒體會(huì)議或者監(jiān)控系統(tǒng)中,混音算法決定了其輸出語(yǔ)音質(zhì)量高低。作為溝通、釋義的本質(zhì)需要,混音算法既要求保持一定的音頻信號(hào)大小,也要求音質(zhì)效果適宜,實(shí)時(shí)性有保障。由此,文中提出的基于時(shí)間幀進(jìn)行歸一化方法的混音算法,改進(jìn)常見音頻混音算法中的多種缺陷。
關(guān)鍵詞:PCM;混音;實(shí)時(shí);時(shí)間幀;歸一化
1、前言
多媒體會(huì)議和監(jiān)控系統(tǒng),是音視頻被廣泛應(yīng)用的方案。工作生活中,會(huì)議系統(tǒng)和多功能的監(jiān)控系統(tǒng),涵蓋的數(shù)字化音視頻在現(xiàn)實(shí)生活中的應(yīng)用越來(lái)越廣泛,多媒體社交方式對(duì)音頻交互的要求也越來(lái)越高。而作為溝通基礎(chǔ)的語(yǔ)音對(duì)話,則是任何一種多媒體交互的最本質(zhì)的要求①。
系統(tǒng)的混音算法決定了會(huì)議或監(jiān)控對(duì)講質(zhì)量的好壞。長(zhǎng)期以來(lái),不同的應(yīng)用模式中,已經(jīng)有很多種音頻混音算法相繼被提出,但是各有優(yōu)缺點(diǎn)。
多媒體會(huì)議系統(tǒng)或監(jiān)控系統(tǒng),往往采用分布式組播建立系統(tǒng)架構(gòu)。而每一路單播時(shí),服務(wù)器完成混音、管理會(huì)議或者監(jiān)視畫面等等特定功能。由于會(huì)議要求混音中消除本路音頻信號(hào)、多路音頻信號(hào)的對(duì)齊和選擇方法等業(yè)務(wù)要求屬于會(huì)議管理的一部分,我們不予討論。本文只關(guān)注于多路音頻信號(hào)的混音算法研究,并提出了一種改進(jìn)的混音算法。
多路音頻信號(hào)的混音,無(wú)論采集編碼采用的是何種采樣率和編碼格式,我們這里進(jìn)行算法討論時(shí),混音處理的信號(hào)對(duì)象是指解碼后的PCM格式,并且已調(diào)整為具有相同的頻率的音頻數(shù)據(jù)。即,混音處理的音頻信號(hào)是對(duì)齊并且預(yù)處理完成之后的信號(hào)。
2、混音基本原理
多路音頻信號(hào)混合時(shí),不失一般性,我們約定,在會(huì)議或交互中有 i 個(gè)端點(diǎn)參與混音。并且約定音頻混音時(shí)的信號(hào)頻率F,定義端點(diǎn)的信號(hào)采集時(shí)間幀長(zhǎng)度為FRAME_SIZE(單位:s)。通常,聲音信號(hào)延時(shí)超過(guò)100ms時(shí),主觀能明顯感受到,因延時(shí)造成在線對(duì)話困難。因此我們的時(shí)間幀長(zhǎng)度通常取值為時(shí)延閾值的十分之一,即10ms,既足夠滿足信號(hào)特征分析的需要,也能滿足實(shí)時(shí)要求。
而當(dāng)前多種混音算法的目的都是為了盡可能保持有效信號(hào)的權(quán)重比例,并且解決信號(hào)溢出問(wèn)題,因此我們還需要對(duì)求和之后的音頻信號(hào)進(jìn)行防止溢出的處理。
3、算法分析和實(shí)現(xiàn)
實(shí)際的應(yīng)用中,常規(guī)混音方案都會(huì)在時(shí)域范圍采用音頻點(diǎn)的信號(hào)疊加作為基本的處理手段,由于數(shù)字音頻信號(hào)的量化有位長(zhǎng)的上下限①。疊加運(yùn)算必然會(huì)造成溢出。然后,要進(jìn)行溢出檢測(cè),對(duì)溢出信號(hào)進(jìn)行飽和運(yùn)算,即超過(guò)上限的結(jié)果被置為上限值,超過(guò)下限的值置為下限值。這種運(yùn)算其實(shí)破壞了音頻信號(hào)的時(shí)域特征,引入了爆破音等噪聲,局部語(yǔ)音不再連續(xù)。當(dāng)混音的信號(hào)源幅度較大,或者路數(shù)增加時(shí),溢出將成為常態(tài)?;煲艚Y(jié)果幾乎輕易就能達(dá)到上下限值。語(yǔ)音流中充斥太多噪聲就無(wú)法再被理解。
常見的多重混音算法中,(1)直接加和法和平均權(quán)重算法。后者是在前者的基礎(chǔ)③上,求多路音頻通道的算術(shù)平均。很明顯,前者缺陷是容易溢出造成嚴(yán)重影響體驗(yàn)的溢出雜音,后者算術(shù)平均后,不會(huì)產(chǎn)生溢出,噪音也較小。但是缺點(diǎn)明顯:平均后的衰減過(guò)大,影響通話質(zhì)量;(2)加和并箝位。如有溢出就設(shè)箝位的最值(上溢時(shí),箝位以后的值為字符長(zhǎng)度所能表示的最大值;下溢時(shí),箝位值為所能表示的最小值)。這一方法仍會(huì)在溢出的地方引入了嚴(yán)重的刺刺的雜音;(3)歸一化混音處理。設(shè)置一個(gè)音頻信號(hào)的歸一化系數(shù)。對(duì)全部的音頻信號(hào)乘以系數(shù),要求所有信號(hào)最大值不可溢出,從而使信號(hào)幅值歸一化。
但此方法需要知道所有音頻信號(hào)的個(gè)體幅度,不具備實(shí)時(shí)性;(4)自適應(yīng)的加權(quán)混音算法,使用衰減因子,用衰減因子限制幅值。衰減因子代表了語(yǔ)音的權(quán)重,隨著音頻數(shù)據(jù)的變化而變化。優(yōu)點(diǎn)是能避免信號(hào)溢出,缺點(diǎn)則是計(jì)量衰減因子計(jì)算量較大,并且衰減因子的加成,導(dǎo)致信號(hào)特征一直發(fā)生變化,對(duì)音質(zhì)的保真還原度有一定影響。
疊加后為避免發(fā)生溢出,乘以衰減因子的算法能降低其幅度,使其仍舊分布在實(shí)際位長(zhǎng)所能表示的范圍之內(nèi),當(dāng)溢出時(shí),衰減因子減小至<1,并使得溢出的數(shù)據(jù)在衰減后能夠處于臨界值以內(nèi),而在沒(méi)有溢出時(shí),又讓衰減因子增大至>1。衰減因子使信號(hào)數(shù)據(jù)變化較為平緩。衰減因子隨著音頻數(shù)據(jù)的變化而變化,多路疊加時(shí),越平均的衰減因子越容易造成信號(hào)普遍衰減,影響辨析。尤其是針對(duì)單點(diǎn)信號(hào)的衰減因子在路數(shù)增多的情況下,無(wú)法判斷該路信號(hào)的實(shí)際信息中的權(quán)重,可能導(dǎo)致該路信號(hào)部分語(yǔ)音信號(hào)點(diǎn)嚴(yán)重弱化,無(wú)法被辨析,造成斷續(xù)感受,影響實(shí)際交流效果。
3.1、改進(jìn)算法的思路和實(shí)現(xiàn)
3.1.1、最小信號(hào)處理單元時(shí)長(zhǎng)——時(shí)間幀
通常的混音算法采用單點(diǎn)進(jìn)行處理,處理簡(jiǎn)潔,運(yùn)算簡(jiǎn)單,計(jì)算迅速。但考慮到語(yǔ)音信號(hào)的之間存在關(guān)聯(lián)性,并且語(yǔ)音還有一個(gè)明顯的特征叫掩蔽效應(yīng)。當(dāng)同時(shí)產(chǎn)生信號(hào)時(shí),人耳的主觀感受中,幅度較大的信號(hào)可能掩蓋較小的信號(hào)。
我們需要保證較強(qiáng)能量的一定時(shí)長(zhǎng)的音頻通道信號(hào)段被接收,才能理解對(duì)方語(yǔ)音的含義。單點(diǎn)信號(hào)體現(xiàn)不出信號(hào)元素間的關(guān)聯(lián)性,多路信號(hào)乘以衰減因子可能造成短時(shí)信號(hào)衰弱至不可辨認(rèn),單點(diǎn)信號(hào)處理就不能滿足我們主觀感受語(yǔ)音信號(hào)的特征。
實(shí)驗(yàn)效果和人耳特征顯示,我們感受延時(shí)超過(guò)100ms后,雙方因無(wú)法判斷對(duì)方下一步行為而造成“搶發(fā)言”而沖突,無(wú)法正常溝通。
因此我們?cè)邳c(diǎn)對(duì)應(yīng)時(shí)長(zhǎng)和100ms之間選擇一個(gè)時(shí)間段作為時(shí)間幀。我們通常根據(jù)音頻編碼特征,選擇10ms或者2-3個(gè)整數(shù)倍作為時(shí)間幀長(zhǎng)(如特例:ITU,G723.1編解碼的時(shí)長(zhǎng)是30ms,混音時(shí)長(zhǎng)對(duì)齊時(shí)選擇30ms為編碼時(shí)間幀;G722.1則是20ms編解碼時(shí)長(zhǎng)。使用10ms時(shí)長(zhǎng)描述算法并不失一般性)④。
3.1.2、算法實(shí)現(xiàn)描述
我們根據(jù)掩蔽效應(yīng)的原理,我們首先要對(duì)單幀信號(hào)的能量進(jìn)行計(jì)算,選擇能量最強(qiáng)的且不包括自身的2路信號(hào),進(jìn)行混音運(yùn)算。如果選擇3路,則先兩路混音后,再與其中一路混音即可完成。當(dāng)混音信號(hào)超過(guò)3路之后,聲音信號(hào)要么被掩蔽,要么雜亂,干擾互動(dòng)溝通,缺乏實(shí)際的應(yīng)用價(jià)值。
3. 2、混音實(shí)驗(yàn)結(jié)果
根據(jù)實(shí)際參與測(cè)試的測(cè)試人員的主觀評(píng)價(jià),混音效果良好,合成后的音頻流連續(xù)、自然,沒(méi)有跳音和斷續(xù)的感覺(jué),也沒(méi)有溢出爆破噪聲,重點(diǎn)信號(hào)通道的音頻幅度明顯,強(qiáng)度豐富,信息清晰可辨。
4、結(jié)束語(yǔ)
按照上述算法,同時(shí)在VC++6.0環(huán)境和DSP嵌入式環(huán)境下,編碼完成混音功能。既可由DSP多媒體音視訊集成系統(tǒng)應(yīng)用到多媒體視訊會(huì)議中,也可以應(yīng)用到監(jiān)控交互方案里。也可以應(yīng)用到PC軟件系統(tǒng)中,具有處理實(shí)時(shí)流媒體和文件類媒體的雙重功能。
本算法已經(jīng)被應(yīng)用于多種產(chǎn)品中。實(shí)踐證明,相對(duì)于其它常見的一些語(yǔ)音混合算法,具有良好的聽覺(jué)主觀舒適感。
參考文獻(xiàn)
[1] 李宇,郭雷勇,陳建銘,譚洪舟.一種多媒體會(huì)議系統(tǒng)的實(shí)時(shí)同步混音轉(zhuǎn)發(fā)算法.中山大學(xué)學(xué)報(bào)(自然科學(xué)版),2010年3月,49(2).
[2] 樊星,顧偉康,葉秀清. 多媒體會(huì)議中的快速實(shí)時(shí)自適應(yīng)混音方案研究. 軟件學(xué)報(bào), 2005,16(01):108-115.
[3] 徐保民,王秀玲. 一個(gè)改進(jìn)的混音算法.電子與信息學(xué)報(bào),?2003,?25(12):1709-1713.
[4] 楊樹堂,余勝生等.基于分組網(wǎng)絡(luò)的多點(diǎn)實(shí)時(shí)語(yǔ)音混合及調(diào)度算法.軟件學(xué)報(bào), 2001.12(9):413-1419.
作者簡(jiǎn)介:張文豐(1978-),男,碩士。