亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于QT的WiFi語音通信系統(tǒng)

        2012-09-21 10:43:50趙付軒楊斌
        關(guān)鍵詞:開發(fā)板服務(wù)器端內(nèi)核

        趙付軒,楊斌

        (西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 610031)

        引 言

        基于Internet的語音傳輸是一項應(yīng)用極其廣泛的技術(shù),傳統(tǒng)意義上的語音通信都以 Windows操作系統(tǒng)為平臺,而且采用有線電纜的方式進(jìn)行傳輸。目前隨著Linux桌面系統(tǒng)應(yīng)用的普及,特別是在手持嵌入式設(shè)備上的應(yīng)用,使得Linux上應(yīng)用軟件和系統(tǒng)的開發(fā)變得日益重要。Linux是完全開源的代碼體系,具有強大的網(wǎng)絡(luò)支持功能、各種硬件平臺的適用性以及完善的文檔和低廉的開發(fā)成本。隨著IEEE 802.11標(biāo)準(zhǔn)WiFi技術(shù)的興起,無線網(wǎng)絡(luò)便捷的特性在應(yīng)用嵌入式手持設(shè)備中得到充分體現(xiàn),而本設(shè)計正是基于Linux下無線網(wǎng)絡(luò)方式的語音信息終端,它可以滿足無線局域網(wǎng)內(nèi)端對端的語音對話需要。

        1 系統(tǒng)結(jié)構(gòu)設(shè)計

        整個系統(tǒng)由語音采集模塊、網(wǎng)絡(luò)收發(fā)模塊和語音處理模塊組成。語音采集模塊由采集終端ARM9開發(fā)板組成,負(fù)責(zé)對語音信號的采集、處理;網(wǎng)絡(luò)收發(fā)模塊負(fù)責(zé)開發(fā)板與語音處理模塊的數(shù)據(jù)報傳送;語音處理模塊負(fù)責(zé)語音信號的處理、存儲和播放功能。系統(tǒng)結(jié)構(gòu)如圖1所示。

        系統(tǒng)采用嵌入式Linux操作系統(tǒng),連入網(wǎng)絡(luò)并啟動任務(wù)后,ARM9開發(fā)板將話筒傳入的數(shù)據(jù)經(jīng)暫存后再將其封裝成IP包,由無線網(wǎng)接口發(fā)送到無線網(wǎng)絡(luò),同時解析接收到的語音包并由耳機送出,實現(xiàn)實時語音通信。

        圖1 系統(tǒng)結(jié)構(gòu)

        1.1 音頻采集

        音頻采集部分采用了ARM9開發(fā)板mini2440,應(yīng)用基于I2S總線的UDA1341采集芯片,將采集到的音頻信號轉(zhuǎn)化為PCM碼格式保存下來,并送入SDRAM內(nèi)進(jìn)行存儲。語音信號的系統(tǒng)采樣頻率為16ks/s,開發(fā)板每秒發(fā)送50個包,解碼每個包PCM數(shù)據(jù)的長度為640個字節(jié)。

        1.2 TCP/IP協(xié)議分析

        在嵌入式系統(tǒng)中實現(xiàn)的TCP/IP協(xié)議都是面向數(shù)據(jù)采集和傳輸?shù)模源蟛糠謱崿F(xiàn)都是IP協(xié)議、ARP協(xié)議、UDP協(xié)議或者是TCP協(xié)議。本文完成的是IP協(xié)議、ARP協(xié)議和UDP協(xié)議。協(xié)議棧結(jié)構(gòu)如圖2所示。

        圖2 協(xié)議棧結(jié)構(gòu)

        1.3 UDP協(xié)議的實現(xiàn)

        UDP用戶數(shù)據(jù)報協(xié)議可以實現(xiàn)網(wǎng)絡(luò)上發(fā)送和接收數(shù)據(jù),它實際上是直接利用IP協(xié)議進(jìn)行數(shù)據(jù)報的傳輸,UDP的數(shù)據(jù)傳輸不建立連接,不保證可靠交付,不需要維護(hù)復(fù)雜的鏈接狀態(tài)表。它不對要發(fā)送的數(shù)據(jù)進(jìn)行緩沖,直接把應(yīng)用層收到的數(shù)據(jù)加上UDP首部發(fā)送出去。這對于編寫簡單的請求/響應(yīng)模式的應(yīng)用是很方便的,而且利用UDP協(xié)議對傳輸速率也沒有太大影響。

        1.4 服務(wù)端和客戶端程序?qū)崿F(xiàn)

        系統(tǒng)程序設(shè)計分為客戶端和服務(wù)器端程序設(shè)計,客戶端完成數(shù)據(jù)采集后發(fā)送給PC機,服務(wù)器端完成數(shù)據(jù)的接收、存儲和播放工作。本設(shè)計采用UDP協(xié)議、Socket編程方式。程序流程如圖3所示。

        圖3 程序流程圖

        1.5 通信模式

        1.5.1 單工通信

        消息只能單方向傳輸,發(fā)送端和接收端是固定的,發(fā)送端只能發(fā)送信息,不能接收信息;接收端只能接收信息,不能發(fā)送信息。語音信號僅從一端傳送到另一端,信息流是單方向的。本設(shè)計所實現(xiàn)的是單工通信方式。單工模式的實時語音通信模式如圖4所示。

        單工模式的實時語音通信,由一對程序AudioServer(服務(wù)器端)和AudioClient(客戶端)來完成。這兩個程序需要在一臺主機上首先運行AudioServer,然后在另外一臺主機上運行AudioClient。在AudioClient端用麥克風(fēng)說話,在AudioServer端能聽到說話內(nèi)容。

        圖4 單工模式的實時語音通信模式

        1.5.2 半雙工通信

        語音信號可以沿兩個方向傳輸,通信系統(tǒng)的每一端都可以發(fā)送和接收數(shù)據(jù),但兩個方向不能同時發(fā)送數(shù)據(jù),必須交替進(jìn)行。在QT中可以創(chuàng)建兩個套接字和兩個線程來實現(xiàn)數(shù)據(jù)的雙向傳輸,但為了避免這兩個線程出現(xiàn)競爭,需要引入線程互斥與同步對其進(jìn)行協(xié)調(diào)。繼承QThread類可以創(chuàng)建線程,重寫虛函數(shù)run()即可。QMutex類的lock()函數(shù)可以實現(xiàn)對一端只能進(jìn)行讀或?qū)?,即半雙工通信。

        1.5.3 全雙工通信

        通信的任意時刻,線路上存在A到B和B到A的雙向信號傳輸。全雙工通信允許數(shù)據(jù)同時在兩個方向上傳輸,又稱為雙向同時通信,即通信的雙方可以同時發(fā)送和接收數(shù)據(jù)。這樣在QT中創(chuàng)建兩個套接字和兩個線程來實現(xiàn)數(shù)據(jù)的雙向傳輸即可。繼承QThread類可以創(chuàng)建線程,重寫虛函數(shù)run()即可。

        2 系統(tǒng)硬件設(shè)計

        本設(shè)計采用Friendly ARM Mini2440開發(fā)板,該開發(fā)板CPU采用Samsung S3C2440A處理器,主頻400MHz,最高533MHz,具有豐富的內(nèi)外設(shè)資源。

        2.1 配置USB無線網(wǎng)卡驅(qū)動

        本開發(fā)板采用 Linux-2.6.32.2內(nèi)核,它已包含了多種型號的USB無線網(wǎng)卡驅(qū)動,其中包括目前流行的、性價比高的TP-Link USB WiFi無線網(wǎng)卡。

        2.2 音頻接口

        本開發(fā)板采用基于I2S總線的UDA1341芯片實現(xiàn)音頻解碼,該芯片內(nèi)部寄存器的初始化和設(shè)置采用L3-bus總線連接控制器實現(xiàn)。音頻系統(tǒng)的輸出為開發(fā)板上常用的3.5mm孔徑插座。輸入分為兩路,一路為板載麥克風(fēng),另一路通過CON10白色2.0mm插座引出。

        3 系統(tǒng)軟件設(shè)計

        本系統(tǒng)軟件可以分為3個功能模塊:語音信息處理模塊、無線通信模塊和QT控制模塊。其中QT控制模塊負(fù)責(zé)圖形界面顯示和人機接口控制。為了便于實現(xiàn)系統(tǒng)管理,采用基于Linux操作系統(tǒng)的應(yīng)用程序開發(fā)模式,操作系統(tǒng)內(nèi)核則選用Linux-2.6.32.2版本。系統(tǒng)程序流程如圖5所示。

        圖5 系統(tǒng)程序流程圖

        3.1 語音信息處理模塊

        聲音的錄制和播放,即要實現(xiàn)往麥克風(fēng)里說話時能夠在耳塞里聽到說話的內(nèi)容。首先是打開聲音設(shè)備/dev/audio,并設(shè)置采樣的量化位數(shù)、聲道數(shù)目、采樣頻率;接著從聲卡里讀話音數(shù)據(jù)(錄制聲音),并存放到一個緩沖區(qū)里;然后把剛剛讀入的話音數(shù)據(jù)往聲卡里寫(播放聲音)。

        (1)設(shè)置采樣的量化位數(shù)、聲道數(shù)目、采樣頻率

        (2)設(shè)置PCM編碼方式

        (3)讀取聲卡

        在客戶端,把錄制下來的聲音存放在一個比較大的緩沖區(qū)里,然后發(fā)送出去;服務(wù)器端收到后,播放該數(shù)據(jù)就可以了。

        實時語音通信需要聲音連續(xù)、清晰。于是在客戶端,要不停地把錄制下來的聲音數(shù)據(jù)發(fā)送出去;在服務(wù)器端,不停地把接收到的話音數(shù)據(jù)播放出來。這里涉及到如何選擇緩沖區(qū)大小的問題。如果緩沖區(qū)太大,錄制聲音的時間過長,而且sendto()函數(shù)不能夠一次發(fā)送完數(shù)據(jù),這樣會影響聲音的連續(xù)性和完整性。經(jīng)過多次測試和調(diào)整,最后取緩沖區(qū)的大小為1 024字節(jié)。

        3.2 無線通信模塊

        無線通信模塊相關(guān)程序如下所示。

        (1)建立UDP套接字并綁定對方IP

        客戶端:

        服務(wù)器端:

        (2)客戶端和服務(wù)器端數(shù)據(jù)報收發(fā)

        設(shè)置緩沖區(qū):

        客戶端發(fā)送數(shù)據(jù):

        服務(wù)器端接收數(shù)據(jù):

        播放語音:

        3.3 QT控制模塊

        QT是一款跨平臺的C++圖形用戶界面應(yīng)用程序框架,具有優(yōu)良的封裝機制和高度的模塊化結(jié)構(gòu),只需在一個平臺下編寫,就可在多個平臺下編譯運行,可移植性很強。本設(shè)計采用4.5.3版 Qt-x86和 Qt-arm分別進(jìn)行界面和程序的設(shè)計與編譯。

        在完成必要的軟硬件初始化后,系統(tǒng)進(jìn)入QT界面控制程序,QT界面控制程序?qū)崿F(xiàn)兩大功能:

        ①語音編解碼處理。語音信號的處理通過DSP內(nèi)核完成。采集終端負(fù)責(zé)語音編碼處理,此時DSP內(nèi)核采用雙緩存機制保存ARM9送入的本地語音數(shù)據(jù),然后送給ARM9內(nèi)核。

        ② 無線語音和聲卡數(shù)據(jù)的收發(fā)。它由ARM9內(nèi)核完成。ARM9內(nèi)核與DSP內(nèi)核的通信通過DSP Gateway雙核通信機制方式實現(xiàn),由ARM9內(nèi)核負(fù)責(zé)控制。對于語音編碼,ARM9負(fù)責(zé)把UDA1341采集的緩存數(shù)據(jù)寫入到DSP的編碼器中,編碼完的數(shù)據(jù)放入發(fā)送緩存單元。當(dāng)發(fā)送緩沖區(qū)放滿之后,ARM端就會將數(shù)據(jù)通過網(wǎng)口發(fā)送出去。

        4 系統(tǒng)性能測試

        性能測試系統(tǒng)的有效帶寬是保證用戶語音通話的前提?;赨DP的傳輸速度,兩點間的平均速度可達(dá)3.4 Mbps。這個實時語音通信軟件的功能是實現(xiàn)端到端的實時語音聊天。也就是說當(dāng)A與B在進(jìn)行語音聊天時,A不能同時與C進(jìn)行語音聊天。A只能先斷開與B的語音聊天,然后才可以與C進(jìn)行語音聊天。

        4.1 界面實現(xiàn)

        語音聊天的QT界面設(shè)計如圖6、圖7所示。

        圖6 服務(wù)器端界面

        圖7 客戶端界面

        4.2 語音質(zhì)量測試

        通過開發(fā)板的話筒講話,在PC端能清晰聽到語音。通過在PC機上專業(yè)軟件對收到的語音信號進(jìn)行分析,該語音系統(tǒng)在采樣頻率8 000~192 000Hz時均能正常工作。測試結(jié)果表明語音發(fā)送和接收正常,整個系統(tǒng)的功能與性能基本達(dá)到設(shè)計要求。另外,該設(shè)計還增加了語音存儲功能,能夠?qū)υ捳Z音保存成本地文件,以便重復(fù)收聽,能夠較好地應(yīng)用到具體的工程項目中。

        結(jié) 語

        本文在成熟的嵌入式Linux操作系統(tǒng)下,采用QT跨平臺的C++圖形用戶界面應(yīng)用程序框架,設(shè)計了基于WiFi的語音通信系統(tǒng)。該系統(tǒng)可以實現(xiàn)較高的語音通話質(zhì)量,能在多個平臺下編譯運行,可移植性很強。

        [1] 蔡志明,盧傳富,李立夏.精通Qt4編程[M].北京:電子工業(yè)出版社,2008.

        [2] 宋敬彬,孫海濱.Linux網(wǎng)絡(luò)編程[M].北京:清華大學(xué)出版社,2010.

        [3] 胥光輝,張濤譯.TCP/IP協(xié)議詳解(卷1:協(xié)議)[M].北京:機械工業(yè)出版社,2000.

        [4] 廣州友善之臂計算機科技有限公司.FriendlyARM mini2440用戶手冊,2010.

        [5] 溫斌澤.VOIP:IP語音技術(shù)[M].北京:機械工業(yè)出版社,2000.

        猜你喜歡
        開發(fā)板服務(wù)器端內(nèi)核
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護(hù)機制研究
        淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
        成功(2018年10期)2018-03-26 02:56:14
        Microchip最新推出兩款PIC32 Curiosity開發(fā)板
        淺析單片機開發(fā)板的設(shè)計與制作
        電子制作(2017年22期)2017-02-02 07:10:14
        在Windows中安裝OpenVPN
        Mouser為您呈上開發(fā)關(guān)鍵之STMicroelectronics Nucleo開發(fā)板
        Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
        麻豆视频在线播放观看| 亚洲国产99精品国自产拍| 日韩av一区二区三区四区av| 伊人影院在线观看不卡| 亚洲AV激情一区二区二三区| 亚洲成a人片在线观看中| 国产激情视频在线观看首页| 亚洲av手机在线网站| 精品国产乱码久久久久久婷婷| 国产在线精品成人一区二区三区 | 亚洲av成人一区二区三区av| 欧美成人网视频| 日本韩国一区二区高清| 日本一区二区三区视频在线观看| 777米奇色8888狠狠俺去啦| 无码人妻品一区二区三区精99| 国产做床爱无遮挡免费视频| 香蕉蜜桃av一区二区三区| 国产一区国产二区亚洲精品| 国产精品兄妹在线观看麻豆| 久久久久亚洲精品无码网址| 91极品尤物在线观看播放| 青草草视频在线观看华人免费| 中文字幕一区二区三区四区五区| 日本高清视频www| 精品人妻无码中文字幕在线| 中文字幕一区二区三区在线乱码| 久草手机视频在线观看| 成人精品天堂一区二区三区| 全免费a级毛片| bbbbbxxxxx欧美性| 亚洲乱码中文字幕三四区 | 国产激情无码一区二区三区| 丰满爆乳一区二区三区| 亚洲欧洲日产国码无码av野外| 免费人妻精品一区二区三区| 久久久久九九精品影院| 97久久精品午夜一区二区| 国产人澡人澡澡澡人碰视频| 亚洲精品国产一二三无码AV| 丝袜美腿久久亚洲一区|