即時消息系統的設計與實現語音通訊模塊的實現(畢業論文)_第1頁
即時消息系統的設計與實現語音通訊模塊的實現(畢業論文)_第2頁
即時消息系統的設計與實現語音通訊模塊的實現(畢業論文)_第3頁
即時消息系統的設計與實現語音通訊模塊的實現(畢業論文)_第4頁
即時消息系統的設計與實現語音通訊模塊的實現(畢業論文)_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、摘要:摘要:.3 abstract:.3 第一章第一章 引言引言.4 1.1 論文背景 .4 1.2 國內外研究現狀及發展趨勢 .5 1.2.1 研究現狀.5 1.2.2 發展趨勢.5 第二章第二章 關鍵技術關鍵技術.7 2.1 xmpp 協議.7 2.1.1 xmpp 協議簡介.7 2.1.2 xmpp 協議基本網絡結構.7 2.1.2 選擇 xmpp 協議的理由.7 2.2 網絡通信協議.8 2.3 socket網絡編程.9 2.4 音頻捕獲技術.9 2.5 音頻回放技術.9 2.6 音頻采樣技術.10 2.7 音頻壓縮/解壓技術.10 2.8 p2p 技術.10 第三章第三章 語音通訊系

2、統的分析語音通訊系統的分析.11 3.1 語音通訊系統可行性分析 .11 3.2 語音通訊系統需求分析 .11 3.2.1 項目總述.12 3.2.2 市場需求分析.12 3.2.3 用戶需求分析.12 3.2.4 軟件性能要求.13 3.2.5 軟件功能需求.13 3.3 語音通訊系統流程分析 .14 3.4 語音通訊系統數據流圖 .15 第四章第四章 語音通訊系統的設計語音通訊系統的設計.17 4.1 系統結構.17 4.2 開發工具.17 4.3 流程設計.18 4.4 語音通訊系統總體設計.19 4.5 語音通訊系統詳細設計.19 4.5.1 登錄模塊.19 4.5.2 建立連接模塊.

3、20 4.5.3 音頻捕獲模塊.21 4.5.4 音頻回放模塊.23 第五章第五章 語音通訊系統的實現語音通訊系統的實現.26 5.1 構建語音通訊系統的用戶登錄系統.26 5.2 連接建立模塊的實現.26 5.2.1 麥克風相關操作.26 5.2.2 建立通信連接.28 5.3 音頻捕獲模塊.32 5.3.1 確定音頻格式.32 5.3.2 建立音頻捕獲對象并為其分配緩沖區.32 5.3.3 打開錄音設備.33 5.3.4 開始錄音.33 5.3.5 音頻壓縮并發送給遠程主機.33 5.3.6 結束錄音.34 5.4 音頻回放模塊的實現.35 5.4.1 確定音頻格式.35 5.4.2 建立

4、音頻回放對象.35 5.4.3 循環接收音頻數據.35 5.4.4 打開回放設備.36 5.4.5 音頻解壓并回放.37 5.4.6 結束回放.37 5.5 常用結構體定義及介紹.38 5.5.1 wavehdr.38 5.5.2 waveformatex.38 5.6 常用winmm.dll方法參數介紹.38 5.6.1 waveoutopen.39 5.6.2 waveinopen.39 5.6.3 waveoutwrite.39 5.6.4 waveoutprepareheader.40 5.6.5 waveinaddbuffer.40 5.7 本系統的開發難點與解決技巧.40 5.7.

5、1 通信連接的建立.40 5.7.2 語音捕獲、壓縮、解壓、回放.41 5.7.3 音量大小的調節.41 5.7.4 委托、回調和異步.41 結結 語語.42 參考文獻參考文獻: :.43 致致 謝謝.44 即時消息系統的設計與實現即時消息系統的設計與實現-語音通訊模塊的實現語音通訊模塊的實現 劉永忠 西南大學計算機與信息科學學院,重慶 400715 摘要:摘要:本論文主要討論了語音通訊系統的研究與實現,筆者在探討即時通訊系統在國內外研究現狀 及發展趨勢的基礎上,結合當前計算機技術的發展情況,選擇使用了vistudio 2005開發環境和當 前比較流行的c#編程語言,結合語音捕獲和回放相關知識

6、和socket相關知識開發了此語音通訊系統。 本系統主要包括連接建立、音頻捕獲、音頻回放三大模塊,實現了用戶登錄、通信連接建立、音頻 數據捕獲、數據壓縮與發送、數據接收及解壓、音頻數據回放等功能,重點介紹了通信連接建立、 音頻數據捕獲和回放的實現。在實現方法上,主要采用面向對象編程基本思想,利用c#編程語言將 系統分為接口類、音頻捕獲類、音頻回放類、音頻壓縮與解壓類和異常處理類,再加一個公用的結 構體類進行實現,并采用了現代比較流行的xmpp協議進行消息發送和建立其語音連接,通過socket 技術實現最終音頻數據的發送和接收。最后,本論文對基于c#技術的語音通訊系統的開發設計進行 了總結和展望

7、。 關鍵字:關鍵字:音頻捕獲;音頻回放;音頻數據壓縮;xmpp協議; instant messaging system design and implementation -the implementation of audio communications module liu yongzhong computer and information science college of southwest university, chongqing 400715, china abstract: this thesis mainly discuss the research and imple

8、mentation of audio communication system. based on the research and development trend of instant messaging at home and abroad, combine with the current computer technology, the author use visual studio 2005 development environment, c# programming language, audio capture and playback technology, as we

