李少偉,施朝健,余立立
(1.同濟(jì)大學(xué)電子與信息工程學(xué)院,上海 201804;2.上海海事大學(xué)商船學(xué)院,上海 201306)
船用甚高頻(VHF)是海事語(yǔ)音通信中重要的組成部分,同時(shí)也是航海模擬器教學(xué)中重要的教學(xué)輔助設(shè)備。但是由于VHF各終端之間是通過(guò)無(wú)線電進(jìn)行數(shù)據(jù)交換,如果使用不當(dāng)完全可能造成無(wú)線電干擾而釀成災(zāi)難事故,故其使用受到各國(guó)無(wú)線電管理委員會(huì)的嚴(yán)格控制[1]。船用VHF仿真模擬器由于其不發(fā)射射頻無(wú)線電波,同時(shí)可以真實(shí)模擬VHF全部功能,現(xiàn)在已經(jīng)逐步成為航海模擬器教學(xué)中的標(biāo)準(zhǔn)組成模塊[2-3]。
上海海事大學(xué)余立立采用專用語(yǔ)音處理芯片的方式,設(shè)計(jì)了基于因特網(wǎng)的船用VHF模擬器[4]。這種方式采用專用語(yǔ)音處理芯片實(shí)現(xiàn)對(duì)語(yǔ)音數(shù)據(jù)的采集與處理,并將采集的數(shù)據(jù)通過(guò)單片機(jī)的RS232接口傳輸?shù)缴衔粰C(jī),再通過(guò)因特網(wǎng)傳輸?shù)竭h(yuǎn)程終端。一方面,由于增加了專用語(yǔ)音處理芯片,其生產(chǎn)成本必然有所增加;另一方面,由于芯片與因特網(wǎng)之間的數(shù)據(jù)交換是通過(guò)速度較慢的RS232接口中轉(zhuǎn)實(shí)現(xiàn)。本文選定的接口傳輸速率僅為19200kbps。根據(jù)奈奎斯特采樣定律,在8位采樣精度的情況下,其采樣效率為:
根據(jù)公式(1),系統(tǒng)能處理的語(yǔ)音帶寬僅為1200Hz,其效率較低,無(wú)法滿足實(shí)際需求。中國(guó)海洋大學(xué)丁峰等開(kāi)發(fā)了基于Flash的VHF模擬器系統(tǒng)[5],但其研究?jī)H停留在理論上,未有提及具體的實(shí)現(xiàn)方法且缺乏有效的結(jié)論,無(wú)法得知模擬器的最終實(shí)現(xiàn)效果;再者,純粹采用Flash軟件方法實(shí)現(xiàn)VHF模擬器必然缺乏真實(shí)感,會(huì)大大影響教學(xué)效果。
本文依托上海海事大學(xué)與上海海事局聯(lián)合研制項(xiàng)目“VTS值班人員操作、訓(xùn)練、評(píng)估系統(tǒng)”為研發(fā)平臺(tái),以上海吳淞海事處ATLAS 9760型VTS配套的VHF為仿真對(duì)象,設(shè)計(jì)一種跨平臺(tái)船、岸兩用VHF模擬器系統(tǒng)。模擬器軟硬件部分在頂層設(shè)計(jì)上實(shí)現(xiàn)船岸兩用VHF的功能復(fù)用,其在硬件上充分利用現(xiàn)有的計(jì)算機(jī)及網(wǎng)絡(luò)資源,在僅增加最少的人機(jī)交互硬件的基礎(chǔ)上,實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)的采集處理;軟件上以跨平臺(tái)開(kāi)發(fā)工具Qt為基礎(chǔ),實(shí)現(xiàn)軟件在不同操作系統(tǒng)上的代碼重用。模擬器總體結(jié)構(gòu)框如圖1所示。
圖1 模擬器系統(tǒng)結(jié)構(gòu)
VHF模擬器系統(tǒng)由人機(jī)交互硬件、上位機(jī)、配置文件以及計(jì)算機(jī)網(wǎng)絡(luò)組成。人機(jī)交互硬件以低成本、開(kāi)發(fā)簡(jiǎn)單的單片機(jī)作為核心處理單元,實(shí)時(shí)監(jiān)控用戶的各項(xiàng)操作,并將用戶操作經(jīng)過(guò)編碼后通過(guò)RS232接口傳輸?shù)缴衔粰C(jī)[6];上位機(jī)根據(jù)配置文件以及下位機(jī)當(dāng)前狀態(tài),利用計(jì)算機(jī)的硬件資源,實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)的采集、處理以及收發(fā)。圖2為模擬器系統(tǒng)工作流程圖。
從圖2可以看到,單片機(jī)在時(shí)鐘脈沖的驅(qū)動(dòng)下,周期性對(duì)各種按鍵進(jìn)行掃描,一旦發(fā)現(xiàn)有鍵按下,便將按鍵信息經(jīng)過(guò)編碼后發(fā)送到上位機(jī);上位機(jī)根據(jù)不同的按鍵信息,調(diào)用相應(yīng)的處理例程,實(shí)現(xiàn)對(duì)用戶操作的響應(yīng)。
圖2 模擬器工作流程圖
VHF模擬器硬件以51系列單片機(jī)作為核心處理單元[9],圍繞其設(shè)計(jì)收發(fā)開(kāi)關(guān)模塊、矩陣鍵盤(pán)模塊、音量調(diào)節(jié)模塊、液晶屏顯示模塊以及數(shù)據(jù)通信模塊。模擬器硬件組成如圖3所示。
圖3 硬件設(shè)備組成圖
根據(jù)圖3,模擬器硬件設(shè)備由5部分組成。這5部分為岸基及船載VHF模擬器所共有,其不同之處僅體現(xiàn)在硬件外觀以及按鍵數(shù)量上。所以在硬件設(shè)計(jì)上,2種模擬器可以實(shí)現(xiàn)除外觀以外的其他部分相互通用。根據(jù)圖3,VHF功能描述如下:
(1)單片機(jī)。系統(tǒng)的控制核心部件。
(2)串口模塊。負(fù)責(zé)硬件人機(jī)交,互硬件與上位機(jī)的數(shù)據(jù)通信。串口速率設(shè)定為9600kbps。
(3)顯示模塊。將系統(tǒng)當(dāng)前狀態(tài)以圖符的方式展示給用戶。
(4)矩陣鍵盤(pán)模塊。用以采集用戶對(duì)系統(tǒng)的功能選擇。岸基VHF模擬器外部鍵盤(pán)擁有32個(gè)按鍵,采用矩陣鍵盤(pán)的方式實(shí)現(xiàn)對(duì)輸入按鍵的處理,使用12路引腳資源實(shí)現(xiàn)對(duì)外部鍵盤(pán)的掃描。按照矩陣鍵盤(pán)理論,12路引腳最大可以對(duì)6×6的鍵盤(pán)進(jìn)行掃描,完全滿足系統(tǒng)需求;船載VHF模擬器外部?jī)H擁有6個(gè)按鍵,為了不改動(dòng)硬件設(shè)計(jì),對(duì)于岸基VHF模擬器中多出的26個(gè)按鍵,直接采取屏蔽的措施。
(5)A/D轉(zhuǎn)換模塊。采用電位器方式實(shí)現(xiàn)對(duì)音量的控制,采用A/D轉(zhuǎn)換模塊讀取電位器狀態(tài),調(diào)節(jié)系統(tǒng)音量。
為了減少硬件成本,本系統(tǒng)利用上位機(jī)中的聲卡芯片實(shí)現(xiàn)對(duì)語(yǔ)音的采集與回放[7]。語(yǔ)音數(shù)據(jù)的處理流程如圖4所示。
圖4 語(yǔ)音采集/播放流程
在跨平臺(tái)開(kāi)發(fā)工具Qt中已經(jīng)內(nèi)置有語(yǔ)音數(shù)據(jù)采集及播放接口,其實(shí)現(xiàn)名稱分別為QAudioInput和QAudioOutput[8]。為了接口能夠正常工作,在使用以上接口進(jìn)行語(yǔ)音數(shù)據(jù)處理前,傳輸如表1所示的參數(shù)以便對(duì)接口進(jìn)行初始化。
表1 語(yǔ)音采樣參數(shù)
采用多塊緩沖區(qū)的目的是為了在當(dāng)前緩沖區(qū)被寫(xiě)滿后,后備緩沖區(qū)快速切換,實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)的無(wú)縫記錄。在4塊緩沖區(qū)的狀態(tài)下,多緩沖區(qū)的切換原理如圖5所示。
圖5 語(yǔ)音數(shù)據(jù)緩沖區(qū)
由于跨平臺(tái)開(kāi)發(fā)工具Qt并未實(shí)現(xiàn)RS232串行通信口的數(shù)據(jù)收發(fā)功能,為了使程序代碼在不同的操作系統(tǒng)平臺(tái)下獲得支持,本文利用現(xiàn)代操作系統(tǒng)普遍具有的動(dòng)態(tài)鏈接庫(kù)特性,設(shè)計(jì)在不同操作系統(tǒng)下的串口操作代碼,并封裝在相應(yīng)的動(dòng)態(tài)庫(kù)中。
為了實(shí)現(xiàn)串口通信代碼的可移植性,軟件將不同操作系統(tǒng)的API經(jīng)過(guò)封裝后采用統(tǒng)一的接口引出,針對(duì)不同的操作系統(tǒng),使用C語(yǔ)言中的預(yù)定義宏#define加以區(qū)分。統(tǒng)一的接口操作函數(shù)如表2所示。
表2 通用串口操作函數(shù)
表2中,OpenPort函數(shù)接受唯一的整數(shù)型變量,用以標(biāo)識(shí)當(dāng)前需要操作的串口編號(hào);SetPort僅僅實(shí)現(xiàn)對(duì)波特率的設(shè)置,其參數(shù)為一整型變量,取值為常用的串口波特率;ReadPort/WritePort采用阻塞的方式實(shí)現(xiàn)串口讀寫(xiě)功能。為了不影響模擬器程序主線程部分的正常運(yùn)行,串行接口的數(shù)據(jù)收發(fā)必須單獨(dú)放在專門(mén)的線程中進(jìn)行。
由于局域網(wǎng)具有較大的網(wǎng)絡(luò)帶寬以及較小的網(wǎng)絡(luò)延時(shí),所以在將VHF模擬器應(yīng)用于局域網(wǎng)內(nèi)時(shí),沒(méi)有必要對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行壓縮。但是若將VHF模擬器應(yīng)用于基于互聯(lián)網(wǎng)的多模擬器系統(tǒng)中,那么在對(duì)語(yǔ)音數(shù)據(jù)發(fā)送以前,對(duì)語(yǔ)音數(shù)據(jù)的壓縮就顯得必不可少。
在本模擬器設(shè)計(jì)中,采用小波算法實(shí)現(xiàn)對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行壓縮[9-10],小波變換定義如下式:
稱為小波基函數(shù)。在此,選擇Harr正交小波基對(duì)樣本語(yǔ)音信號(hào)作三級(jí)小波包分解,然后進(jìn)行重構(gòu)。
圖6 原始數(shù)據(jù)時(shí)域/頻域幅值
圖7 重構(gòu)數(shù)據(jù)時(shí)域/頻域幅值
圖6為原始語(yǔ)音樣本數(shù)據(jù)的時(shí)域/頻域信息,圖7為經(jīng)過(guò)重構(gòu)后,語(yǔ)音數(shù)據(jù)的時(shí)域/頻域信息。從2幅圖的對(duì)比可以發(fā)現(xiàn),語(yǔ)音數(shù)據(jù)僅在高頻部分有微小的失真,人耳對(duì)聲音的分辨幾乎不會(huì)造成影響。
定義信號(hào)壓縮比:
其中,B為壓縮后的數(shù)據(jù),A為原始數(shù)據(jù),經(jīng)過(guò)計(jì)算,樣本數(shù)據(jù)壓縮比為0.515。由于樣本數(shù)據(jù)大多集中在低頻部分,若增加高頻部分的數(shù)據(jù)量,則壓縮比會(huì)有一定程度的增大,但樣本壓縮比不會(huì)有較大變化。
整個(gè)模擬器的運(yùn)行分為2部分:岸站VHF和船用VHF。如圖8所示為VHF模擬器的運(yùn)行結(jié)果。其中岸基VHF主要由海事行政單位(如海事局、海洋局等部門(mén))使用;船用VHF模擬器可以安裝在航海模擬器等培訓(xùn)設(shè)備中。兩者的組合可滿足當(dāng)前教學(xué)培訓(xùn)對(duì)VHF功能的全部需求。另外,由于以Qt[11-13]作為開(kāi)發(fā)平臺(tái),所以VHF模擬器可在不修改或少量修改源代碼的情況下,運(yùn)行于桌面Windows平臺(tái)、WinCE操作系統(tǒng)平臺(tái)以及Linux平臺(tái)。
圖8 模擬器的實(shí)現(xiàn)
在上海海事局的大力支持下,本模擬器系統(tǒng)已在上海吳淞海事處安裝完畢。本系統(tǒng)在軟硬件設(shè)計(jì)上很好地實(shí)現(xiàn)了船、岸VHF模擬器的功能復(fù)用。在Qt跨平臺(tái)工具的支持下,解決了軟件跨平臺(tái)的運(yùn)行障礙,有效地減少了系統(tǒng)的開(kāi)發(fā)時(shí)間。經(jīng)過(guò)一段時(shí)間的實(shí)際運(yùn)行,本模擬器運(yùn)行狀態(tài)良好,但是同時(shí)也不可避免地暴露出一些問(wèn)題。其中最主要的是錄制的聲音不夠清晰,據(jù)分析,這可能是由于系統(tǒng)的設(shè)計(jì)僅考慮了語(yǔ)音的數(shù)據(jù)壓縮,而忽略了語(yǔ)音質(zhì)量。在下一步的設(shè)計(jì)中,筆者會(huì)對(duì)這些問(wèn)題進(jìn)行改進(jìn)和完善。
[1]施朝健,陳錦標(biāo),胡勤友.船舶操縱模擬器開(kāi)發(fā)和應(yīng)用的全球協(xié)作[J].上海海事大學(xué)學(xué)報(bào),2007,28(1):1-6.
[2]施朝健,胡甚平,陳錦標(biāo).船舶操縱模擬器技術(shù)性能標(biāo)準(zhǔn)研究[J].上海海事大學(xué)學(xué)報(bào),2005,26(2):4-8.
[3]劉檢平,黃勇,周西柳.云計(jì)算科技服務(wù)系統(tǒng)平臺(tái)設(shè)計(jì)研究[J].科技通報(bào),2012,28(10):19-21.
[4]余立立,施朝健,黃震民,等.多模擬器集成的船用VHF通信仿真系統(tǒng)[J].上海海事大學(xué)學(xué)報(bào),2009,30(1):20-23.
[5]丁峰,魏偉.基于Flash Media Server實(shí)現(xiàn)VHF模擬器的語(yǔ)音通信[J].青島遠(yuǎn)洋船員學(xué)院學(xué)報(bào),2009,30(4):9-11.
[6]呂俊亞.一種基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)仿真,2012,29(7):230-233.
[7]李少偉,莊新慶.基于海事衛(wèi)星的語(yǔ)音數(shù)據(jù)通信模塊設(shè)計(jì)[J].中國(guó)航海,2008,31(2):114-116,134.
[8]Jasmin Blanchette,Mark Summerfield.C++GUI Programming with Qt 4(2nd Edition)[M].Canada:Prentice Hall PTR,2008.
[9]張璽君,王繼曾,藺瑩.基于小波變換的語(yǔ)音數(shù)據(jù)壓縮的研究[J].科學(xué)技術(shù)與工程,2009,9(2):272-276.
[10]崔靜,王雪梅.數(shù)字圖像壓縮算法的仿真與應(yīng)用研究[J].計(jì)算機(jī)仿真,2012,29(8):265-268.
[11]王勝正,施朝健,石永輝.新一代船舶操縱模擬器關(guān)鍵技術(shù)[J].上海海事大學(xué)學(xué)報(bào),2007,28(1):143-149.
[12]Duane Hanselman,Bruce Littlefield.Mastering Matlab 7[M].Beijing:Tsinghua University Press,2006.
[13]廖河樹(shù).大型船舶操縱模擬器的系統(tǒng)組成及分析[J].中國(guó)航海,2003,55(2):8-11,17.
[14]曾慶軍,周耀庭.綜合船橋系統(tǒng)研究的核心內(nèi)容[J].航海技術(shù),2001(4):24-27.