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