9、ll as the relevant knowledge of socket develop the audio communication system. this system mainly introduce three modules,including the connection establishment, audio capture, and audio playback , as well as the detailed implementation of the user log on ,the establishment of communication links, a

10、udio data capture, data compression and transmission, data reception and decompression, audio data playback and so on, focusing on the implementation of the establishment of communication links, audio data capture and playback. on the realization, mainly using basic idea of object-oriented programmi

11、ng, and c# programming language to divide the system into some classes as interface,audio caputure,audio playback,audio compression and decompression, exception handler, and a common type of structure, then use xmpp messaging protocol to establish the audio connections, send and receive data via soc

12、ket technique. finally, the thesis summarize and outlook the development and design of c#-based audio communication systems. key word: audio capture;audio playback;voice data compression;xmpp protocol 第一章第一章 引言引言 1.11.1 論文背景論文背景 隨著移動互聯網的發展,即時通信技術也得到飛速的發展。自 1998 年面世以來, 特別是近幾年的迅速發展,即時通信的功能日益豐富,逐漸集成了電子

13、郵件、博客、 音樂、電視、游戲和搜索等多種功能。即時通信不再是一個單純的聊天工具,它已經 發展成集交流、資訊、娛樂、搜索、電子商務、辦公協作和企業客戶服務等為一體的 綜合化信息平臺。近年來,即時通信市場用戶規模增長迅速,市場規模前景廣闊。隨 著互聯網用戶的快速增長,即時通信用戶也日益增長,2004 年中國即時通信用戶數達 7000 萬人,2005 年達到 9300 萬人。中國即時通信市場規模在 2005 年約為 6200 萬美 元, 2006 年達到 7700 萬美元,到 2010 年將達到 1.14 億美元。 目前在互聯網上受歡迎的即時通訊軟件包括 qq、msn messenger、aol

14、instant messenger、yahoo messenger、net messenger service、icq 等。在這具大的市場份 額的誘惑下,眾多公司都希望在這一領域有所突破,各大門戶網站紛紛擠入即時通信 市場跑馬圈地;國內的電信運營商也是虎視眈眈。基于即時通信在現實生活中廣泛的 運用場景和發展趨勢,考慮到其在生活中的實用性以及現在市場上流行的即時通信系 統的局限性,我們考慮到很多公司其內部的交流需求,所以我們開發了一個可以在局 域網內實現在線交流、文件傳輸、實時語音通訊和視屏通訊等功能的一個即時通信系 統。 語音聊天是此即時通信系統的一個核心子模塊,它采用現代比較流行的網絡編程

15、技術,面向各類企事業部門等局域網用戶,利用即時通信協議以及相關技術實現在局 域網內的實時語音聊天,方便內部人員進行實時交流,共同解決工作生活中遇到的困 難,為企事業以及其它的局域網用戶帶來方便。而傳統的一些諸如飛鴿傳書之類的局 域網聊天工具雖然實現了在局域網內文字聊天、文件傳送等一系列功能,但其在語音 方面卻尚未涉足,給用戶的實時交流帶來一定的影響。所以,本系統以現在即時通信 在現實生活中大量應用為契機,實現了局域網內實時語音聊天,為人們的生活、工作, 學習帶來了極大的便利。 1.21.2 國內外研究現狀國內外研究現狀及發展及發展趨勢趨勢 .1 研究現狀研究現狀 即時通信(im

16、)是指能夠即時發送和接收互聯網消息等的業務。自 1998 年面世以來, 特別是近幾年的迅速發展,即時通信的功能日益豐富,逐漸集成了電子郵件、博客、 音樂、電視、游戲和搜索等多種功能。即時通信不再是一個單純的聊天工具,它已經 發展成集交流、資訊、娛樂、搜索、電子商務、辦公協作和企業客戶服務等為一體的 綜合化信息平臺。隨著移動互聯網的發展,互聯網即時通信也在向移動化擴張。目前, 微軟、aol、yahoo 等重要即時通信提供商都提供通過手機接入互聯網即時通信的業務, 用戶可以通過手機與其他已經安裝了相應客戶端軟件的手機或電腦收發消息。2006 年 6 月,中國移動已經推出了自己的即時通信工具feti

17、on,中國聯通也將推出即時通 訊工具“超信” ,但由于進入市場較晚,其用戶規模和品牌知名度還比不上原有的即時 通信服務提供商。 .2 發展趨勢發展趨勢 目前即時通信行業仍處于高速發展期,通過調查發現,即時通信在未來的發展中 呈現出整合多種業務、擴張移動平臺、滲透企業用戶、融入收費內容的發展趨勢。 1整合多種業務 隨著寬帶的普及,即時通信的內涵也開始變化。與過去的純文本交流不同,新型 的即時通信業務融合了視頻、音頻交流等寬帶應用元素。目前各種即時通信除提供了 基本的即時互動交流外,還能提供視頻、語音通信服務,在短信收發、文件共享、數 據傳輸、游戲、娛樂、個性化設置等方面也都有大的

