嵌入式網(wǎng)絡(luò )終端的語(yǔ)音傳輸系統設計分析
2011/02/22
摘要:根據嵌入式網(wǎng)絡(luò )終端的特點(diǎn)及VOIP技術(shù)原理,設計了一款基于WinCE的嵌入式語(yǔ)音傳輸系統。此系統實(shí)現了嵌入式網(wǎng)絡(luò )終端之間的語(yǔ)音通信,以及網(wǎng)絡(luò )終端和PC機之間的語(yǔ)音通信功能,具有較強的可擴展性。
關(guān)鍵詞:嵌入式網(wǎng)絡(luò )終端;語(yǔ)音;VOIP;WinCE
引言
嵌入式系統因其滿(mǎn)足系統對功能、可靠性、成本、體積、功耗的要求,已經(jīng)被廣泛地應用在交通、商業(yè)/金融、工業(yè)控制、醫療等各個(gè)領(lǐng)域。目前,嵌入式網(wǎng)絡(luò )應用技術(shù)已經(jīng)成為了國際研究的熱點(diǎn)技術(shù),許多IT行業(yè)的公司也都在研發(fā)相應的嵌入式網(wǎng)絡(luò )終端。
電話(huà)是人們最常使用的交流工具,隨著(zhù)互聯(lián)網(wǎng)的迅速發(fā)展,基于IP網(wǎng)絡(luò )的語(yǔ)音通信成為了人們研究的熱點(diǎn)。傳統電話(huà)的語(yǔ)音傳輸質(zhì)量和可靠性都很好,但資費較高,特別是打國際長(cháng)途時(shí);而基于IP網(wǎng)絡(luò )的語(yǔ)音通信由于是在Internet上傳輸信號,大大節省了通信線(xiàn)路的成本,從而降低了VOIP資費,使其擁有了巨大的市場(chǎng)潛力。
目前,VOIP系統現有的終端軟件,如Skype網(wǎng)絡(luò )電話(huà)、UUCall網(wǎng)絡(luò )電話(huà)、KC網(wǎng)絡(luò )電話(huà)、Mierosoft公司的Netmeeting等,都是基于PC機的,難以運行在嵌入式網(wǎng)絡(luò )終端這種資源有限的設備上。同時(shí),許多類(lèi)庫中的函數在PC機上可以正常運行,而WinCE嵌入式操作系統卻不支持,因此不能直接對VOIP系統現有的終端軟件進(jìn)行簡(jiǎn)單的裁剪。
1.嵌入式網(wǎng)絡(luò )終端的硬件設計
1.1 系統硬件結構
如圖1所示,系統由嵌入式網(wǎng)絡(luò )終端、電源模塊、以太網(wǎng)口模塊、串口和USB接口模塊、顯示模塊(觸摸屏)、語(yǔ)音采集和播放模塊、外部數據存儲模塊以及系統工作狀態(tài)指示和接口模塊構成。其中,嵌入式網(wǎng)絡(luò )終端采用三星公司專(zhuān)門(mén)針對手持設備而設計的S3C2440A-40微處理器。
1.2 語(yǔ)音采集和播放模塊
語(yǔ)音采集和播放模塊的作用是將音頻模擬信號轉換為數字信號,并對信號進(jìn)行PCM編碼。其電路如圖2所示。采用Philips公司的UDA1341 TS型立體聲音頻CODEC進(jìn)行音頻編解碼。該芯片提供2個(gè)麥克風(fēng)輸入,可實(shí)現單端輸入、差分輸入等靈活配置,并設置了可編程增益放大器和自動(dòng)增益控制器,可保證高質(zhì)量的音頻獲取;同時(shí),還集成了聽(tīng)筒和喇叭輸出的驅動(dòng)器,喇叭音量可以通過(guò)編程調整。S3C2440A-40微處理器與UDA1341TS編解碼器通過(guò)I2S總線(xiàn)直接相連,并采用DMA發(fā)送/接收方式,完成系統的錄音和放音。
1.3 嵌入式操作系統
嵌入式操作系統采用了微軟公司研發(fā)的WinCE。它是一款功能強大的32位嵌入式實(shí)時(shí)操作系統,具有多線(xiàn)程、多任務(wù)、完全搶占式的特點(diǎn),是專(zhuān)為各種受到嚴格資源限制的硬件系統所設計的。WinCE支持多種硬件外圍設備,同時(shí)內置的標準通信能力使WinCE能夠訪(fǎng)問(wèn)Internet并收發(fā)E-mail或瀏覽Web。除此之外,WinCE特有的與Windows類(lèi)似的用戶(hù)界面使最終用戶(hù)易于使用。
2.VOIP技術(shù)
2.1 VOIP的基本原理
VOIP(Voice Over Internet Protocol)是以IP分組交換網(wǎng)絡(luò )為傳輸平臺,通過(guò)語(yǔ)音壓縮算法對語(yǔ)音數據進(jìn)行壓縮編碼處理,然后把這些語(yǔ)音數據按IP等相關(guān)協(xié)議進(jìn)行打包,經(jīng)過(guò)IP網(wǎng)絡(luò )把數據包傳輸到接收地,再把這些語(yǔ)音數據包串起來(lái),經(jīng)過(guò)解碼解壓處理后恢復成原來(lái)的語(yǔ)音信號,從而達到由IP網(wǎng)絡(luò )傳送語(yǔ)音的目的。其特點(diǎn)是可以將一路語(yǔ)音數據壓縮為8
kb/s甚至更低,同時(shí)可使用戶(hù)不需要獨占醫療線(xiàn)路資源,從而提高了線(xiàn)路利用率,并大大降低了資費成本。
2.2 VOIP協(xié)議
VOIP技術(shù)中最主要的兩種呼叫控制協(xié)議為H.323協(xié)議和SIP協(xié)議。H.323是ITU的一個(gè)標準協(xié)議簇,制定了無(wú)服務(wù)質(zhì)量保證的分組網(wǎng)絡(luò )(PBN)上的多媒體通信系統標準,已在VOIP領(lǐng)域的到了廣泛的應用,呼叫建立比較復雜。SIP協(xié)議是由IETF(國際互聯(lián)網(wǎng)標準制定組織)制定的面向Internet會(huì )議和電話(huà)的信令協(xié)議,參照了HTTP和SMTP協(xié)議,呼叫控制在終端完成,呼叫建立相對簡(jiǎn)單。
2.3 語(yǔ)音壓縮編碼技術(shù)
語(yǔ)音壓縮編碼技術(shù)是VOIP技術(shù)的核心,其目的就是在保證語(yǔ)音音質(zhì)和可懂的條件下,采用盡可能少的比特數來(lái)表示語(yǔ)音。常用的語(yǔ)音編碼方式有G.723.1、G.729、G.729A等,其中G.729可將采樣為64
kb/s的話(huà)音以幾乎不失真的質(zhì)量壓縮至8kb/s。本設計采用了G.729方式的語(yǔ)音壓縮算法,結合實(shí)時(shí)傳輸協(xié)議RTP和UDP網(wǎng)絡(luò )傳輸技術(shù)來(lái)實(shí)現語(yǔ)音傳輸。
3.系統設計
3.1 終端軟件的功能模塊
終端軟件功能模塊如圖3所示。此終端軟件可為用戶(hù)提供良好的交互界面。
3.2 VOIP終端軟件主流程
用戶(hù)打開(kāi)終端軟件,可以根據自己的需要選擇語(yǔ)音聊天、文本聊天或者收發(fā)郵件。進(jìn)行語(yǔ)音聊天前,用戶(hù)可以直接在好友欄中選擇聊天對象,也可直接輸入對方的IP進(jìn)行連接。語(yǔ)音聊天的過(guò)程是:說(shuō)話(huà)方,麥克風(fēng)采集模擬語(yǔ)音信號→語(yǔ)音芯片采集量化編碼→嵌入式系統對信號進(jìn)行壓縮編碼→RTP格式打包→UDP格式打包→IP格式打包→Internet網(wǎng)絡(luò )傳輸;收聽(tīng)方,接收語(yǔ)音數據→去IP/UDP/RTP包頭→嵌入式系統對信號解碼→語(yǔ)音芯片將數字語(yǔ)音信號轉為模擬信號→揚聲器播放。
4.系統實(shí)現
4.1 語(yǔ)音采集和播放
語(yǔ)音信號的采集分為從網(wǎng)絡(luò )上采集數據和從音頻編解碼器中獲取數據。主要函數包括:語(yǔ)音采集函數VoiceCapture(),用線(xiàn)程控制語(yǔ)音采集函數Thread
Voice Capture(),創(chuàng )建用于播放的音頻設備對象函數Play Device(),創(chuàng )建音頻捕捉設備對象函數Caputer Device(),創(chuàng )建音頻捕捉緩沖區對象函數Capture
Buffer(),創(chuàng )建輔助緩沖區函數Secondary Buffer(),音頻格式設置函數Set Wave Format(),通知事件觸發(fā)函數Notification(),停止語(yǔ)音采集函數Voice
Stop(),從字節數組中獲取音頻數據并進(jìn)行播放函數Get VoiceData()以及語(yǔ)音采集初始化函數Initialize Voiee()。
4.1.1 Get Voice Data()函數
具體流程如圖4所示。從網(wǎng)絡(luò )上獲取的數據實(shí)際是由Local Socket.Begin Receive From()函數提取網(wǎng)絡(luò )數據,再經(jīng)接收數據函數轉移給Get
Voice Data()函數,Get Voice Data()函數提取后放入語(yǔ)音緩沖區供音頻編解碼器提取并播放。Get Voice Data()函數首先用支持存儲區為內存的流Memory
Stream從緩沖區讀取數據byte Receive,將字節塊寫(xiě)入當前流:
Memory Stream.Write(byte Receive,0,intReceive)
當流中存儲的數據達到一定數據量時(shí)就播放語(yǔ)音:SecondaryBuffer.Write(0,Memory Stream,int Postion
Write-in-tPostioPlay,LockFlag.From Write Cursor)Secondary Buffer.Play(0,Buffer
Play Flags.Default)
4.1.2 采集音頻編碼器語(yǔ)音數據
從音頻編解碼器中獲取數據時(shí),首先通過(guò)UDA1341TS采集語(yǔ)音信號放入語(yǔ)音捕捉緩存區,應用程序再從語(yǔ)音捕捉緩沖獲取語(yǔ)音信號并發(fā)送。具體程序流程如圖5所示。
4.2 語(yǔ)音傳輸
語(yǔ)音傳輸是主要包含監聽(tīng)函數Listen(),數據發(fā)送函數SendVoice(),數據接收函數Receive Data(),綁定自己IP和端口函數BindSelf(),遠程終端IP端口設置函數SetRemoteIPEnd()、線(xiàn)程關(guān)閉函數ThreadStop()函數和初始化函數InitVoice()。
4.2.1 監聽(tīng)函數
監聽(tīng)函數負責監聽(tīng)遠程計算機發(fā)送到本機的信息。每隔一定時(shí)間查詢(xún)一下網(wǎng)絡(luò ),如果有可讀的數據就接收:LocalSocket.BeginRecei-veFrom(byteData,0,byteData.Length,SocketFlags.None,ref
endPoint,new AsyncCallback(ReceiveData),null)并且將此線(xiàn)程設置為后臺線(xiàn)程,以便當主線(xiàn)程關(guān)閉時(shí),此線(xiàn)程能自動(dòng)結束。
4.2.2 數據發(fā)送函數
數據發(fā)送函數的作用是將語(yǔ)音捕捉緩沖區的數據通過(guò)Client.SendTo(CaptureData,EndPoint)函數發(fā)送到網(wǎng)絡(luò )上。當線(xiàn)程發(fā)現有數據要讀取(即線(xiàn)程被觸發(fā))時(shí),就會(huì )循環(huán)調用數據發(fā)送函數,直到?jīng)]有可讀的數據為止。CaptureBuffer為語(yǔ)音捕捉緩沖區對象。數據發(fā)送流程如圖6所示。
4.2.3 數據接收函數
數據接收函數的功能主要是調用GetVoiceData()函數從網(wǎng)絡(luò )中接收語(yǔ)音數據并放入緩沖區。代碼如下:

