徐玲芳,吳智勇
(1.湖北大學(xué) 物理與電子科學(xué)學(xué)院,湖北 武漢 430062;2.武漢中原電子集團有限公司,湖北 武漢 430205)
話音疊加在數(shù)字話音通信、多媒體會議系統(tǒng)中被廣泛運用,通過將多路數(shù)字話音信號疊加處理,再發(fā)送到指定的話音通路,形成一對多,多對一的話音傳輸路徑。模擬的聲音信號經(jīng)過抽樣、量化后得到的數(shù)字信號仍然是連續(xù)平滑的波形信號,量化后的數(shù)字話音疊加等效于模擬話音的疊加。
最常用的話音疊加算法是平均算法(Average Audio Mixing Algorithm),其基本原理是將需疊加的多路數(shù)字話音信號進行帶符號的加法運算。再按疊加的話音路數(shù)對疊加的數(shù)字話音信號進行右移位降幅處理,在保持?jǐn)?shù)字話音頻率特性的同時將話音振幅降到疊加前。
這種算法簡單易行,在疊加路數(shù)不高的條件下話音質(zhì)量清晰可辨。缺點是當(dāng)疊加的話音路數(shù)增加時,每個單路話音的衰減也會相應(yīng)增加,從而導(dǎo)致單路聲音變小,降低可辨別性,導(dǎo)致疊加后話音忽大忽小甚至聲音的斷續(xù)。因此,采用平均算法不適用于多路數(shù)話音疊加的情況。
目前的某應(yīng)用中,最多需實現(xiàn)64路數(shù)字話音的交換,同時實現(xiàn)一定路數(shù)的話音疊加。話音交換需設(shè)計64×64的話音交換矩陣,即輸入話音為64路,每路8 bit;輸出話音為64路,每路8 bit。由CPU控制將話音交換矩陣輸入的固定路話音送到交換矩陣的固定路端口輸出。
話音疊加由CPU控制,即由CPU確定64路話音中的某路疊加,疊加后與某路話音交換輸出。目前項目設(shè)計中實現(xiàn)的話音疊加是五路話音疊加。其實現(xiàn)流程如圖1所示。可以看出,數(shù)字話音信號在話音疊加模塊中只進行簡單的加法運算,再對疊加后的話音信號進行幅度判斷,如果超出了輸出范圍就以幅度的最大值或最小值輸出。
圖1 簡單話音疊加程序流程圖
這種話音疊加方式簡單易實現(xiàn),在疊加路數(shù)少、單路話音信息量不大的情況下話音質(zhì)量清晰可辨,因此在目前工作中均采用此種疊加方式。但這種結(jié)構(gòu)的話音疊加方式不適用疊加路數(shù)較多的情況。因為語音信號中低強度信號比高強度信號出現(xiàn)的幾率高,因此在疊加路數(shù)不大的情況下進行簡單的加法疊加后,削峰處理對話音質(zhì)量影響不大。但隨著疊加話音路數(shù)增加,疊加后的高強度信號出現(xiàn)的幾率也會大大增加,如果采用簡單的削峰處理必然影響通話質(zhì)量。
目前數(shù)字話音信號處理中的話音疊加模塊能滿足功能要求,且結(jié)構(gòu)簡單易實現(xiàn)。但放眼未來,有必要優(yōu)化話音疊加模塊的功能。在保證話音質(zhì)量的前提下提高疊加話音路數(shù)。
話音疊加處理的難點在于疊加后語音信號的溢出,隨著疊加話音路數(shù)的增加,發(fā)生溢出的頻率不斷增加,引起的噪音過大從而最終導(dǎo)致混音后信號質(zhì)量下降無法識別。采用加權(quán)系數(shù)可以保證在高強度話音質(zhì)量的條件下有效降低其峰值,避免信號溢出。這也是話音疊加算法中常用的方式。但采用加權(quán)算法時需要注意以下兩點:
(1)加權(quán)系數(shù)不能恒定不變
常用的平均算法是一種典型的加權(quán)系數(shù)恒定的算法。當(dāng)疊加話音路數(shù)值較小時,這種處理方式對解決高強度信號溢出效果較好,但如果疊加話音路數(shù)較多時,疊加后話音音量降低到原來的1/M,導(dǎo)致各路話音的衰減較大,使傳出聲音較小。當(dāng)疊加話音路數(shù)M值變化時,也會導(dǎo)致聲音忽大忽小,影響話音質(zhì)量。
(2)加權(quán)系數(shù)不能選擇時間函數(shù)
如果加權(quán)系數(shù)是包含時間的函數(shù),會導(dǎo)致疊加后輸出的話音音量隨時間的變化而進行不同比例的縮放,從而使疊加加權(quán)處理后的話音輸出音量不確定,處理后的聲音大小隨機變化,無法滿足設(shè)計要求。因此,一個合理加權(quán)算法的加權(quán)因子不應(yīng)該恒定不變,也不能包含時間的函數(shù)。
不均勻波形收縮話音疊加算法是一種較新的算法,能滿足10路以上甚至更高路數(shù)話音疊加的需要。采用分段收縮規(guī)則,對線性疊加后的采樣數(shù)值進行收縮以保證數(shù)值不溢出,低強度信號采用較大的權(quán)重以確保信號的可識別性。而高強度信號采用較小的權(quán)重以確保得到相應(yīng)的收縮比例。
首先對需要收縮的疊加信號進行值域劃分,將其劃分為若干段,每段長為2n-1,這樣依次劃分的范圍為[0,2n-1],(2n-1,2×2n-1],(2×2n-1,3×2n-1],…,((m-1)×2n-1, m×2n-1],…,區(qū)間劃分的段數(shù)可以視具體情況而定,值域越大,對應(yīng)信號幅度越大,相應(yīng)出現(xiàn)的幾率越小。
話音疊加因子與時間t、疊加的話音路數(shù)無關(guān)。雖然話音疊加因子不能表示為常數(shù),但經(jīng)過推斷,可以得到一個簡單的映射關(guān)系。假設(shè)疊加后的數(shù)字話音信號為a(t),話音疊加加權(quán)處理后的輸出為b(t),則可以得到表達式(1):
其中:sgn(x)是符號函數(shù),mod 是取余操作,nj=|a(t)|/2Q-1。值得注意的是,為了便于運算,k一般取值為2的整數(shù)次冪,這里取值為16,Q取值為16。
話音疊加算法可以依據(jù)現(xiàn)有的模型采用FPGA來實現(xiàn)。這里確定的輸入話音路數(shù)為10路,每路話音信號輸入為16位有正負(fù)的數(shù)字采樣信號。首先對這10路話音信號進行累加,再去絕對值,通過前面的分析可知,對累加的結(jié)果取決對值后進行值域的劃分。將值域劃分為5段,范圍依次為:[0,215],(215,2×215],(2×215,3×215],(3×215,4×215],(4×215,+∞),疊加的數(shù)字話音信號幅度越大出現(xiàn)的幾率越小,在10路話音信號疊加情況下劃分的值域只需要取5段就可以保證話音質(zhì)量。當(dāng)然如果疊加話音路數(shù)繼續(xù)增加,也可以視具體情況將劃分的值域范圍擴大。
式(2)對于確定的K,nj和疊加路數(shù)而言為常數(shù),因此可以通過計算得到相應(yīng)的映射關(guān)系,建立查表模型。其對應(yīng)關(guān)系見表1所示。
表1 收縮因子映射對照表
采用FPGA實現(xiàn)10路話音疊加模塊程序查表,同時優(yōu)化結(jié)構(gòu),多采用移位和加法計算,無需乘除法運算,更有利于硬件實現(xiàn)。
疊加后的數(shù)字話音幅度隨機變化,在本方案中,根據(jù)高幅度信號出現(xiàn)的幾率遠比低幅度信號小這一規(guī)律,采用與時間和話音疊加路數(shù)無關(guān)的混音權(quán)重,混音效果理想,聲音自然流暢清晰,噪音小。疊加后的話音比原來話音要稍微小一點,但不影響話音質(zhì)量。當(dāng)然k的取值也會影響話音質(zhì)量和識別,在以后的工作中還要繼續(xù)摸索k值與話音質(zhì)量和混音路數(shù)的關(guān)系。同時考慮建立標(biāo)準(zhǔn)話音疊加的FPGA處理模塊,通過仿真和上板調(diào)試確定多路話音疊加的最佳模型。在將來的工作中可大大提高工作效率,并為高路數(shù)話音疊加的DSP等多種處理器實現(xiàn)做好技術(shù)積累。
[1] 王文林,廖建新,朱曉民. 多媒體會議中新型快速實時混音算法[J]. 電子與信息學(xué)報,2007,29(3):690-694
[2] 徐保民,王秀玲. 一個改進的混音算法 [J]. 電子與信息學(xué)報,2003,25(12):1709-1713
[3] Uwe Meyer-Baese. Digital signal processing with field programmable gate arrays [M]. Springer-Verlag Berlin Heidelberg,2004.
[4] 呼德,陳喆,殷福亮. 一種自動等響度數(shù)字混音算法 [J]. 信號處理,2017,33(3):437-443.
[5] 曹旭來,張玲華,林志敏,等. 數(shù)字助聽器中單通道語音增強算法的研究 [J]. 信號處理,2014,30(4):405-412.
[6] 張傳永. 混音技術(shù)及其在IP電話會議系統(tǒng)中的應(yīng)用 [D]. 西安:西安電子科技大學(xué),2011.
[7] Rumsey Francis. Immersive audio objects, mixing, and rendering[J]. Journal of Audio Engineering Society, 2016,64(7-8): 584-588.
[8]劉新華,李方敏,曠海蘭,等.基于數(shù)字語言教室的多路混音算法及應(yīng)用[J].微計算機信息,2005(19):34-36.