18、開拓和創新。總之,多媒體化是 即時通信未來的發展方向,未來即時通信將捆綁更多的互聯網和電信增值業務功能。 以騰訊 qq 為例,它目前正在大力發展游戲、音樂、用戶定制等業務,今后還可能推廣 新的通信錄、博客服務、視頻音頻等服務。同時,qq.com 已經是個成熟的內容網站, 現在訪問量已經排名第四,它會和 qq 客戶端形成一縱一橫互相支持的業務模式。 2擴張移動平臺 移動通信業務的迅速發展使得傳統的互聯網即時通信服務商將移動用戶作為下一 步市場發展的重點,這在移動增值服務成為即時通信服務商收入的主要來源之后體現 尤為突出。即時通信業務承載的設備也趨于多樣化,用戶通過 pc、手機、pda 以及其 他

19、設備等都可以使用即時通信。msn 和國內的手機廠商如:多普達、聯想等合作,推出 自帶即時通信業務的手機;騰訊 qq 也推出移動 qq 的即時通信服務。 3滲透企業用戶 即時通信從個人通信向企業綜合通信發展是其發展史上的重要一步。隨著企業信 息化建設步伐的加快,企業即時通信工具(eim)也將作為聯系和溝通的方式被有針對性 地應用在企業的日常生產中,作為企業內外溝通方式之一。企業即時通信應用包括綜 合信息服務、內部即時通信、在線客戶支持服務、在線呼叫、在線廣告等。2003 年全 球企業即時通信市場收入 1.19 億美元,隨著企業對 eim 的了解日益加深,這個數字會 繼續增長。據預測,全球的即時通

20、信服務用戶到 2007 年將增長至 14.39 億戶,其中企 業用戶數量將成倍增長,到 2007 年將增至 3.49 億戶。另據 gartner 的調查數字顯示, 2004 年在所有使用即時通信的用戶中,有約 50%是商業用戶。 4融入收費內容 在互聯網這個以免費、自由、互通為生存法則的世界里,即時通信從一個免費聊 天工具不斷生長壯大,吸引聚集了一些忠誠用戶。在此基礎上,開始搭建網絡廣告、 無線增值等一系列各種潛在的交易平臺,增加了收費的內容。未來即時通信行業的盈 利點在互聯網及增值業務、移動及固網增值業務、廣告業務三個方面。其中,互聯網 及增值業務包括兩部分,核心業務主要是即時通信服務,包括

21、傳輸文本信息、圖像、 視頻、音頻以及會員服務、號碼服務、電子郵件等;另外還有娛樂資訊門戶的建設, 包括向用戶提供新聞、體育、娛樂等多類資訊,還包括游戲中心、交友中心、校友錄、 電子賀卡等多種娛樂服務。而移動及固網增值業務則主要是短信互通和部分 2.5g 產品, 如彩信、彩鈴下載和自寫短信、短信訂閱、新聞等多種服務。也就是說,當用戶通過 手機短信與即時通信軟件上的好友聊天,下載或訂閱短信、彩信等產品時,通過電信 運營商的平臺付費,電信運營商收到費用之后再與 sp 結算分成。 第二章第二章 關鍵技術關鍵技術 語音實時通訊涉及到很多方面的技術,在開發的過程中受到諸多方面的制約, 在本系統的實現過程中

22、主要運用的關鍵技術有: 2.12.1 xmppxmpp協議協議 .1 xmppxmpp協議協議簡介簡介 xmpp(extensible messageing and presence protocol:可擴展消息與存在協議) 的前身是 jabber,一個開源形式組織產生的網絡即時通信協議。xmpp 目前被 ietf 國 際標準組織完成了標準化工作。標準化的核心結果分為兩部分:核心的 xml 流傳輸協 議和基于 xml 流傳輸的即時通訊擴展應用。 (1)xmpp 的核心 xml 流傳輸協議的定義使得 xmpp 能夠在一個比以往網絡通信協 議更規范的平臺上。借助于 xml 易于解析

23、和閱讀的特性,使得 xmpp 的協議能夠非常漂 亮地完成相關工作。 (2)xmpp 的即時通訊擴展應用部分是根據 ietf 在這之前對即時通訊的一個抽象 定義的,與其他業已得到廣泛使用的即時通訊協議,諸如 aim,qq 等有功能完整、完 善等先進性。 .2 xmppxmpp協議基本網絡結構協議基本網絡結構 xmpp中定義了三個角色,客戶端,服務器,網關。通信能夠在這三者的任意兩 個之間雙向發生。服務器同時承擔了客戶端信息記錄,連接管理和信息的路由功能。 網關承擔著與異構即時通信系統的互聯互通,異構系統可以包括sms(短信) , msn,icq等。基本的網絡形式是單客戶端通過tc

24、p/ip連接到單服務器,然后在之上 傳輸xml。 .2 選擇選擇xmppxmpp協議的理由協議的理由 xmpp 是目前主流的四種 im(im:instant messaging,即時消息)協議之一,其 他三種分別為:即時信息和空間協議(impp)、空間和即時信息協議(prim)、針對即時 通訊和空間平衡擴充的進程開始協議 sip(simple)。 在這四種協議中,xmpp 是最靈活的。xmpp 用傳送與即時通訊相關的指令是用 tcp 傳 xml 流,在以前這些命令要么用 2 進制的形式發送(比如 qq) ,要么用純文本指令加 空格加參數加換行苻的方式發送(比如 msn) 。而

