基于SIP協(xié)議的模擬電臺(tái)語(yǔ)音通信系統(tǒng)設(shè)計(jì)
作者/ 牟健 何波賢 岳明 王巖 92724部隊(duì)(山東 青島 266108)
本文引用地址:http://www.ex-cimer.com/article/201612/342199.htm摘要:為了提高模擬電臺(tái)訓(xùn)練系統(tǒng)的仿真程度,在模擬電臺(tái)語(yǔ)音通信系統(tǒng)中以計(jì)算機(jī)網(wǎng)絡(luò)通信技術(shù)為核心,構(gòu)建一種基于SIP協(xié)議的語(yǔ)音通信技術(shù)。經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,在多部電臺(tái)模擬器之間相互構(gòu)建語(yǔ)音組網(wǎng)通信時(shí)延小于200ms,音質(zhì)清晰,能夠清楚分辨出發(fā)話人的語(yǔ)音特征,滿足了設(shè)計(jì)的要求。
引言
當(dāng)前大部分模擬電臺(tái)訓(xùn)練系統(tǒng)基于電臺(tái)界面的操作,對(duì)語(yǔ)音通信交互及組網(wǎng)的構(gòu)建存在一定的缺陷,隨著計(jì)算機(jī)技術(shù)及仿真技術(shù)的飛速發(fā)展,以局域網(wǎng)為依托,利用計(jì)算機(jī)技術(shù),基于SIP協(xié)議的多線程即時(shí)語(yǔ)音通信技術(shù),構(gòu)建模擬仿真電臺(tái)一對(duì)一、一對(duì)多、多對(duì)多的即時(shí)語(yǔ)音通信組網(wǎng)效果,以適應(yīng)當(dāng)前開(kāi)展多元化、現(xiàn)代化的仿真模擬訓(xùn)練需求。
SIP協(xié)議是一種網(wǎng)絡(luò)電話協(xié)議,可以在局域網(wǎng)絡(luò)中即時(shí)構(gòu)建一對(duì)一、一對(duì)多、多對(duì)多參與者之間的語(yǔ)音交互通信。由于SIP協(xié)議開(kāi)源、簡(jiǎn)單、快捷、靈活、擴(kuò)展性強(qiáng)等特點(diǎn),當(dāng)前國(guó)內(nèi)外企業(yè)研制出很多基于SIP協(xié)議的視頻語(yǔ)音會(huì)議解決方案及網(wǎng)絡(luò)電話設(shè)備,極大地推進(jìn)了SIP協(xié)議技術(shù)的發(fā)展。
1 SIP協(xié)議
SIP(Session Initiation Protocol)是一個(gè)基于IP應(yīng)用層控制協(xié)議,繼承了互聯(lián)網(wǎng)通信一些設(shè)計(jì)理念,它高效、穩(wěn)定、簡(jiǎn)單、擴(kuò)展方便而又不缺乏靈活性,可以在幾分鐘之內(nèi)構(gòu)建出一個(gè)可以在多系統(tǒng)平臺(tái)運(yùn)行的服務(wù)器和客戶(hù)端。主要功能是以服務(wù)器為中心,即時(shí)建立、調(diào)整、撤消客戶(hù)端的呼叫與會(huì)話,同時(shí)可進(jìn)行用戶(hù)定位、用戶(hù)交換、呼叫建立、處理等,構(gòu)建完整的語(yǔ)音通信網(wǎng)絡(luò)系統(tǒng)。
SIP協(xié)議采用了C/S模式,包括SIP代理客戶(hù)端和SIP服務(wù)器。其中,代理客戶(hù)端是一個(gè)交互的系統(tǒng)接口,又分為負(fù)責(zé)發(fā)起SIP呼叫請(qǐng)求的用戶(hù)代理客戶(hù)端和負(fù)責(zé)對(duì)呼叫請(qǐng)求做出響應(yīng)的用戶(hù)代理服務(wù)器。而SIP服務(wù)器主要包括注冊(cè)、代理、位置、重定向服務(wù)器,它們之間可以共存于一個(gè)設(shè)備當(dāng)中,也可以分布在整個(gè)物理實(shí)體中,SIP服務(wù)器并不依賴(lài)硬件系統(tǒng),完全是基于軟件實(shí)現(xiàn)的文本協(xié)議,主要負(fù)責(zé)接收和處理用戶(hù)端請(qǐng)求、注冊(cè)、鑒權(quán)、認(rèn)證、處理呼叫相關(guān)信令的網(wǎng)絡(luò)等服務(wù)。
SIP作為一個(gè)開(kāi)源的協(xié)議棧,編碼方式是采用擴(kuò)展的BNF范式來(lái)規(guī)定的,不是一個(gè)垂直集成的通訊系統(tǒng),本身不提供服務(wù),往往與實(shí)時(shí)數(shù)據(jù)傳輸協(xié)議(RTP)、實(shí)時(shí)流協(xié)議(RSTP)、媒體網(wǎng)關(guān)控制協(xié)議、會(huì)話描述協(xié)議(SDP)等協(xié)同合作,來(lái)實(shí)現(xiàn)不同的網(wǎng)絡(luò)通信服務(wù),構(gòu)造完整的多媒體網(wǎng)絡(luò)通信架構(gòu)。同時(shí),SIP的技術(shù)核心是采用了標(biāo)準(zhǔn)C語(yǔ)言編寫(xiě)開(kāi)源的OSIP協(xié)議棧,并可在VC6.0編譯器中運(yùn)行,并為語(yǔ)音通信提供了一些解析消息的API和事物處理狀態(tài)機(jī)。
2 設(shè)計(jì)思路
SIP協(xié)議的語(yǔ)音通信模塊設(shè)計(jì)的目的是把分布在計(jì)算機(jī)局域網(wǎng)內(nèi)的半實(shí)物電臺(tái)模擬器實(shí)時(shí)構(gòu)建語(yǔ)音通信網(wǎng),該語(yǔ)音通信網(wǎng)絡(luò)的設(shè)計(jì)主要采用模塊設(shè)計(jì),各模塊之間松耦合且相對(duì)獨(dú)立,主要的模塊包括:SIP注冊(cè)模塊、語(yǔ)音處理模塊、實(shí)時(shí)語(yǔ)音傳輸模塊、SIP消息處理模塊。模塊的總體框圖如圖1所示。其中,SIP注冊(cè)是認(rèn)證各電臺(tái)模擬訓(xùn)練器子系統(tǒng)組網(wǎng)的狀態(tài);語(yǔ)音處理模塊包括語(yǔ)音采集、播放、編碼和解碼過(guò)程;實(shí)時(shí)語(yǔ)音傳輸主要包括SIP線程、發(fā)送線程、接收線程和網(wǎng)絡(luò)狀態(tài)反饋線程;SIP信息處理主要記錄各模擬電臺(tái)通信組網(wǎng)狀態(tài),發(fā)起或拆除語(yǔ)音系統(tǒng)組網(wǎng)以及相對(duì)應(yīng)的消息處理,實(shí)時(shí)調(diào)整處于不同組別電臺(tái)模擬訓(xùn)練器的組網(wǎng)連接狀態(tài)。
3 模塊具體實(shí)現(xiàn)
3.1 SIP注冊(cè)
SIP服務(wù)器設(shè)置在主控計(jì)算機(jī)上,主控計(jì)算機(jī)IP地址設(shè)置為:168.192.1.1,端口為:5060;每一臺(tái)電臺(tái)模擬器在系統(tǒng)中充當(dāng)SIP客戶(hù)端,設(shè)置的IP地址為:168.192.1.(2-12),端口為5061-5071。根據(jù)C/S模式把主控SIP服務(wù)器、電臺(tái)模擬器進(jìn)行組網(wǎng)連接,如圖5所示,并依次分配IP、端口地址、用戶(hù)名字,以及設(shè)定的密碼。此系統(tǒng)第一次使用時(shí),需要取得服務(wù)器的注冊(cè)認(rèn)證,否則無(wú)法進(jìn)行組網(wǎng)通信,SIP的注冊(cè)過(guò)程如圖2所示。
第一步,首次啟動(dòng)語(yǔ)音通信時(shí),SIP客戶(hù)端先通過(guò)局域網(wǎng)向安裝在主控計(jì)算機(jī)上的SIP服務(wù)器發(fā)起REGISTER注冊(cè)申請(qǐng);
第二步,SIP服務(wù)器對(duì)SIP客戶(hù)端進(jìn)行查詢(xún)并認(rèn)證該客戶(hù)的信息,確保這名客戶(hù)信息是一個(gè)新的用戶(hù),服務(wù)器對(duì)該用戶(hù)返回401 Unauthorized質(zhì)詢(xún)信息及所需的安全認(rèn)證令牌;
第三步,用戶(hù)根據(jù)服務(wù)器的提示,輸入相應(yīng)的標(biāo)識(shí)及用戶(hù)信息,再次向服務(wù)器發(fā)出REGISTER消息請(qǐng)求;
第四步,服務(wù)器收到請(qǐng)求后,檢查用戶(hù)信息的正確性,質(zhì)詢(xún)信息驗(yàn)證用戶(hù)的合法性,若是用戶(hù)信息錯(cuò)誤,返回失敗,若是戶(hù)信息合法,把用戶(hù)信息保存到數(shù)據(jù)庫(kù)當(dāng)中,最后返回成功的相應(yīng)消息200 OK。
3.2 語(yǔ)音處理模塊
當(dāng)客戶(hù)端完成注冊(cè)驗(yàn)證之后,由主控計(jì)算機(jī)選擇相應(yīng)的電臺(tái)模擬訓(xùn)練器進(jìn)行組網(wǎng),構(gòu)建SIP語(yǔ)音會(huì)議通信系統(tǒng)。語(yǔ)音的采集是由模擬電臺(tái)訓(xùn)練器終端負(fù)責(zé)語(yǔ)音采集,語(yǔ)音處理的流程如圖3所示,首先判斷手咪的PTT按鍵是否觸發(fā),若是沒(méi)有被觸發(fā),該電臺(tái)模擬訓(xùn)練器處于接收語(yǔ)音狀態(tài),即時(shí)對(duì)語(yǔ)音信息進(jìn)行解碼及播放;若是被觸發(fā),該電臺(tái)模擬訓(xùn)練器進(jìn)行語(yǔ)音采集,初始化語(yǔ)音存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu),調(diào)用錄音設(shè)備,并根據(jù)電臺(tái)設(shè)定的電磁干擾類(lèi)型的強(qiáng)度,對(duì)語(yǔ)音信息進(jìn)行編碼,當(dāng)保存數(shù)據(jù)的緩沖區(qū)滿時(shí),對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行打包,并發(fā)送到會(huì)議系統(tǒng)中進(jìn)行組播。
3.3 語(yǔ)音傳輸模塊
語(yǔ)音傳輸模塊包括SIP線程、發(fā)送線程、接收線程和網(wǎng)絡(luò)狀態(tài)反饋線程四個(gè)線程,為了滿足建立多線程的C/S模型和嚴(yán)格的異常處理機(jī)制,局域網(wǎng)中采用UDP協(xié)議進(jìn)行傳輸。UDP協(xié)議傳輸是一種單向的傳輸方式,事前不必與對(duì)方進(jìn)行連接,直接發(fā)送數(shù)據(jù),例如微信,不用擔(dān)心對(duì)方是否在線,都可以向?qū)Ψ桨l(fā)送數(shù)據(jù),不僅可以實(shí)現(xiàn)一對(duì)多點(diǎn)的數(shù)據(jù)廣播,還可以進(jìn)行用戶(hù)分組通信,具有通信效率高,占用網(wǎng)絡(luò)資源少等特點(diǎn)。然而UDP協(xié)議存在的缺點(diǎn)是存在數(shù)據(jù)的丟包現(xiàn)象,不能完全確保對(duì)方接收到完整的數(shù)據(jù)包。為了解決這種問(wèn)題,采用了三個(gè)UDP控件,如圖4所示,MUUDP1負(fù)責(zé)SIP線程及網(wǎng)絡(luò)轉(zhuǎn)狀態(tài)反饋線程,MUUDP2負(fù)責(zé)語(yǔ)音發(fā)送線程,MUUDP3負(fù)責(zé)語(yǔ)音接收線程,這樣可以有效地解決傳輸信息存在的丟包現(xiàn)象。
3.4 SIP信息處理模塊
當(dāng)主控在進(jìn)行組網(wǎng)語(yǔ)音通信時(shí),根據(jù)當(dāng)前所有電臺(tái)模擬器設(shè)置的工作參數(shù)進(jìn)行組網(wǎng),在主控服務(wù)器中生成模擬器會(huì)話會(huì)議號(hào),例如根據(jù)1號(hào)、5號(hào)、8號(hào)電臺(tái)模擬器設(shè)置的工作參數(shù)一致,建立組網(wǎng)號(hào)186001, 1、5、8號(hào)電臺(tái)模擬器就可以在構(gòu)建的網(wǎng)絡(luò)內(nèi)進(jìn)行語(yǔ)音交互通信。組網(wǎng)的過(guò)程一般包括創(chuàng)建組網(wǎng)、加入組網(wǎng)、退出組網(wǎng)、結(jié)束組網(wǎng)等步驟。
創(chuàng)建組網(wǎng)方式采用即時(shí)會(huì)議的形式進(jìn)行,首先主控服務(wù)器對(duì)每臺(tái)電臺(tái)模擬訓(xùn)練器工作參數(shù)進(jìn)行周期掃描,并進(jìn)行匹配對(duì)比,若發(fā)現(xiàn)電臺(tái)的工作參數(shù)有相同的組合,則即時(shí)生成新的會(huì)議號(hào)進(jìn)行組網(wǎng)。
加入組網(wǎng)方式采用Call—In方式,當(dāng)建立組網(wǎng)完成之后,主控利用即時(shí)消息的方式向具有相同工作參數(shù)的電臺(tái)模擬器終端發(fā)送相對(duì)應(yīng)的會(huì)議號(hào),各電臺(tái)模擬器終端根據(jù)接收到的會(huì)議號(hào),向主控發(fā)送INVITE消息,請(qǐng)求加入相對(duì)應(yīng)的會(huì)議號(hào),具體的流程如圖5所示。首先主控SIP服務(wù)器根據(jù)創(chuàng)建的會(huì)議號(hào)向模擬器客戶(hù)端提出邀請(qǐng)INVITE消息,帶有新的協(xié)商信息;然后模擬器客戶(hù)端回復(fù)200 OK,并將協(xié)商后的信息帶回;最后服務(wù)器發(fā)送ACK給模擬器客戶(hù)端進(jìn)行答復(fù),成功邀請(qǐng)新的成員加入組網(wǎng),即時(shí)可進(jìn)行語(yǔ)音通信。
退出組網(wǎng)模式是基于電臺(tái)模擬器工作參數(shù)的改變,當(dāng)某電臺(tái)的工作參數(shù)發(fā)生改變時(shí),該電臺(tái)模擬器需要向主控服務(wù)器發(fā)送BYE消息進(jìn)行申請(qǐng)退出當(dāng)前會(huì)議號(hào),服務(wù)器接收到BYE請(qǐng)求后,對(duì)該模擬器語(yǔ)音通信鏈路進(jìn)行切斷。
當(dāng)系統(tǒng)內(nèi)所有模擬器的工作參數(shù)不相同或退出組網(wǎng)模擬時(shí),組網(wǎng)結(jié)束,主控服務(wù)器會(huì)向所有模擬器終端發(fā)送BYE請(qǐng)求,中斷所有的組網(wǎng)。
4 系統(tǒng)測(cè)試
電臺(tái)模擬器訓(xùn)練系統(tǒng)主要有主控計(jì)算機(jī)、局域網(wǎng)、電臺(tái)模擬訓(xùn)練器組成,如圖6所示。其中把SIP的注冊(cè)服務(wù)器、代理服務(wù)器、位置服務(wù)器及重定向服務(wù)器安裝在一臺(tái)主控計(jì)算上,每一臺(tái)電臺(tái)模擬訓(xùn)練器都是基于ARM11的嵌入式SIP客戶(hù)終端,以局域網(wǎng)技術(shù)為依托,構(gòu)建電臺(tái)模擬訓(xùn)練系統(tǒng)強(qiáng)大的語(yǔ)音交互網(wǎng)。在模擬電臺(tái)通信過(guò)程中,主控計(jì)算機(jī)周期掃描模擬電臺(tái)訓(xùn)練器的工作參數(shù),用模擬器工作參數(shù)相同的組合構(gòu)建實(shí)時(shí)的語(yǔ)音通信網(wǎng),經(jīng)過(guò)測(cè)試,通信延時(shí)小于200ms,音質(zhì)清晰,能夠清楚分辨出發(fā)話人的語(yǔ)音特征,滿足了設(shè)計(jì)的要求。
5 結(jié)論
本文基于局域網(wǎng)通信技術(shù),利用SIP協(xié)議,構(gòu)建了電臺(tái)模擬訓(xùn)練系統(tǒng)的語(yǔ)音通信系統(tǒng),并在VC6.0平臺(tái)上編譯通過(guò),實(shí)現(xiàn)了多臺(tái)電臺(tái)模擬訓(xùn)練器之間的組網(wǎng)語(yǔ)音通信,通信效果良好,對(duì)電臺(tái)模擬器的語(yǔ)音仿真訓(xùn)練具有很強(qiáng)的實(shí)際參考價(jià)值。
參考文獻(xiàn):
[1]GNU Organization Stabs[Z]. 2004-10. http://sources.redhat.com/gdb/onlinedocs/stabs.html.
[2]魏春城.SIP協(xié)議的特點(diǎn)及應(yīng)用[J].電信科學(xué),2002, 18(9):64-66.
[3]楊俊智.基于IP的可視電話中H.263+編碼器的實(shí)現(xiàn)及其優(yōu)化[D].浙江大學(xué),2003.
[4] Wind River Systems Inc. Tornado API Guide 1.0.1[Z].Alameda,CA,2002.
本文來(lái)源于《電子產(chǎn)品世界》2017年第1期第56頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處。
評(píng)論