?

話音疊加中實時混音算法的FPGA實現

2018-06-29 06:00徐玲芳吳智勇
物聯網技術 2018年6期
關鍵詞:混音話音值域

徐玲芳,吳智勇

(1.湖北大學 物理與電子科學學院,湖北 武漢 430062;2.武漢中原電子集團有限公司,湖北 武漢 430205)

0 引 言

話音疊加在數字話音通信、多媒體會議系統中被廣泛運用,通過將多路數字話音信號疊加處理,再發送到指定的話音通路,形成一對多,多對一的話音傳輸路徑。模擬的聲音信號經過抽樣、量化后得到的數字信號仍然是連續平滑的波形信號,量化后的數字話音疊加等效于模擬話音的疊加。

最常用的話音疊加算法是平均算法(Average Audio Mixing Algorithm),其基本原理是將需疊加的多路數字話音信號進行帶符號的加法運算。再按疊加的話音路數對疊加的數字話音信號進行右移位降幅處理,在保持數字話音頻率特性的同時將話音振幅降到疊加前。

這種算法簡單易行,在疊加路數不高的條件下話音質量清晰可辨。缺點是當疊加的話音路數增加時,每個單路話音的衰減也會相應增加,從而導致單路聲音變小,降低可辨別性,導致疊加后話音忽大忽小甚至聲音的斷續。因此,采用平均算法不適用于多路數話音疊加的情況。

1 項目需求

目前的某應用中,最多需實現64路數字話音的交換,同時實現一定路數的話音疊加。話音交換需設計64×64的話音交換矩陣,即輸入話音為64路,每路8 bit;輸出話音為64路,每路8 bit。由CPU控制將話音交換矩陣輸入的固定路話音送到交換矩陣的固定路端口輸出。

話音疊加由CPU控制,即由CPU確定64路話音中的某路疊加,疊加后與某路話音交換輸出。目前項目設計中實現的話音疊加是五路話音疊加。其實現流程如圖1所示??梢钥闯?,數字話音信號在話音疊加模塊中只進行簡單的加法運算,再對疊加后的話音信號進行幅度判斷,如果超出了輸出范圍就以幅度的最大值或最小值輸出。

圖1 簡單話音疊加程序流程圖

這種話音疊加方式簡單易實現,在疊加路數少、單路話音信息量不大的情況下話音質量清晰可辨,因此在目前工作中均采用此種疊加方式。但這種結構的話音疊加方式不適用疊加路數較多的情況。因為語音信號中低強度信號比高強度信號出現的幾率高,因此在疊加路數不大的情況下進行簡單的加法疊加后,削峰處理對話音質量影響不大。但隨著疊加話音路數增加,疊加后的高強度信號出現的幾率也會大大增加,如果采用簡單的削峰處理必然影響通話質量。

目前數字話音信號處理中的話音疊加模塊能滿足功能要求,且結構簡單易實現。但放眼未來,有必要優化話音疊加模塊的功能。在保證話音質量的前提下提高疊加話音路數。

2 疊加算法基本原理

話音疊加處理的難點在于疊加后語音信號的溢出,隨著疊加話音路數的增加,發生溢出的頻率不斷增加,引起的噪音過大從而最終導致混音后信號質量下降無法識別。采用加權系數可以保證在高強度話音質量的條件下有效降低其峰值,避免信號溢出。這也是話音疊加算法中常用的方式。但采用加權算法時需要注意以下兩點:

(1)加權系數不能恒定不變

常用的平均算法是一種典型的加權系數恒定的算法。當疊加話音路數值較小時,這種處理方式對解決高強度信號溢出效果較好,但如果疊加話音路數較多時,疊加后話音音量降低到原來的1/M,導致各路話音的衰減較大,使傳出聲音較小。當疊加話音路數M值變化時,也會導致聲音忽大忽小,影響話音質量。

(2)加權系數不能選擇時間函數

如果加權系數是包含時間的函數,會導致疊加后輸出的話音音量隨時間的變化而進行不同比例的縮放,從而使疊加加權處理后的話音輸出音量不確定,處理后的聲音大小隨機變化,無法滿足設計要求。因此,一個合理加權算法的加權因子不應該恒定不變,也不能包含時間的函數。

3 不均勻波形收縮話音疊加算法