25、xmpp 傳輸的即時通訊指令的邏輯與以 往相仿,只是協議的形式變成了 xml 格式的純文本。這不但使得解析容易了,人也容 易閱讀了,方便了開發和查錯。xmpp 是一種基于 xml 的協議,它繼承了在 xml 環境中 靈活的發展性。 因此,基于 xmpp 的應用具有超強的可擴展性。經過擴展以后的 xmpp 可以通過發 送擴展的信息來處理用戶的需求,以及在 xmpp 的頂端建立如內容發布系統和基于地址 的服務等應用程 序。而且,xmpp 包含了針對服務器端的軟件協議,使之能與另一個進 行通話,這使得開發者更容易建立客戶應用程序或給一個配好系統添加功能。這一切 也是筆者選擇此協議的原因。 2.22.

26、2 網絡通信協議網絡通信協議 網絡中不同的工作站,服務器之間能傳輸數據,源于協議的存在。隨著網絡的發 展,不同 的開發商開發了不同的通信方式。為了使通信成功可靠,網絡中的所有主機 都必須使用同 一語言,不能帶有方言,因而必須開發嚴格的標準定義主機之間的每個 包中每個字中的每 一位。這些標準來自于多個組織的努力,約定好通用的通信方式, 即協議。 tcp/ip 協議是目前在網絡中應用得最廣泛的協議,tcp/ip 實際上是一個關于 internet 的標準,并隨著的 internet 廣泛應用而風靡全球,它也成為局域網的首選協 議。tcp/ip 協議中的核心協議有 tcp(傳輸控制協議) 、udp(

27、用戶數據報協議)和 ip(因特網協議) 。tcp 協議可以在網絡用戶啟動的軟件應用進程之間建立通信會話, 并實現數據流量控制和錯誤檢測,這樣就可以在不可靠的網絡上提供可靠的端到端數 據傳輸。udp 協議是一種無連接的協議,它在傳輸數據之前不建立連接,也不提供良好 的可靠性和差錯檢查,只僅僅依賴于校驗來保證可靠性。udp 不進行流量控制,沒有序 列或者確認,因此它處理和傳輸數據的速度快,還被用來傳輸關鍵的網絡狀態消息。 ip 協議的基本功能是提供數據傳輸、數據包編址、數據包路由,分段等。通過 ip 編址 約定,可以成功地將數據通過路由傳輸到正確的網絡或者子網。每個網絡站點具有一 個 32 位的

28、ip 地址,它和 48 位 mac 地址一起協作,完成網絡通信,ip 協議也是一種無 連接的協議。 因為考慮到語音數據音比較大(與你的采樣頻率密切相關) ,而且丟失一小部分數 據并不會影響雙方進行正常通訊,所以本系統中的語音通訊模塊采用了無連接、不可 靠、沒有流量控制但處理和傳輸數據的速度快的 udp 進行實現。 2.32.3 socketsocket網絡編程網絡編程 利用 socket 編程實現典型的網絡通信程序,特別是在實時性要求比較高的項目中, winsock 編程方法是非常實用的。在此必須了解怎樣建立一個 socket,并怎樣用用 socket 建立兩臺計算機之間的連接,最終實現兩臺計

29、算機之間的數據傳送等一系列問 題。 2.42.4 音頻捕獲技術音頻捕獲技術 語音通訊最先要解決的就是怎樣捕獲說話者從麥克風中傳進來的語音,本系統中 主要是采用 windows 多媒體相關應用程序接口 winmm.dll 中所提供的一系列系統函數 進行音頻捕獲。其中主要運用的函數有: (1) waveinopen 為錄音而打開一個波形輸入設備(即得到一個麥克風句柄) 。 (2) waveinprepareheader 為波形輸入設備準備一個輸入緩沖區。 (3) waveinaddbuffer 向波形輸入設備添加一個輸入緩沖區。 (4) waveinstart 啟動在指定的波形輸入設備的輸入,開始

30、錄音。 (5) waveinunprepareheader 清除緩存。 (6) waveinclose 關閉設備,停止錄音。 2.52.5 音頻回放技術音頻回放技術 當本面接收到遠程主機捕獲發送過來的音頻數據后,還必須經過回放,才能將音 頻數據從音響中播放出來,從而達到語音通訊的目的。本系統中主要是采用windows 多媒體相關應用程序接口winmm.dll中所提供的一系列函數進行音頻回放。其中主要運 用的函數有: (1) waveoutopen 打開回放設備,并得到其句柄。 (2) waveoutprepareheader 為回放設備準備一個波形緩沖區(內存塊)。 (3) waveoutwr

31、ite 向指定的波形輸出設備發送一個數據塊。 (4) waveoutrest 停止放音。 (5) waveoutclose 關閉回放設備。 2.62.6 音頻采樣技術音頻采樣技術 由于計算機只能處理離散的二進制信息,而人的語音又是連續的模擬信號,所以 我們必須通過采樣把模擬信號轉換成離散信號。實現這個步驟使用的設備是模/數轉換 器(a/d) ,它以每秒上萬次的速率對聲波進行采樣,每一次采樣都記錄下了原始模擬 聲波在某一時刻的狀態,稱之為樣本。將一串的樣本連接起來,就可以描述一段聲波 了。把每一秒鐘所采樣的數目稱為采樣頻率或采率,單位為 hz(赫茲) 。采樣頻率越 高所能描述的聲波頻率就越高。采

