司聿宣 ,蘇遠興 ,楊正芳
(1.煙臺職業(yè)學院藝術(shù)設(shè)計系,山東 煙臺 264001;2.92857部隊,北京 100161;3.91557部隊,浙江 舟山 316000)
隨著多媒體技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,基于軟件化的手段可實現(xiàn)分布式環(huán)境下多點間的語音通信[1-2].但在大型模擬器系統(tǒng)中,不同位置的訓練員和指揮員間的語音通信通常采用專用硬件設(shè)備的方法,不僅增加了系統(tǒng)的設(shè)計費用、復雜度和維護的難度,更增加了系統(tǒng)的硬件組成和布局難度,尤其對于空間有限的模擬訓練系統(tǒng),其缺點更為突出.針對該問題,筆者綜合運用聲音處理和網(wǎng)絡(luò)通信技術(shù),基于客戶機/服務(wù)器(Client/Server,以下簡稱:C/S)的架構(gòu)構(gòu)建了一套語音通信系統(tǒng),利用微軟推出的DirectX提供的與網(wǎng)絡(luò)音頻應(yīng)用相關(guān)的系統(tǒng)開發(fā)工具包(System Develop Kit,簡稱:SDK)實現(xiàn)仿真模擬系統(tǒng)操作人員之間的語音捕捉與回放,利用網(wǎng)絡(luò)通信技術(shù)實現(xiàn)了語音的打包、傳輸與解包,同時, 針對冗余的語音數(shù)據(jù)將造成網(wǎng)絡(luò)負擔的問題,采用離散傅里葉變換(Discrete Fourier Transform,以下簡稱:DFT)算法在頻域上對語音數(shù)據(jù)進行了過濾.該方法以軟件化的手段替代了傳統(tǒng)模擬器中復雜的硬件設(shè)計,在實際工程項目中取得了較好的效果.
網(wǎng)絡(luò)語音通訊系統(tǒng)結(jié)構(gòu)如圖1所示,系統(tǒng)采用C/S架構(gòu),使用了一個高效的服務(wù)器程序,運行在一臺具有獨立IP地址的計算機上,用來發(fā)送并接收語音數(shù)據(jù)和與客戶端進行交互的控制信息,維護客戶端信息及客戶端連接信息等功能.客戶端程序主要實現(xiàn)語音數(shù)據(jù)的錄取、 過濾和壓縮,發(fā)送和接收與服務(wù)器交互的控制信令和音頻編碼數(shù)據(jù),解壓語音數(shù)據(jù)并進行播放.服務(wù)器和客戶端之間所有的控制信息均采用TCP/IP協(xié)議傳輸[3-4].
圖 1 系統(tǒng)結(jié)構(gòu)Fig.1 Structure of system
每一個客戶端獨立完成語音數(shù)據(jù)的采集,并對語音數(shù)據(jù)進行過濾和壓縮,然后將數(shù)據(jù)發(fā)往服務(wù)器端并經(jīng)服務(wù)器轉(zhuǎn)發(fā)給其他客戶端.同時客戶服務(wù)端接收來自服務(wù)器的語音數(shù)據(jù),經(jīng)過解壓后播放.
Microsoft DirectX軟件中的DirectSound提供了一個系統(tǒng)捕捉來自輸入設(shè)備的聲音和播放那些貫穿各種各樣的使用先進的3-D位置特效的回放設(shè)備的聲音,并且過濾回聲、扭曲、反射和其它特效.其優(yōu)點是速度快、延時短、可控制性強.
1.2.1 聲音的捕捉 DirectSound允許從輸入到聲卡的設(shè)備捕獲聲音,數(shù)據(jù)可被捕獲為脈沖編碼調(diào)制或壓縮格式,為了立即回放或在文件里存儲,DirectSound提供創(chuàng)建聲音捕捉對象IDirectSoundCapture的COM接口,通過捕捉對象設(shè)置錄音的格式、建立用來捕捉聲音樣本的緩沖區(qū)對象IDirectSoundCaptureBuffer、設(shè)定聲音捕捉長度響應(yīng)事件IDirectSoundNotify.在錄音緩沖區(qū)中充滿設(shè)定長度的數(shù)據(jù)后,IDirectSoundNotify事件響應(yīng),這時可以鎖定緩沖區(qū)并對緩沖區(qū)內(nèi)捕獲的聲音進行拷貝.聲音捕捉流程如圖2中(a)所示.
1.2.2聲音的回放 DirectSound提供建立IDirectSoundBuffer對象的COM接口并設(shè)置Buffer的大小及播放聲音的格式.為了實現(xiàn)音頻的連續(xù)播放,IDirectSoundBuffer使用多個次緩沖區(qū),通過設(shè)定播放聲音長度的響應(yīng)事件,在每一個次緩沖區(qū)均設(shè)置一個通知點,每當一個緩沖區(qū)的內(nèi)容播放完后,DirectSound一方面激活Notify機制通知填充緩沖區(qū)數(shù)據(jù),另一方面同時無間隙播放下一個緩沖區(qū)數(shù)據(jù),實現(xiàn)音頻的連續(xù)播放.聲音回放流程如圖2中(b)所示.
圖2 聲音捕捉和回放Fig.2 Catch and replay
語音通訊的目的是為了傳遞說話人的信息,但在實際的語音交談中,有很多時間內(nèi)可能沒有人在說話,此時傳輸?shù)恼Z音數(shù)據(jù)只是沒有意義的環(huán)境音.為了減少系統(tǒng)的網(wǎng)絡(luò)負擔,需要對錄取的語音數(shù)據(jù)進行過濾,避免將只有環(huán)境噪音的數(shù)據(jù)傳到網(wǎng)絡(luò).
由于計算機只能處理有限長度的信號,因此對原始語音信號x(t)要以一定的采樣周期T進行截斷,即有限化,然后對采樣信號x(n)(n=0,1,2,…,N-1)做進一步處理.信號的有限化也稱加窗處理,當窗函數(shù)在邊緣處將信號突然截斷,窗外時域信息全部消失.將長序列截短變成有限長度的短序列會出現(xiàn)頻率分辨率問題和頻譜泄漏問題.頻率分辨率問題是由于頻譜主瓣過寬、邊瓣過大造成的,頻譜泄漏是由于邊瓣的影響造成的.為了解決這些問題,一般要對信號進行加窗處理,使信號截斷的銳角鈍化,從而使頻譜的擴散減到最小.
經(jīng)過處理,語音信號就已經(jīng)被分割成一幀一幀的加過窗函數(shù)的短時信號,然后再把每一個短時語音幀看成平穩(wěn)的隨機信號,利用數(shù)字信號處理技術(shù)來提取語音特征參數(shù).在進行處理時,按幀從數(shù)據(jù)區(qū)中取出數(shù)據(jù),處理完后再取下一幀.最后得到由每一幀參數(shù)組成的語音特征參數(shù)的時間序列.
對一幀時間內(nèi)的語音信號進行DFT變換為[5-7]:
(1)
式中W(n)為矩形窗,N為采樣點數(shù).|X(k)|便是x(n)的短時幅度譜估計.把k當作頻率變量,20 log10|X(k)|就是以分貝表示的頻譜.為了提高計算|X(k)|的速度,可以采用快速傅里葉變換.這要求N是2的整數(shù)次冪,如果N不滿足要求,可以在數(shù)據(jù)x(n)后補零.
加窗的信號段經(jīng)過DFT變換后,|X(k)|2表示信號在頻率點k/TN處的功率值,令:
(2)
為N/2頻率采樣點的平均功率,則各個頻點功率偏離均值的絕對值之和為:
(3)
通常電話語音的頻率在60~3 400Hz,這個頻率之外的聲音會被濾除.因此,可以認為頻率不在60~3 400 Hz之間的信號為語音通訊系統(tǒng)的噪音.在計算Pave、Pσ時不用計算這些頻點.
在一個特定的環(huán)境中,環(huán)境噪聲的Pσ上限值設(shè)定為PNMax,當Pσ>PNMax時可以判定有語音信號.
在實驗室錄制一段長度為1.6 s的單通道語音段,信號采樣頻率為8 000 Hz,每個采樣點的信號幅度用8比特表示.將這段數(shù)據(jù)分為50幀,每幀數(shù)據(jù)長度為256個采樣點,其時域波形如圖3中(a)所示,方框內(nèi)1和2中的波形為兩個頻率分別為30 Hz和3 700 Hz的信號和環(huán)境噪聲的疊加;計算每幀采樣數(shù)據(jù)的Pσ,結(jié)果仿真如圖3中(b)所示;設(shè)置語音信號頻率范圍60~4 000 Hz,過濾后的Pσ結(jié)果仿真如圖3中(c)所示.根據(jù)對環(huán)境噪聲的采樣計算,估計PNMax=30,利用式Pσ>PNMax,過濾后的信號波形如圖3中(d)所示.
圖3 聲音過濾仿真Fig.3 Simulation of audio filter
筆者采用網(wǎng)絡(luò)語音通信技術(shù),利用DirectSound對聲音進行采集和回放,設(shè)計了網(wǎng)絡(luò)語音通訊軟件,用以取代在以往仿真系統(tǒng)中使用硬件實現(xiàn)語音通訊的方法.同時,采用離散傅里葉變換對語音信號的頻譜進行分析,利用語音信號的頻譜特征對通信過程中的無用信號幀進行過濾,只將滿足判定條件的信號幀送往服務(wù)器進行轉(zhuǎn)發(fā),從而有效減小了仿真系統(tǒng)中網(wǎng)絡(luò)的數(shù)據(jù)傳輸負擔.該軟件已在某訓練模擬器中得到很好的應(yīng)用,滿足訓練員通話的需求.
參考文獻:
[1] 虞益誠.網(wǎng)絡(luò)技術(shù)和應(yīng)用[M]. 南京: 東南大學出版社, 2005.
[2] 李瑞. 一種網(wǎng)絡(luò)語音聊天系統(tǒng)的設(shè)計與運用[J]. 綠色大世界·綠色科技, 2009(7): 101-102.
[3] 朱浩, 呂明. 用UDP協(xié)議實現(xiàn)網(wǎng)絡(luò)語音廣播[J]. 電信工程技術(shù)和標準化, 2005: 53-55.
[4] 陳婷婷,張彥鐸. 機器人足球仿真比賽平臺中網(wǎng)絡(luò)通信問題研究[J]. 武漢工程大學學報, 2009, 31(3): 70-73.
[5] 平殿發(fā),劉賢忠,趙培洪. 短時分數(shù)階傅里葉變換的基本性質(zhì)[J]. 數(shù)據(jù)采集與處理, 2009, 24(S): 39-42.
[6] 高蕊,史二娜. 基于FFT加窗與插值算法的接地電阻測量新方法[J]. 寶雞文理學院學報, 2010,30(3): 66-68.
[7] 吳杰康,龍軍,王輯祥.基于數(shù)字微分算法的系統(tǒng)頻率快速準確測量[J].電工技術(shù)學報,2004, 19(4): 93-97.