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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

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

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

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

4、音頻回放對象.35 5.4.3 循環(huán)接收音頻數(shù)據(jù).35 5.4.4 打開回放設(shè)備.36 5.4.5 音頻解壓并回放.37 5.4.6 結(jié)束回放.37 5.5 常用結(jié)構(gòu)體定義及介紹.38 5.5.1 wavehdr.38 5.5.2 waveformatex.38 5.6 常用winmm.dll方法參數(shù)介紹.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 本系統(tǒng)的開發(fā)難點與解決技巧.40 5.7.

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

6、和socket相關(guān)知識開發(fā)了此語音通訊系統(tǒng)。 本系統(tǒng)主要包括連接建立、音頻捕獲、音頻回放三大模塊,實現(xiàn)了用戶登錄、通信連接建立、音頻 數(shù)據(jù)捕獲、數(shù)據(jù)壓縮與發(fā)送、數(shù)據(jù)接收及解壓、音頻數(shù)據(jù)回放等功能,重點介紹了通信連接建立、 音頻數(shù)據(jù)捕獲和回放的實現(xiàn)。在實現(xiàn)方法上,主要采用面向?qū)ο缶幊袒舅枷?,利用c#編程語言將 系統(tǒng)分為接口類、音頻捕獲類、音頻回放類、音頻壓縮與解壓類和異常處理類,再加一個公用的結(jié) 構(gòu)體類進行實現(xiàn),并采用了現(xiàn)代比較流行的xmpp協(xié)議進行消息發(fā)送和建立其語音連接,通過socket 技術(shù)實現(xiàn)最終音頻數(shù)據(jù)的發(fā)送和接收。最后,本論文對基于c#技術(shù)的語音通訊系統(tǒng)的開發(fā)設(shè)計進行 了總結(jié)和展望

7、。 關(guān)鍵字:關(guān)鍵字:音頻捕獲;音頻回放;音頻數(shù)據(jù)壓縮;xmpp協(xié)議; 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 論文背景論文背景 隨著移動互聯(lián)網(wǎng)的發(fā)展,即時通信技術(shù)也得到飛速的發(fā)展。自 1998 年面世以來, 特別是近幾年的迅速發(fā)展,即時通信的功能日益豐富,逐漸集成了電子

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

56、 g729 提供解壓算法對保存 于數(shù)組中的音頻數(shù)據(jù)進行解壓。 4.44.4 語音通訊系統(tǒng)總體設(shè)計語音通訊系統(tǒng)總體設(shè)計 本語音通訊系統(tǒng)采用面向?qū)ο蟮幕局R,再結(jié)合系統(tǒng)的需求分析和基本流程, 將系統(tǒng)主要分為如下四個模塊:登錄模塊,連接建立模塊,音頻捕獲模塊,音頻回放 模塊。其中音頻捕獲模塊和音頻回放模塊又可以分為若干小的模塊,最后其每一個小 的模塊都采用一個類來進行實現(xiàn)??傮w設(shè)計見圖4-2: 圖 4-3:登錄模塊流程圖 fig.4-3 flow chart of login module 圖4-2:功能模塊的總體設(shè)計圖 fig.4-2 total design of function modul

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

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

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

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

溫馨提示

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

評論

0/150

提交評論