32、樣位數可以理解為采集卡處理聲音的解析度。這個 數值越大,解析度就越高,錄制和回放的聲音就越真實。 本系統中采用 pcm(脈沖編碼調制 )進行模/數轉換,樣頻率采用 8000hz, 采樣位數采用 16 位。 2.72.7 音頻壓縮音頻壓縮/ /解壓技術解壓技術 為了保證語音不失真,必須保證達到一定的采樣頻率(當然也不能過高)和一定 的采樣位數。這樣,音頻數據量將非常大,若不加以壓縮而直接傳輸,很可能會導致 網絡阻塞、數據大量丟失等情況,所以必須采用適當的技術對采樣到的數據進行壓縮 再進行傳送,在接收端得到數據后再經過解壓還原得到原來的音頻數據。本系統主要 采用了g729.dll中包含的壓縮與解壓

33、算法對音頻數據進行壓縮、解壓。 2.82.8 p2pp2p技術技術 p2p就是點對點。當在兩臺主機之間語音通訊連接已經建立后,就不需要再用到 服務器了。因為語音數據不會再經過服務器傳送到另一臺主機上去,這樣既消耗服務 器的資源,又增加了數據的傳送時間。所以,在連接建立之后,兩臺主機之間就進行 數據的點對點傳輸,既節省資源,又加快了數據的傳輸速度。 第三章第三章 語音通訊系統的分析語音通訊系統的分析 3.13.1 語音通訊系統可行性分析語音通訊系統可行性分析 1技術可行性分析 對于當前的語音通訊系統,在技術上有很大的選擇,但其根本都會用到網絡編程 的基本知識。根據對目前比較流行的編程語言以及通信

34、協議的比較,筆者在技術上選 擇 visual studio 2005 作為 ide,以 visual c#作為編程語言,結合網絡編程技術以 及 xmpp 即時通信協議進行此次開發。visual studio 2005 的集成性與功能強大性、 visual c#的便捷性與靈活性、xmpp 協議的可擴展性和對網絡編程的支持性保證了本次 系統開發在技術上的可行性。 2經濟可行性分析 從論文背景中可知,隨著互聯網用戶的快速增長,即時通信用戶也日益增長, 2004 年中國即時通信用戶數達 7000 萬人,2005 年達到 9300 萬人。中國即時通信市場 規模在 2005 年約為 6200 萬美元, 2

35、006 年達到 7700 萬美元,到 2010 年將達到 1.14 億美元。即時通信的市場需求是非常大的,而系統采用小團隊方式開發在局域網內的 即時通信系統,在局域網內實現在線交流、文件傳輸、實時語音通訊和視屏通訊等功 能。面向各類企事業部門等局域網用戶,利用網絡實現在局域網內的實時語音聊天, 方便內部人員進行實時交流,共同解決工作生活中遇到的困難,為企事業以及其它的 局域網用戶帶來方便。研發成功后即可在企事業以及其它局域網用戶中得到普遍運用, 而相對來說研發成本就比較低。而且此系統的運行環境即局域網的組建也比較簡單, 費用也較低,所以運行環境的配置費用比較低,可以獲得廣泛的運用。所以其帶來的

36、 經濟效益遠遠超過開發成本,在經濟上也具有可行性。 3操作可行性分析 通過對周邊人群的調查顯示,決大部分人現在都在使用即時通信工具,本語音通 訊系統采用與現代比較流行的即時通信工具 qq 相似的操作方式,在用戶發出請求并經 對方同意后,方可進行語音聊天,并且在聊天過程中可以隨意調整音量大小,也可以 隨時結束語音通訊,這種操作方式合乎人們生活習慣,也具有可行性。 3.23.2 語音通訊系統需求分析語音通訊系統需求分析 .1 項目總述項目總述 隨著互聯網技術的發展,網上辦公、網上購物、網上交友等正在以飛快的速度走 進大眾的生活中,人們可以在網上做在現實生活中做的很多事情,而現實生活

37、中最重 要的一件事情就是交流,人與人的交流莫過于口頭直接進行交流最為直觀最為快捷。 在這個“互聯網世界”的今天,為了方便內部人員進行實時交流,共同解決工作生活 中遇到的困難,為企事業以及其它的局域網用戶帶來方便;為了解決以前人們通過計 算機只能用文字進行交流的局限性,實時語音通訊已經成為現實生活中不可缺少的一 部分。實現在局域網內語音實時聊天,是人們在互聯網上便利生活、工作,學習的基 礎。 語音聊天是此即時通信系統的一個核心子模塊,它采用現代比較流行的網絡編程 技術,面向各類企事業部門等局域網用戶,實現實時語音捕獲,音頻數據壓縮與發送, 音頻數據接收與回放等功能,從而達到了實時語音通訊的目的,

38、方便內部人員進行實 時交流,共同解決工作生活中遇到的困難,為企事業以及其它的局域網用戶帶來方便。 .2 市場需求分析市場需求分析 近年來,即時通信市場用戶規模增長迅速,市場規模前景廣闊。隨著互聯網用戶 的快速增長,即時通信用戶也日益增長,2004 年中國即時通信用戶數達 7000 萬人, 2005 年達到 9300 萬人。2006 年中國即時通信用戶增長 29%,達到 1.2 億人。另外, iresearch 根據 morganstanley 發表的研究數字整理發現,中國即時通信市場規模在 2005 年約為 6200 萬美元,在 2006 年達到 7700 萬美元,到 2010

39、 年將達到 1.14 億美元。 移動即時通信市場有著更加巨大的成長空間和誘惑力。據 iresearch2006 年 5 月發布 的調查報告顯示,2005 年我國移動即時通信的用戶已達到 500 萬;而在 2006 年,我國 移動即時通信注冊用戶量達到 700 萬;未來幾年移動即時通信用戶規模將呈現快速增 圖 3-1 語音通訊系統用例圖 fig.3-1:the use case diagram of audio communication system 長,預計到 2010 年中國移動即時通信用戶將達到 2000 萬人。 上面這些數字表明,即時通信系統的市場需求量是非常大的,而語音作為即時通 信