不均勻波形收縮話音疊加算法是一種較新的算法,能滿足10路以上甚至更高路數話音疊加的需要。采用分段收縮規則,對線性疊加后的采樣數值進行收縮以保證數值不溢出,低強度信號采用較大的權重以確保信號的可識別性。而高強度信號采用較小的權重以確保得到相應的收縮比例。

首先對需要收縮的疊加信號進行值域劃分,將其劃分為若干段,每段長為2n-1,這樣依次劃分的范圍為[0,2n-1],(2n-1,2×2n-1],(2×2n-1,3×2n-1],…,((m-1)×2n-1, m×2n-1],…,區間劃分的段數可以視具體情況而定,值域越大,對應信號幅度越大,相應出現的幾率越小。

話音疊加因子與時間t、疊加的話音路數無關。雖然話音疊加因子不能表示為常數,但經過推斷,可以得到一個簡單的映射關系。假設疊加后的數字話音信號為a(t),話音疊加加權處理后的輸出為b(t),則可以得到表達式(1):

其中:sgn(x)是符號函數,mod 是取余操作,nj=|a(t)|/2Q-1。值得注意的是,為了便于運算,k一般取值為2的整數次冪,這里取值為16,Q取值為16。

4 疊加算法的FPGA實現

話音疊加算法可以依據現有的模型采用FPGA來實現。這里確定的輸入話音路數為10路,每路話音信號輸入為16位有正負的數字采樣信號。首先對這10路話音信號進行累加,再去絕對值,通過前面的分析可知,對累加的結果取決對值后進行值域的劃分。將值域劃分為5段,范圍依次為:[0,215],(215,2×215],(2×215,3×215],(3×215,4×215],(4×215,+∞),疊加的數字話音信號幅度越大出現的幾率越小,在10路話音信號疊加情況下劃分的值域只需要取5段就可以保證話音質量。當然如果疊加話音路數繼續增加,也可以視具體情況將劃分的值域范圍擴大。

式(2)對于確定的K,nj和疊加路數而言為常數,因此可以通過計算得到相應的映射關系,建立查表模型。其對應關系見表1所示。

表1 收縮因子映射對照表

采用FPGA實現10路話音疊加模塊程序查表,同時優化結構,多采用移位和加法計算,無需乘除法運算,更有利于硬件實現。

5 結 語

疊加后的數字話音幅度隨機變化,在本方案中,根據高幅度信號出現的幾率遠比低幅度信號小這一規律,采用與時間和話音疊加路數無關的混音權重,混音效果理想,聲音自然流暢清晰,噪音小。疊加后的話音比原來話音要稍微小一點,但不影響話音質量。當然k的取值也會影響話音質量和識別,在以后的工作中還要繼續摸索k值與話音質量和混音路數的關系。同時考慮建立標準話音疊加的FPGA處理模塊,通過仿真和上板調試確定多路話音疊加的最佳模型。在將來的工作中可大大提高工作效率,并為高路數話音疊加的DSP等多種處理器實現做好技術積累。

[1] 王文林,廖建新,朱曉民. 多媒體會議中新型快速實時混音算法[J]. 電子與信息學報,2007,29(3):690-694

[2] 徐保民,王秀玲. 一個改進的混音算法 [J]. 電子與信息學報,2003,25(12):1709-1713

[3] Uwe Meyer-Baese. Digital signal processing with field programmable gate arrays [M]. Springer-Verlag Berlin Heidelberg,2004.

[4] 呼德,陳喆,殷福亮. 一種自動等響度數字混音算法 [J]. 信號處理,2017,33(3):437-443.

[5] 曹旭來,張玲華,林志敏,等. 數字助聽器中單通道語音增強算法的研究 [J]. 信號處理,2014,30(4):405-412.

[6] 張傳永. 混音技術及其在IP電話會議系統中的應用 [D]. 西安:西安電子科技大學,2011.

[7] Rumsey Francis. Immersive audio objects, mixing, and rendering[J]. Journal of Audio Engineering Society, 2016,64(7-8): 584-588.

[8]劉新華,李方敏,曠海蘭,等.基于數字語言教室的多路混音算法及應用[J].微計算機信息,2005(19):34-36.

猜你喜歡
混音話音值域
函數的值域與最值
多角度求解函數值域
破解函數值域的十招
一種多路音頻混音算法的實現與應用
分組話音在窄帶信道的組播實現方案
IP語音報頭壓縮設計與實現
基于網優平臺的數據話音均衡分析
衛星通信終端話音接入車通的分析
基于DSP的多方會議系統的混音方案
激光唱片中的代號
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合