結語(yǔ)
以Internet為標志的嵌入式系統是嵌入式系統發(fā)展的第四階段。本文在基于A(yíng)RM+網(wǎng)卡芯片+UDA1341TS音頻編解碼芯片模式的硬件平臺實(shí)現與網(wǎng)絡(luò )資源的對接及語(yǔ)音采集和播放的基礎上,開(kāi)發(fā)了基于WinCE嵌入式操作系統的VOIP系統終端軟件,實(shí)現了網(wǎng)絡(luò )終端間的語(yǔ)音通信。
電子工程世界
相關(guān)閱讀:
亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩
南开区|
科尔|
芒康县|
嵊州市|
札达县|
临湘市|
景宁|
修文县|
广宁县|
广河县|
沁阳市|
昭平县|
平和县|
青冈县|
桃园市|
察隅县|
柘荣县|
读书|
阿勒泰市|
礼泉县|
阜南县|
响水县|
三亚市|
新巴尔虎右旗|
独山县|
濮阳县|
阜平县|
桂阳县|
青河县|
隆昌县|
吕梁市|
泾阳县|
九台市|
延津县|
贡觉县|
汉阴县|
军事|
建昌县|
永安市|
卓资县|
陕西省|
http://444
http://444
http://444
http://444
http://444
http://444