40、的一個核心模塊,也將廣泛的應用。而且隨著企事業單位以及其它局域網用戶對語 音通信的使用,其市場將越來越大,對其的需求也將隨之增大。 .3 用戶需求分析用戶需求分析 在本系統中主要采用問卷調查以及與當前比較流行的即時通信系統(如 qq)作比較 而得到用戶對語音通信的一些基本要求:一是速度要快(也就是要實時) ,二是質量要 好(不能出現太大的雜音而影響正常通信),三是應該能在通信過程中動態調節音量 的大小,并能進行靜音操作等。 .4 軟件性能要求軟件性能要求 實時語音通訊系統的兩大性能要求就是速度和質量。在速度上不能出現太大的延 遲,因為延遲太大可能會丟失很大一部分

41、用戶,另外就是質量上的要求,語音通訊質 量是一個與速度一樣重要的問題,在通信過程中不能出現太大的雜音,也不能出現語 音失真的現象。 .5 軟件功能需求軟件功能需求 在整個語音通訊過程中,涉及到客戶端與服務器兩個重要的角色,客戶端是語音 通訊的主體,而服務器只是 用于此語音通信連接的建立。 其中客戶端中包含著兩種不 同的角色,一個是請求方, 而另一個則是接收請求方。 首先由請求方發出通信請求, 經服務器中轉后傳給接收方, 只有在接收方同意進行語音 通訊請求后才能進行正常的 語音聊天,系統用例圖見 3- 1,與各個角色相關的詳細功能見表 3-1: (1)請求方:可以把其看成是一個人

42、,也可以看作是一臺主機。請求方最先發出 語音通訊請求,然后等待接收方的處理反饋信息,只有在接收方同意之后才能進行相 關的語音通訊準備工作,進而進行語音聊天,最后可以點擊“結束”按鈕結束語音通 訊。 (2)服務器:一臺主機。其中轉請求方發送過來的請求消息給接收方,在接收方 進行處理之后,再將其反饋信息中轉給請求方。在連接建立完成之后,通信雙方進行 點 對點通信,將不再使用服務器。 (3)接收請求方:當對方發出請求后,接收請求方可以進行“接受”或者“拒絕”處 理,并將其處理反饋信息回發給請求方。若此處點擊“接受”則還要進行相應的語音 通訊工作然后開始正常語音通訊,最后可以點擊“結束”按鈕結束語音通

43、訊。 3.33.3 語音通訊系統流程分析語音通訊系統流程分析 語音通訊是即時通信系統中的一個核心模塊,是實現人們即時交流的重要工具, 而傳統的一些諸如飛鴿傳書之類的局域網聊天工具雖然實現了在局域網內文字聊天、 表 3-1:各個角色相關的功能 table.3-1 various role-related functions 編號名稱描述主要路徑前置條件 1 請求方發出 請求 雙方要想進行語音通 請求方必須先發出請求 點擊發送請求按鈕- 據對方 ip 發發送請求 聊天窗口 已經打開 2 請求方處理 反饋信息 當請求方發出的請求經對方處理之 后,根據其反饋信息進行相應操作 接收反饋信息-根據對方反饋

44、信息 類型進行處理 收到對方 反饋信息 3 請求方語音 通訊準備 接受請求方的請求后,自己應完成 語音通訊相應的準備工作 建立音頻捕獲/回放對象-開始音頻 捕獲與回放 對方接受 請求 4 結束語音通 訊 當請求方/被請求方點擊“結束”按 鈕即可結束本次語音通信 點擊結束按鈕-發送結束的消息給 對方-關閉設備,結束通信 正常的語 音通信中 5 服務器中轉 信息 當服務器接收到通信雙方傳給另外 一方的消息時,進行消息轉發給對 方 接收客戶端發送來的消息-根據其 中包含的 id 進行消息轉發 客戶端發 送了消息 6服務器查找 用戶 服務器在進行消息轉發時,會根據 其 id 查找到此條消息應該發送給誰

45、 在所有的在線用戶中進行查找 id 與 接收此消息 id 相同的人即可 有消息通 過服務器 7 被請求方處 理請求 接收到請求方的請求后要進行相應 的處理,并將處理結果反饋對請求 方 接收對方的請求-進行相應的處理- 信息反饋 被請求方 收到請求 8 被請求方語 音通訊準備 接受請求方的請求后,自己應完成 語音通訊相應的準備工作 建立音頻捕獲/回放對象-開始音頻 捕獲與回放 接受對方 請求 文件傳送等一系列功能,但其在語音方面卻尚未涉足,給用戶的實時交流帶來一定的 影響。所以,本系統以即時通信在現實生活中大量應用為契機,實現了局域網內兩臺 臺主機實時語音聊天。只要其中任意一個用戶發出語音聊天的

46、請求,對方就會接收到 一個請求,若同意之后雙方就可以進行隨意的語音聊天了,并且在聊天過程中可以設 置音量的大小,最后點擊結束鍵結束語音聊天。 首先對語音通訊流程進行分析,流程分析是整個系統的基礎,它給出了語音是怎 樣從一臺主機捕獲并發送到另一臺機的整個過程。一般語音通訊系統應該包括:建立 連接,音頻捕獲,音頻發送(包括音頻壓縮),音頻接收,音頻回放(包括音頻解壓) 五個部分。其基本流程為:建立連接打開麥克風捕獲音頻音頻壓縮音頻傳送 音頻接收音頻解壓音頻回放。 3.43.4 語音通訊系統數據流圖語音通訊系統數據流圖 本語音通訊系統主要是是實現在局域網內的實時語音聊天,需要一臺主機充當服 務器,另

47、外的計算機連接到這臺服務器上。當通信雙方中的一方給對方發出語音聊天 請求后,服務器進行轉發最后雙方建立通信連接。在雙方通信連接建立后就可以在兩 臺計算機之間進行點對點音頻數據傳輸。本地主機捕獲音頻設備中的音頻數據,并經 過壓縮然后發送給對方,在對方接收到此音頻數據之后經解壓回放。具體數據流走向 是:一方(a方)發出請求經過服務器轉發到另一方(b方),經過b方對a方提出的請 求進行處理,然后將其反饋消息返回給a方(此處假設b方選擇了接受),則a方將得 到對方的ip地址并打開自己語音設備開始進行音頻捕獲、壓縮并發送,而b方在進行 音頻捕獲的同時進行音頻接收、解壓與回放。所以可以得到頂層數據流圖見圖

48、3-2: 圖 3-2: 頂層數據流圖 fig.3-2 the top-level dfd 在上面頂層數據流圖中,有處理語音請求、捕獲音頻與發送、音頻接收與回放三 大處理,這三個處理分別表示: 1處理語音請求:請求方提出的語音聊天請求,經服務器進行轉發給對方,然后經過 對方的處理再通過服務器將其反饋消息轉發到請求方,請求方根據對方的應答消息完 成相應的動作,若對方是接受了此語音請求,則將此應答消息發送給音頻捕獲與發送 處理開始此次語音通信。 2捕獲音頻與發送:當請求方接收到對方“接受”語音請求的應答消息后,就會打開 自己的音頻設備啟動音頻捕獲處理,并將捕獲到的音頻數據進行壓縮處理之后發送給 對方

49、。在發送給對方的過程中會用到處理語音請求過程中所得到的對方的 ip 地址。 3音頻接收與回放:當對方(b)收到 a 方傳過來的音頻數據后,首先其會通過解壓 處理而得到最初的音頻數據然后在接收方的音頻設備中進行回放。 根據以上分析及頂層數據流圖可得細化數據流圖見圖 3-3: 圖 3-3: 細化數據流圖 fig.3-3 the detailed dfd 第四章第四章 語音通訊系統的設計語音通訊系統的設計 4.14.1 系統結構系統結構 即時通信系統采用cs結構模式,即:服務器/客戶端模式。但語音通訊模塊只是 依靠服務器進行兩個客戶端連接的建立,當兩個客戶端的連接建立以后,將不使用服 務器,而是采用

50、p2p模式進行通信。因為語音數據不會再經過服務器傳送到另一臺主機 上去,這樣既消耗服務器的資源,又增加了數據的傳送時間。所以,采用這種結構, 兩臺主機之間就進行數據的點對點傳輸,既節省資源,又加快了數據的傳輸速度。系 統結構圖見圖4-1: 圖4-1:系統結構模式 fig.4-1 system architecture model 4.24.2 開發工具開發工具 由于開發基于網絡的語音通訊系統,所以現在比較流行的幾中語言就是 c+、java 和 c#,基于幾種平臺和語言的比較,最終選擇了 visual studio 2005 作為 ide,選擇 visual c#語言來實現此語音通訊系統,選擇

51、vs2005 和 visual c#的理由如下: visual studio 是一套完整的開發工具集,用于生成 asp.net web 應用程序、 xml web services、桌面應用程序和移動應用程序。visual basic、visual c+、visual c# 和 visual j# 全都使用相同的集成開發環境 (ide),利用此 ide 可 以共享工具且有助于創建混合語言解決方案。另外,這些語言利用了 .net framework 的功能,通過此框架可使用簡化 asp web 應用程序和 xml web services 開發的關鍵 技術。而 visual c#是微軟推出的一種

52、比較新的一種面向對象編程語言,它使得程序員 可以快速地編寫各種基于 microsoft .net 平臺的應用程序,microsoft .net 提供了一 系列的工具和服務來最大程度地開發利用計算與通訊領域。因此選擇 vs2005 作為 ide 來進行此次開發。 相對以前的編程語言來說,c#語言在效率與安全性上得了很大的改善,并且支持 現有的網絡編程新標準,它使程序員快速便捷地創建基于 microsoft .net 平臺的解決 方案。這種框架使 c#組件可以方便地轉化為 xml 網絡服務,從而使任何平臺的應用程 序都可以通過 internet 調用它。還有,c#增強了開發者的效率,同時也致力于消

53、除編 程中可能導致嚴重結果的錯誤,使得 c/c+程序員可以快速進行網絡開發,同時也保持 了開發者所需要的功能強大性和靈活性。于是筆者選擇 visual c#語言來進行此次開發。 4.34.3 流程設計流程設計 一般語音通訊系統的流程應該包括:建立連接,音頻捕獲,音頻發送(包括音頻 壓縮),音頻接收,音頻回放(包括音頻解壓)五個部分。其基本流程為:建立連接 初始化麥克風(打開音頻設備)捕獲音頻音頻壓縮音頻傳送音頻接收音頻 解壓音頻回放。其流程具體設計如下: (1)建立連接:兩臺計算機之間進行語音通訊,首先就是要在雙方進行連接的建立, 然后雙方才能夠進行通訊,確定數據發送到什么地方。本系統中一方先

54、發出語音聊天 請求,并通過 xmpp 協議根據對方的 id 把請求發送給對方,在接收方接收到請求并點 擊“接受”后,接收方完成自己語音通訊相關的工作,并且再根據發送方的 id 發送一 個消息回去,表示自己已經接受,在最初發出請求的主機接收到對方已接收請受后, 此主機也完成自己語音通訊相關的工作,至此雙方的連接建立完畢,可以正常進行通 信了。 (2)音頻捕獲:先初始化麥克風,再打開本機的“混音器”并得其句柄,根據此句柄 調用 winmm.dll 中所提供的一系列函數進行捕獲音頻,并把其存放在一個數組中(因 為采用 pcm,所以捕獲到的音頻是一此離散的數字)。 (3)音頻發送:建立 socket

55、連接(udp 協議),利用 socket 的 beginsendto()函數 將數據發送給遠程主機。這個過程中會用到 g729 提供的壓縮算法對存放于數組中的數 據進行 16:1 的壓縮,減少網絡傳輸的數據量。 (4)音頻接收:建立 socket 連接(udp 協議),利用 socket 的 beginreceivefrom() 函數從指定的遠程主機接收數據并存放于一個數組中。 (5)音頻回放:本機通過音頻接收已經將遠程主機發送來的音頻數據保存在了一個數 組中,這里只需根據本機的“混音器”句柄調用 winmm.dll 中所提供的一系列函數進 行即可實現語音回放功能。當然,這里在回放之前會先調用

56、 g729 提供解壓算法對保存 于數組中的音頻數據進行解壓。 4.44.4 語音通訊系統總體設計語音通訊系統總體設計 本語音通訊系統采用面向對象的基本知識,再結合系統的需求分析和基本流程, 將系統主要分為如下四個模塊:登錄模塊,連接建立模塊,音頻捕獲模塊,音頻回放 模塊。其中音頻捕獲模塊和音頻回放模塊又可以分為若干小的模塊,最后其每一個小 的模塊都采用一個類來進行實現。總體設計見圖4-2: 圖 4-3:登錄模塊流程圖 fig.4-3 flow chart of login module 圖4-2:功能模塊的總體設計圖 fig.4-2 total design of function modul

57、e 4.54.5 語音通訊系統詳細設計語音通訊系統詳細設計 .1 登錄模塊登錄模塊 這個模塊是整個即時通信系統所共用的一 個模塊,是進入本即時通信系統的界面,在這 個模塊中主要是根據用戶id和password(把其存 放xmppclientconnection的一個對象中)采用 xmpp協議的xmppclientconnection對象提供的 open()方法發送到指定的服務器上進行驗證, 若驗證成功,服務器會將其登錄成功的消息以 及與此用戶相關的一些信息(如:詳細信息, 好友列表等到)一起返回到客戶端,從而讓用 戶進入登錄后的主界面mainfrom窗體,在這個 窗體中顯示了此

58、用戶可以進行的一系列操作和 圖 4-5:音頻捕獲模塊流程圖 fig.4-5flow chart of audio capture moudle 該用戶的好友列表。在用戶登錄進服務器的同時,在服務器中記錄下此用戶的id以及 其ip地址,以便其它用戶上線時查用。其流程圖見圖4-3: .2 建立連接模塊建立連接模塊 兩個用戶要進行語音通訊必須在一方發送請求而另一方接收請求,然后建立其連 接的情況下才能發生。此模塊主要完成兩個功能:一個是初始化麥克風,另一個就是 建立通信連接,從而能進行正常語音通信。 1.初始化音頻設備 語音的大小可以通過音頻設備進行控制,所以我們必須得到音頻設備的句

59、柄最終 實現對聲音大小的控制。所以我們必須初始化音頻設備(其實是建立類的一個對象), 并在聊天過程中可以改變音量的大小。此初始化過程是用戶點擊另一個用戶想進行聊 天的時候進行實現,主要是通過在我們自己定義的一個自定義控件中進行調用 av.dll 中的 mixer 類進行實現。其中 mixer 類主要完成:根據給定的窗口句柄打開混音器, 獲取混音器設備指定的線路信息, 獲取關聯音頻 線路的一個或多個控制器并從控制器中得到其音 量等信息,獲取指定控制器的詳細信息, 設置指 定控制器的詳細信息。這樣我們其對象來調節麥 克風以及揚聲器音量的大小。 2.建立通信連接 系統中一方先發出語音聊天請求(將自己

60、的 ip 放于一個 oob 對象(oob 類是 xmpp 協議提供的 一個表示語音聊天的專用類)中,并將此 oob 對 象存于 iq 的對象中,并設置 iq 的相關屬性 (to,type),通過 xmppclientconnection 對象 發送給指定的用戶,在服務器接收到此 iq 信息后, 判斷這是發給哪一個用戶的 iq 進而轉發給該用戶, 在接收方接收到此請求后,并根據發送方的 id 進 行判斷是否要與此人進行語音聊天,若選擇“接 受”則表示要進行語音聊天,所以接收方會先完 圖 4-4:建立通信連接流 fig.4-4 flow chart of erect communication l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論