版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、摘要:摘要:.3 abstract:.3 第一章第一章 引言引言.4 1.1 論文背景 .4 1.2 國(guó)內(nèi)外研究現(xiàn)狀及發(fā)展趨勢(shì) .5 1.2.1 研究現(xiàn)狀.5 1.2.2 發(fā)展趨勢(shì).5 第二章第二章 關(guān)鍵技術(shù)關(guān)鍵技術(shù).7 2.1 xmpp 協(xié)議.7 2.1.1 xmpp 協(xié)議簡(jiǎn)介.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 第三章第三章 語(yǔ)音通訊系
2、統(tǒng)的分析語(yǔ)音通訊系統(tǒng)的分析.11 3.1 語(yǔ)音通訊系統(tǒng)可行性分析 .11 3.2 語(yǔ)音通訊系統(tǒng)需求分析 .11 3.2.1 項(xiàng)目總述.12 3.2.2 市場(chǎng)需求分析.12 3.2.3 用戶需求分析.12 3.2.4 軟件性能要求.13 3.2.5 軟件功能需求.13 3.3 語(yǔ)音通訊系統(tǒng)流程分析 .14 3.4 語(yǔ)音通訊系統(tǒng)數(shù)據(jù)流圖 .15 第四章第四章 語(yǔ)音通訊系統(tǒng)的設(shè)計(jì)語(yǔ)音通訊系統(tǒng)的設(shè)計(jì).17 4.1 系統(tǒng)結(jié)構(gòu).17 4.2 開(kāi)發(fā)工具.17 4.3 流程設(shè)計(jì).18 4.4 語(yǔ)音通訊系統(tǒng)總體設(shè)計(jì).19 4.5 語(yǔ)音通訊系統(tǒng)詳細(xì)設(shè)計(jì).19 4.5.1 登錄模塊.19 4.5.2 建立連接模塊.
3、20 4.5.3 音頻捕獲模塊.21 4.5.4 音頻回放模塊.23 第五章第五章 語(yǔ)音通訊系統(tǒng)的實(shí)現(xiàn)語(yǔ)音通訊系統(tǒng)的實(shí)現(xiàn).26 5.1 構(gòu)建語(yǔ)音通訊系統(tǒng)的用戶登錄系統(tǒng).26 5.2 連接建立模塊的實(shí)現(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 建立音頻捕獲對(duì)象并為其分配緩沖區(qū).32 5.3.3 打開(kāi)錄音設(shè)備.33 5.3.4 開(kāi)始錄音.33 5.3.5 音頻壓縮并發(fā)送給遠(yuǎn)程主機(jī).33 5.3.6 結(jié)束錄音.34 5.4 音頻回放模塊的實(shí)現(xiàn).35 5.4.1 確定音頻格式.35 5.4.2 建立
4、音頻回放對(duì)象.35 5.4.3 循環(huán)接收音頻數(shù)據(jù).35 5.4.4 打開(kāi)回放設(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)的開(kāi)發(fā)難點(diǎn)與解決技巧.40 5.7.
5、1 通信連接的建立.40 5.7.2 語(yǔ)音捕獲、壓縮、解壓、回放.41 5.7.3 音量大小的調(diào)節(jié).41 5.7.4 委托、回調(diào)和異步.41 結(jié)結(jié) 語(yǔ)語(yǔ).42 參考文獻(xiàn)參考文獻(xiàn): :.43 致致 謝謝.44 即時(shí)消息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)即時(shí)消息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-語(yǔ)音通訊模塊的實(shí)現(xiàn)語(yǔ)音通訊模塊的實(shí)現(xiàn) 劉永忠 西南大學(xué)計(jì)算機(jī)與信息科學(xué)學(xué)院,重慶 400715 摘要:摘要:本論文主要討論了語(yǔ)音通訊系統(tǒng)的研究與實(shí)現(xiàn),筆者在探討即時(shí)通訊系統(tǒng)在國(guó)內(nèi)外研究現(xiàn)狀 及發(fā)展趨勢(shì)的基礎(chǔ)上,結(jié)合當(dāng)前計(jì)算機(jī)技術(shù)的發(fā)展情況,選擇使用了vistudio 2005開(kāi)發(fā)環(huán)境和當(dāng) 前比較流行的c#編程語(yǔ)言,結(jié)合語(yǔ)音捕獲和回放相關(guān)知識(shí)
6、和socket相關(guān)知識(shí)開(kāi)發(fā)了此語(yǔ)音通訊系統(tǒng)。 本系統(tǒng)主要包括連接建立、音頻捕獲、音頻回放三大模塊,實(shí)現(xiàn)了用戶登錄、通信連接建立、音頻 數(shù)據(jù)捕獲、數(shù)據(jù)壓縮與發(fā)送、數(shù)據(jù)接收及解壓、音頻數(shù)據(jù)回放等功能,重點(diǎn)介紹了通信連接建立、 音頻數(shù)據(jù)捕獲和回放的實(shí)現(xiàn)。在實(shí)現(xiàn)方法上,主要采用面向?qū)ο缶幊袒舅枷?,利用c#編程語(yǔ)言將 系統(tǒng)分為接口類(lèi)、音頻捕獲類(lèi)、音頻回放類(lèi)、音頻壓縮與解壓類(lèi)和異常處理類(lèi),再加一個(gè)公用的結(jié) 構(gòu)體類(lèi)進(jìn)行實(shí)現(xiàn),并采用了現(xiàn)代比較流行的xmpp協(xié)議進(jìn)行消息發(fā)送和建立其語(yǔ)音連接,通過(guò)socket 技術(shù)實(shí)現(xiàn)最終音頻數(shù)據(jù)的發(fā)送和接收。最后,本論文對(duì)基于c#技術(shù)的語(yǔ)音通訊系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)進(jìn)行 了總結(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 論文背景論文背景 隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,即時(shí)通信技術(shù)也得到飛速的發(fā)展。自 1998 年面世以來(lái), 特別是近幾年的迅速發(fā)展,即時(shí)通信的功能日益豐富,逐漸集成了電子
13、郵件、博客、 音樂(lè)、電視、游戲和搜索等多種功能。即時(shí)通信不再是一個(gè)單純的聊天工具,它已經(jīng) 發(fā)展成集交流、資訊、娛樂(lè)、搜索、電子商務(wù)、辦公協(xié)作和企業(yè)客戶服務(wù)等為一體的 綜合化信息平臺(tái)。近年來(lái),即時(shí)通信市場(chǎng)用戶規(guī)模增長(zhǎng)迅速,市場(chǎng)規(guī)模前景廣闊。隨 著互聯(lián)網(wǎng)用戶的快速增長(zhǎng),即時(shí)通信用戶也日益增長(zhǎng),2004 年中國(guó)即時(shí)通信用戶數(shù)達(dá) 7000 萬(wàn)人,2005 年達(dá)到 9300 萬(wàn)人。中國(guó)即時(shí)通信市場(chǎng)規(guī)模在 2005 年約為 6200 萬(wàn)美 元, 2006 年達(dá)到 7700 萬(wàn)美元,到 2010 年將達(dá)到 1.14 億美元。 目前在互聯(lián)網(wǎng)上受歡迎的即時(shí)通訊軟件包括 qq、msn messenger、aol
14、instant messenger、yahoo messenger、net messenger service、icq 等。在這具大的市場(chǎng)份 額的誘惑下,眾多公司都希望在這一領(lǐng)域有所突破,各大門(mén)戶網(wǎng)站紛紛擠入即時(shí)通信 市場(chǎng)跑馬圈地;國(guó)內(nèi)的電信運(yùn)營(yíng)商也是虎視眈眈?;诩磿r(shí)通信在現(xiàn)實(shí)生活中廣泛的 運(yùn)用場(chǎng)景和發(fā)展趨勢(shì),考慮到其在生活中的實(shí)用性以及現(xiàn)在市場(chǎng)上流行的即時(shí)通信系 統(tǒng)的局限性,我們考慮到很多公司其內(nèi)部的交流需求,所以我們開(kāi)發(fā)了一個(gè)可以在局 域網(wǎng)內(nèi)實(shí)現(xiàn)在線交流、文件傳輸、實(shí)時(shí)語(yǔ)音通訊和視屏通訊等功能的一個(gè)即時(shí)通信系 統(tǒng)。 語(yǔ)音聊天是此即時(shí)通信系統(tǒng)的一個(gè)核心子模塊,它采用現(xiàn)代比較流行的網(wǎng)絡(luò)編程
15、技術(shù),面向各類(lèi)企事業(yè)部門(mén)等局域網(wǎng)用戶,利用即時(shí)通信協(xié)議以及相關(guān)技術(shù)實(shí)現(xiàn)在局 域網(wǎng)內(nèi)的實(shí)時(shí)語(yǔ)音聊天,方便內(nèi)部人員進(jìn)行實(shí)時(shí)交流,共同解決工作生活中遇到的困 難,為企事業(yè)以及其它的局域網(wǎng)用戶帶來(lái)方便。而傳統(tǒng)的一些諸如飛鴿傳書(shū)之類(lèi)的局 域網(wǎng)聊天工具雖然實(shí)現(xiàn)了在局域網(wǎng)內(nèi)文字聊天、文件傳送等一系列功能,但其在語(yǔ)音 方面卻尚未涉足,給用戶的實(shí)時(shí)交流帶來(lái)一定的影響。所以,本系統(tǒng)以現(xiàn)在即時(shí)通信 在現(xiàn)實(shí)生活中大量應(yīng)用為契機(jī),實(shí)現(xiàn)了局域網(wǎng)內(nèi)實(shí)時(shí)語(yǔ)音聊天,為人們的生活、工作, 學(xué)習(xí)帶來(lái)了極大的便利。 1.21.2 國(guó)內(nèi)外研究現(xiàn)狀國(guó)內(nèi)外研究現(xiàn)狀及發(fā)展及發(fā)展趨勢(shì)趨勢(shì) .1 研究現(xiàn)狀研究現(xiàn)狀 即時(shí)通信(im
16、)是指能夠即時(shí)發(fā)送和接收互聯(lián)網(wǎng)消息等的業(yè)務(wù)。自 1998 年面世以來(lái), 特別是近幾年的迅速發(fā)展,即時(shí)通信的功能日益豐富,逐漸集成了電子郵件、博客、 音樂(lè)、電視、游戲和搜索等多種功能。即時(shí)通信不再是一個(gè)單純的聊天工具,它已經(jīng) 發(fā)展成集交流、資訊、娛樂(lè)、搜索、電子商務(wù)、辦公協(xié)作和企業(yè)客戶服務(wù)等為一體的 綜合化信息平臺(tái)。隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,互聯(lián)網(wǎng)即時(shí)通信也在向移動(dòng)化擴(kuò)張。目前, 微軟、aol、yahoo 等重要即時(shí)通信提供商都提供通過(guò)手機(jī)接入互聯(lián)網(wǎng)即時(shí)通信的業(yè)務(wù), 用戶可以通過(guò)手機(jī)與其他已經(jīng)安裝了相應(yīng)客戶端軟件的手機(jī)或電腦收發(fā)消息。2006 年 6 月,中國(guó)移動(dòng)已經(jīng)推出了自己的即時(shí)通信工具feti
17、on,中國(guó)聯(lián)通也將推出即時(shí)通 訊工具“超信” ,但由于進(jìn)入市場(chǎng)較晚,其用戶規(guī)模和品牌知名度還比不上原有的即時(shí) 通信服務(wù)提供商。 .2 發(fā)展趨勢(shì)發(fā)展趨勢(shì) 目前即時(shí)通信行業(yè)仍處于高速發(fā)展期,通過(guò)調(diào)查發(fā)現(xiàn),即時(shí)通信在未來(lái)的發(fā)展中 呈現(xiàn)出整合多種業(yè)務(wù)、擴(kuò)張移動(dòng)平臺(tái)、滲透企業(yè)用戶、融入收費(fèi)內(nèi)容的發(fā)展趨勢(shì)。 1整合多種業(yè)務(wù) 隨著寬帶的普及,即時(shí)通信的內(nèi)涵也開(kāi)始變化。與過(guò)去的純文本交流不同,新型 的即時(shí)通信業(yè)務(wù)融合了視頻、音頻交流等寬帶應(yīng)用元素。目前各種即時(shí)通信除提供了 基本的即時(shí)互動(dòng)交流外,還能提供視頻、語(yǔ)音通信服務(wù),在短信收發(fā)、文件共享、數(shù) 據(jù)傳輸、游戲、娛樂(lè)、個(gè)性化設(shè)置等方面也都有大的
18、開(kāi)拓和創(chuàng)新??傊?,多媒體化是 即時(shí)通信未來(lái)的發(fā)展方向,未來(lái)即時(shí)通信將捆綁更多的互聯(lián)網(wǎng)和電信增值業(yè)務(wù)功能。 以騰訊 qq 為例,它目前正在大力發(fā)展游戲、音樂(lè)、用戶定制等業(yè)務(wù),今后還可能推廣 新的通信錄、博客服務(wù)、視頻音頻等服務(wù)。同時(shí),qq.com 已經(jīng)是個(gè)成熟的內(nèi)容網(wǎng)站, 現(xiàn)在訪問(wèn)量已經(jīng)排名第四,它會(huì)和 qq 客戶端形成一縱一橫互相支持的業(yè)務(wù)模式。 2擴(kuò)張移動(dòng)平臺(tái) 移動(dòng)通信業(yè)務(wù)的迅速發(fā)展使得傳統(tǒng)的互聯(lián)網(wǎng)即時(shí)通信服務(wù)商將移動(dòng)用戶作為下一 步市場(chǎng)發(fā)展的重點(diǎn),這在移動(dòng)增值服務(wù)成為即時(shí)通信服務(wù)商收入的主要來(lái)源之后體現(xiàn) 尤為突出。即時(shí)通信業(yè)務(wù)承載的設(shè)備也趨于多樣化,用戶通過(guò) pc、手機(jī)、pda 以及其 他
19、設(shè)備等都可以使用即時(shí)通信。msn 和國(guó)內(nèi)的手機(jī)廠商如:多普達(dá)、聯(lián)想等合作,推出 自帶即時(shí)通信業(yè)務(wù)的手機(jī);騰訊 qq 也推出移動(dòng) qq 的即時(shí)通信服務(wù)。 3滲透企業(yè)用戶 即時(shí)通信從個(gè)人通信向企業(yè)綜合通信發(fā)展是其發(fā)展史上的重要一步。隨著企業(yè)信 息化建設(shè)步伐的加快,企業(yè)即時(shí)通信工具(eim)也將作為聯(lián)系和溝通的方式被有針對(duì)性 地應(yīng)用在企業(yè)的日常生產(chǎn)中,作為企業(yè)內(nèi)外溝通方式之一。企業(yè)即時(shí)通信應(yīng)用包括綜 合信息服務(wù)、內(nèi)部即時(shí)通信、在線客戶支持服務(wù)、在線呼叫、在線廣告等。2003 年全 球企業(yè)即時(shí)通信市場(chǎng)收入 1.19 億美元,隨著企業(yè)對(duì) eim 的了解日益加深,這個(gè)數(shù)字會(huì) 繼續(xù)增長(zhǎng)。據(jù)預(yù)測(cè),全球的即時(shí)通
20、信服務(wù)用戶到 2007 年將增長(zhǎng)至 14.39 億戶,其中企 業(yè)用戶數(shù)量將成倍增長(zhǎng),到 2007 年將增至 3.49 億戶。另?yè)?jù) gartner 的調(diào)查數(shù)字顯示, 2004 年在所有使用即時(shí)通信的用戶中,有約 50%是商業(yè)用戶。 4融入收費(fèi)內(nèi)容 在互聯(lián)網(wǎng)這個(gè)以免費(fèi)、自由、互通為生存法則的世界里,即時(shí)通信從一個(gè)免費(fèi)聊 天工具不斷生長(zhǎng)壯大,吸引聚集了一些忠誠(chéng)用戶。在此基礎(chǔ)上,開(kāi)始搭建網(wǎng)絡(luò)廣告、 無(wú)線增值等一系列各種潛在的交易平臺(tái),增加了收費(fèi)的內(nèi)容。未來(lái)即時(shí)通信行業(yè)的盈 利點(diǎn)在互聯(lián)網(wǎng)及增值業(yè)務(wù)、移動(dòng)及固網(wǎng)增值業(yè)務(wù)、廣告業(yè)務(wù)三個(gè)方面。其中,互聯(lián)網(wǎng) 及增值業(yè)務(wù)包括兩部分,核心業(yè)務(wù)主要是即時(shí)通信服務(wù),包括
21、傳輸文本信息、圖像、 視頻、音頻以及會(huì)員服務(wù)、號(hào)碼服務(wù)、電子郵件等;另外還有娛樂(lè)資訊門(mén)戶的建設(shè), 包括向用戶提供新聞、體育、娛樂(lè)等多類(lèi)資訊,還包括游戲中心、交友中心、校友錄、 電子賀卡等多種娛樂(lè)服務(wù)。而移動(dòng)及固網(wǎng)增值業(yè)務(wù)則主要是短信互通和部分 2.5g 產(chǎn)品, 如彩信、彩鈴下載和自寫(xiě)短信、短信訂閱、新聞等多種服務(wù)。也就是說(shuō),當(dāng)用戶通過(guò) 手機(jī)短信與即時(shí)通信軟件上的好友聊天,下載或訂閱短信、彩信等產(chǎn)品時(shí),通過(guò)電信 運(yùn)營(yíng)商的平臺(tái)付費(fèi),電信運(yùn)營(yíng)商收到費(fèi)用之后再與 sp 結(jié)算分成。 第二章第二章 關(guān)鍵技術(shù)關(guān)鍵技術(shù) 語(yǔ)音實(shí)時(shí)通訊涉及到很多方面的技術(shù),在開(kāi)發(fā)的過(guò)程中受到諸多方面的制約, 在本系統(tǒng)的實(shí)現(xiàn)過(guò)程中
22、主要運(yùn)用的關(guān)鍵技術(shù)有: 2.12.1 xmppxmpp協(xié)議協(xié)議 .1 xmppxmpp協(xié)議協(xié)議簡(jiǎn)介簡(jiǎn)介 xmpp(extensible messageing and presence protocol:可擴(kuò)展消息與存在協(xié)議) 的前身是 jabber,一個(gè)開(kāi)源形式組織產(chǎn)生的網(wǎng)絡(luò)即時(shí)通信協(xié)議。xmpp 目前被 ietf 國(guó) 際標(biāo)準(zhǔn)組織完成了標(biāo)準(zhǔn)化工作。標(biāo)準(zhǔn)化的核心結(jié)果分為兩部分:核心的 xml 流傳輸協(xié) 議和基于 xml 流傳輸?shù)募磿r(shí)通訊擴(kuò)展應(yīng)用。 (1)xmpp 的核心 xml 流傳輸協(xié)議的定義使得 xmpp 能夠在一個(gè)比以往網(wǎng)絡(luò)通信協(xié) 議更規(guī)范的平臺(tái)上。借助于 xml 易于解析
23、和閱讀的特性,使得 xmpp 的協(xié)議能夠非常漂 亮地完成相關(guān)工作。 (2)xmpp 的即時(shí)通訊擴(kuò)展應(yīng)用部分是根據(jù) ietf 在這之前對(duì)即時(shí)通訊的一個(gè)抽象 定義的,與其他業(yè)已得到廣泛使用的即時(shí)通訊協(xié)議,諸如 aim,qq 等有功能完整、完 善等先進(jìn)性。 .2 xmppxmpp協(xié)議基本網(wǎng)絡(luò)結(jié)構(gòu)協(xié)議基本網(wǎng)絡(luò)結(jié)構(gòu) xmpp中定義了三個(gè)角色,客戶端,服務(wù)器,網(wǎng)關(guān)。通信能夠在這三者的任意兩 個(gè)之間雙向發(fā)生。服務(wù)器同時(shí)承擔(dān)了客戶端信息記錄,連接管理和信息的路由功能。 網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時(shí)通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括sms(短信) , msn,icq等。基本的網(wǎng)絡(luò)形式是單客戶端通過(guò)tc
24、p/ip連接到單服務(wù)器,然后在之上 傳輸xml。 .2 選擇選擇xmppxmpp協(xié)議的理由協(xié)議的理由 xmpp 是目前主流的四種 im(im:instant messaging,即時(shí)消息)協(xié)議之一,其 他三種分別為:即時(shí)信息和空間協(xié)議(impp)、空間和即時(shí)信息協(xié)議(prim)、針對(duì)即時(shí) 通訊和空間平衡擴(kuò)充的進(jìn)程開(kāi)始協(xié)議 sip(simple)。 在這四種協(xié)議中,xmpp 是最靈活的。xmpp 用傳送與即時(shí)通訊相關(guān)的指令是用 tcp 傳 xml 流,在以前這些命令要么用 2 進(jìn)制的形式發(fā)送(比如 qq) ,要么用純文本指令加 空格加參數(shù)加換行苻的方式發(fā)送(比如 msn) 。而
25、xmpp 傳輸?shù)募磿r(shí)通訊指令的邏輯與以 往相仿,只是協(xié)議的形式變成了 xml 格式的純文本。這不但使得解析容易了,人也容 易閱讀了,方便了開(kāi)發(fā)和查錯(cuò)。xmpp 是一種基于 xml 的協(xié)議,它繼承了在 xml 環(huán)境中 靈活的發(fā)展性。 因此,基于 xmpp 的應(yīng)用具有超強(qiáng)的可擴(kuò)展性。經(jīng)過(guò)擴(kuò)展以后的 xmpp 可以通過(guò)發(fā) 送擴(kuò)展的信息來(lái)處理用戶的需求,以及在 xmpp 的頂端建立如內(nèi)容發(fā)布系統(tǒng)和基于地址 的服務(wù)等應(yīng)用程 序。而且,xmpp 包含了針對(duì)服務(wù)器端的軟件協(xié)議,使之能與另一個(gè)進(jìn) 行通話,這使得開(kāi)發(fā)者更容易建立客戶應(yīng)用程序或給一個(gè)配好系統(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ā) 展,不同 的開(kāi)發(fā)商開(kāi)發(fā)了不同的通信方式。為了使通信成功可靠,網(wǎng)絡(luò)中的所有主機(jī) 都必須使用同 一語(yǔ)言,不能帶有方言,因而必須開(kāi)發(fā)嚴(yán)格的標(biāo)準(zhǔn)定義主機(jī)之間的每個(gè) 包中每個(gè)字中的每 一位。這些標(biāo)準(zhǔn)來(lái)自于多個(gè)組織的努力,約定好通用的通信方式, 即協(xié)議。 tcp/ip 協(xié)議是目前在網(wǎng)絡(luò)中應(yīng)用得最廣泛的協(xié)議,tcp/ip 實(shí)際上是一個(gè)關(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ù)報(bào)協(xié)議)和 ip(因特網(wǎng)協(xié)議) 。tcp 協(xié)議可以在網(wǎng)絡(luò)用戶啟動(dòng)的軟件應(yīng)用進(jìn)程之間建立通信會(huì)話, 并實(shí)現(xiàn)數(shù)據(jù)流量控制和錯(cuò)誤檢測(cè),這樣就可以在不可靠的網(wǎng)絡(luò)上提供可靠的端到端數(shù) 據(jù)傳輸。udp 協(xié)議是一種無(wú)連接的協(xié)議,它在傳輸數(shù)據(jù)之前不建立連接,也不提供良好 的可靠性和差錯(cuò)檢查,只僅僅依賴于校驗(yàn)來(lái)保證可靠性。udp 不進(jìn)行流量控制,沒(méi)有序 列或者確認(rèn),因此它處理和傳輸數(shù)據(jù)的速度快,還被用來(lái)傳輸關(guān)鍵的網(wǎng)絡(luò)狀態(tài)消息。 ip 協(xié)議的基本功能是提供數(shù)據(jù)傳輸、數(shù)據(jù)包編址、數(shù)據(jù)包路由,分段等。通過(guò) ip 編址 約定,可以成功地將數(shù)據(jù)通過(guò)路由傳輸?shù)秸_的網(wǎng)絡(luò)或者子網(wǎng)。每個(gè)網(wǎng)絡(luò)站點(diǎn)具有一 個(gè) 32 位的
28、ip 地址,它和 48 位 mac 地址一起協(xié)作,完成網(wǎng)絡(luò)通信,ip 協(xié)議也是一種無(wú) 連接的協(xié)議。 因?yàn)榭紤]到語(yǔ)音數(shù)據(jù)音比較大(與你的采樣頻率密切相關(guān)) ,而且丟失一小部分?jǐn)?shù) 據(jù)并不會(huì)影響雙方進(jìn)行正常通訊,所以本系統(tǒng)中的語(yǔ)音通訊模塊采用了無(wú)連接、不可 靠、沒(méi)有流量控制但處理和傳輸數(shù)據(jù)的速度快的 udp 進(jìn)行實(shí)現(xiàn)。 2.32.3 socketsocket網(wǎng)絡(luò)編程網(wǎng)絡(luò)編程 利用 socket 編程實(shí)現(xiàn)典型的網(wǎng)絡(luò)通信程序,特別是在實(shí)時(shí)性要求比較高的項(xiàng)目中, winsock 編程方法是非常實(shí)用的。在此必須了解怎樣建立一個(gè) socket,并怎樣用用 socket 建立兩臺(tái)計(jì)算機(jī)之間的連接,最終實(shí)現(xiàn)兩臺(tái)計(jì)
29、算機(jī)之間的數(shù)據(jù)傳送等一系列問(wèn) 題。 2.42.4 音頻捕獲技術(shù)音頻捕獲技術(shù) 語(yǔ)音通訊最先要解決的就是怎樣捕獲說(shuō)話者從麥克風(fēng)中傳進(jìn)來(lái)的語(yǔ)音,本系統(tǒng)中 主要是采用 windows 多媒體相關(guān)應(yīng)用程序接口 winmm.dll 中所提供的一系列系統(tǒng)函數(shù) 進(jìn)行音頻捕獲。其中主要運(yùn)用的函數(shù)有: (1) waveinopen 為錄音而打開(kāi)一個(gè)波形輸入設(shè)備(即得到一個(gè)麥克風(fēng)句柄) 。 (2) waveinprepareheader 為波形輸入設(shè)備準(zhǔn)備一個(gè)輸入緩沖區(qū)。 (3) waveinaddbuffer 向波形輸入設(shè)備添加一個(gè)輸入緩沖區(qū)。 (4) waveinstart 啟動(dòng)在指定的波形輸入設(shè)備的輸入,開(kāi)始
30、錄音。 (5) waveinunprepareheader 清除緩存。 (6) waveinclose 關(guān)閉設(shè)備,停止錄音。 2.52.5 音頻回放技術(shù)音頻回放技術(shù) 當(dāng)本面接收到遠(yuǎn)程主機(jī)捕獲發(fā)送過(guò)來(lái)的音頻數(shù)據(jù)后,還必須經(jīng)過(guò)回放,才能將音 頻數(shù)據(jù)從音響中播放出來(lái),從而達(dá)到語(yǔ)音通訊的目的。本系統(tǒng)中主要是采用windows 多媒體相關(guān)應(yīng)用程序接口winmm.dll中所提供的一系列函數(shù)進(jìn)行音頻回放。其中主要運(yùn) 用的函數(shù)有: (1) waveoutopen 打開(kāi)回放設(shè)備,并得到其句柄。 (2) waveoutprepareheader 為回放設(shè)備準(zhǔn)備一個(gè)波形緩沖區(qū)(內(nèi)存塊)。 (3) waveoutwr
31、ite 向指定的波形輸出設(shè)備發(fā)送一個(gè)數(shù)據(jù)塊。 (4) waveoutrest 停止放音。 (5) waveoutclose 關(guān)閉回放設(shè)備。 2.62.6 音頻采樣技術(shù)音頻采樣技術(shù) 由于計(jì)算機(jī)只能處理離散的二進(jìn)制信息,而人的語(yǔ)音又是連續(xù)的模擬信號(hào),所以 我們必須通過(guò)采樣把模擬信號(hào)轉(zhuǎn)換成離散信號(hào)。實(shí)現(xiàn)這個(gè)步驟使用的設(shè)備是模/數(shù)轉(zhuǎn)換 器(a/d) ,它以每秒上萬(wàn)次的速率對(duì)聲波進(jìn)行采樣,每一次采樣都記錄下了原始模擬 聲波在某一時(shí)刻的狀態(tài),稱之為樣本。將一串的樣本連接起來(lái),就可以描述一段聲波 了。把每一秒鐘所采樣的數(shù)目稱為采樣頻率或采率,單位為 hz(赫茲) 。采樣頻率越 高所能描述的聲波頻率就越高。采
32、樣位數(shù)可以理解為采集卡處理聲音的解析度。這個(gè) 數(shù)值越大,解析度就越高,錄制和回放的聲音就越真實(shí)。 本系統(tǒng)中采用 pcm(脈沖編碼調(diào)制 )進(jìn)行模/數(shù)轉(zhuǎn)換,樣頻率采用 8000hz, 采樣位數(shù)采用 16 位。 2.72.7 音頻壓縮音頻壓縮/ /解壓技術(shù)解壓技術(shù) 為了保證語(yǔ)音不失真,必須保證達(dá)到一定的采樣頻率(當(dāng)然也不能過(guò)高)和一定 的采樣位數(shù)。這樣,音頻數(shù)據(jù)量將非常大,若不加以壓縮而直接傳輸,很可能會(huì)導(dǎo)致 網(wǎng)絡(luò)阻塞、數(shù)據(jù)大量丟失等情況,所以必須采用適當(dāng)?shù)募夹g(shù)對(duì)采樣到的數(shù)據(jù)進(jìn)行壓縮 再進(jìn)行傳送,在接收端得到數(shù)據(jù)后再經(jīng)過(guò)解壓還原得到原來(lái)的音頻數(shù)據(jù)。本系統(tǒng)主要 采用了g729.dll中包含的壓縮與解壓
33、算法對(duì)音頻數(shù)據(jù)進(jìn)行壓縮、解壓。 2.82.8 p2pp2p技術(shù)技術(shù) p2p就是點(diǎn)對(duì)點(diǎn)。當(dāng)在兩臺(tái)主機(jī)之間語(yǔ)音通訊連接已經(jīng)建立后,就不需要再用到 服務(wù)器了。因?yàn)檎Z(yǔ)音數(shù)據(jù)不會(huì)再經(jīng)過(guò)服務(wù)器傳送到另一臺(tái)主機(jī)上去,這樣既消耗服務(wù) 器的資源,又增加了數(shù)據(jù)的傳送時(shí)間。所以,在連接建立之后,兩臺(tái)主機(jī)之間就進(jìn)行 數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)傳輸,既節(jié)省資源,又加快了數(shù)據(jù)的傳輸速度。 第三章第三章 語(yǔ)音通訊系統(tǒng)的分析語(yǔ)音通訊系統(tǒng)的分析 3.13.1 語(yǔ)音通訊系統(tǒng)可行性分析語(yǔ)音通訊系統(tǒng)可行性分析 1技術(shù)可行性分析 對(duì)于當(dāng)前的語(yǔ)音通訊系統(tǒng),在技術(shù)上有很大的選擇,但其根本都會(huì)用到網(wǎng)絡(luò)編程 的基本知識(shí)。根據(jù)對(duì)目前比較流行的編程語(yǔ)言以及通信
34、協(xié)議的比較,筆者在技術(shù)上選 擇 visual studio 2005 作為 ide,以 visual c#作為編程語(yǔ)言,結(jié)合網(wǎng)絡(luò)編程技術(shù)以 及 xmpp 即時(shí)通信協(xié)議進(jìn)行此次開(kāi)發(fā)。visual studio 2005 的集成性與功能強(qiáng)大性、 visual c#的便捷性與靈活性、xmpp 協(xié)議的可擴(kuò)展性和對(duì)網(wǎng)絡(luò)編程的支持性保證了本次 系統(tǒng)開(kāi)發(fā)在技術(shù)上的可行性。 2經(jīng)濟(jì)可行性分析 從論文背景中可知,隨著互聯(lián)網(wǎng)用戶的快速增長(zhǎng),即時(shí)通信用戶也日益增長(zhǎng), 2004 年中國(guó)即時(shí)通信用戶數(shù)達(dá) 7000 萬(wàn)人,2005 年達(dá)到 9300 萬(wàn)人。中國(guó)即時(shí)通信市場(chǎng) 規(guī)模在 2005 年約為 6200 萬(wàn)美元, 2
35、006 年達(dá)到 7700 萬(wàn)美元,到 2010 年將達(dá)到 1.14 億美元。即時(shí)通信的市場(chǎng)需求是非常大的,而系統(tǒng)采用小團(tuán)隊(duì)方式開(kāi)發(fā)在局域網(wǎng)內(nèi)的 即時(shí)通信系統(tǒng),在局域網(wǎng)內(nèi)實(shí)現(xiàn)在線交流、文件傳輸、實(shí)時(shí)語(yǔ)音通訊和視屏通訊等功 能。面向各類(lèi)企事業(yè)部門(mén)等局域網(wǎng)用戶,利用網(wǎng)絡(luò)實(shí)現(xiàn)在局域網(wǎng)內(nèi)的實(shí)時(shí)語(yǔ)音聊天, 方便內(nèi)部人員進(jìn)行實(shí)時(shí)交流,共同解決工作生活中遇到的困難,為企事業(yè)以及其它的 局域網(wǎng)用戶帶來(lái)方便。研發(fā)成功后即可在企事業(yè)以及其它局域網(wǎng)用戶中得到普遍運(yùn)用, 而相對(duì)來(lái)說(shuō)研發(fā)成本就比較低。而且此系統(tǒng)的運(yùn)行環(huán)境即局域網(wǎng)的組建也比較簡(jiǎn)單, 費(fèi)用也較低,所以運(yùn)行環(huán)境的配置費(fèi)用比較低,可以獲得廣泛的運(yùn)用。所以其帶來(lái)的
36、 經(jīng)濟(jì)效益遠(yuǎn)遠(yuǎn)超過(guò)開(kāi)發(fā)成本,在經(jīng)濟(jì)上也具有可行性。 3操作可行性分析 通過(guò)對(duì)周邊人群的調(diào)查顯示,決大部分人現(xiàn)在都在使用即時(shí)通信工具,本語(yǔ)音通 訊系統(tǒng)采用與現(xiàn)代比較流行的即時(shí)通信工具 qq 相似的操作方式,在用戶發(fā)出請(qǐng)求并經(jīng) 對(duì)方同意后,方可進(jìn)行語(yǔ)音聊天,并且在聊天過(guò)程中可以隨意調(diào)整音量大小,也可以 隨時(shí)結(jié)束語(yǔ)音通訊,這種操作方式合乎人們生活習(xí)慣,也具有可行性。 3.23.2 語(yǔ)音通訊系統(tǒng)需求分析語(yǔ)音通訊系統(tǒng)需求分析 .1 項(xiàng)目總述項(xiàng)目總述 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,網(wǎng)上辦公、網(wǎng)上購(gòu)物、網(wǎng)上交友等正在以飛快的速度走 進(jìn)大眾的生活中,人們可以在網(wǎng)上做在現(xiàn)實(shí)生活中做的很多事情,而現(xiàn)實(shí)生活
37、中最重 要的一件事情就是交流,人與人的交流莫過(guò)于口頭直接進(jìn)行交流最為直觀最為快捷。 在這個(gè)“互聯(lián)網(wǎng)世界”的今天,為了方便內(nèi)部人員進(jìn)行實(shí)時(shí)交流,共同解決工作生活 中遇到的困難,為企事業(yè)以及其它的局域網(wǎng)用戶帶來(lái)方便;為了解決以前人們通過(guò)計(jì) 算機(jī)只能用文字進(jìn)行交流的局限性,實(shí)時(shí)語(yǔ)音通訊已經(jīng)成為現(xiàn)實(shí)生活中不可缺少的一 部分。實(shí)現(xiàn)在局域網(wǎng)內(nèi)語(yǔ)音實(shí)時(shí)聊天,是人們?cè)诨ヂ?lián)網(wǎng)上便利生活、工作,學(xué)習(xí)的基 礎(chǔ)。 語(yǔ)音聊天是此即時(shí)通信系統(tǒng)的一個(gè)核心子模塊,它采用現(xiàn)代比較流行的網(wǎng)絡(luò)編程 技術(shù),面向各類(lèi)企事業(yè)部門(mén)等局域網(wǎng)用戶,實(shí)現(xiàn)實(shí)時(shí)語(yǔ)音捕獲,音頻數(shù)據(jù)壓縮與發(fā)送, 音頻數(shù)據(jù)接收與回放等功能,從而達(dá)到了實(shí)時(shí)語(yǔ)音通訊的目的,
38、方便內(nèi)部人員進(jìn)行實(shí) 時(shí)交流,共同解決工作生活中遇到的困難,為企事業(yè)以及其它的局域網(wǎng)用戶帶來(lái)方便。 .2 市場(chǎng)需求分析市場(chǎng)需求分析 近年來(lái),即時(shí)通信市場(chǎng)用戶規(guī)模增長(zhǎng)迅速,市場(chǎng)規(guī)模前景廣闊。隨著互聯(lián)網(wǎng)用戶 的快速增長(zhǎng),即時(shí)通信用戶也日益增長(zhǎng),2004 年中國(guó)即時(shí)通信用戶數(shù)達(dá) 7000 萬(wàn)人, 2005 年達(dá)到 9300 萬(wàn)人。2006 年中國(guó)即時(shí)通信用戶增長(zhǎng) 29%,達(dá)到 1.2 億人。另外, iresearch 根據(jù) morganstanley 發(fā)表的研究數(shù)字整理發(fā)現(xiàn),中國(guó)即時(shí)通信市場(chǎng)規(guī)模在 2005 年約為 6200 萬(wàn)美元,在 2006 年達(dá)到 7700 萬(wàn)美元,到 2010
39、 年將達(dá)到 1.14 億美元。 移動(dòng)即時(shí)通信市場(chǎng)有著更加巨大的成長(zhǎng)空間和誘惑力。據(jù) iresearch2006 年 5 月發(fā)布 的調(diào)查報(bào)告顯示,2005 年我國(guó)移動(dòng)即時(shí)通信的用戶已達(dá)到 500 萬(wàn);而在 2006 年,我國(guó) 移動(dòng)即時(shí)通信注冊(cè)用戶量達(dá)到 700 萬(wàn);未來(lái)幾年移動(dòng)即時(shí)通信用戶規(guī)模將呈現(xiàn)快速增 圖 3-1 語(yǔ)音通訊系統(tǒng)用例圖 fig.3-1:the use case diagram of audio communication system 長(zhǎng),預(yù)計(jì)到 2010 年中國(guó)移動(dòng)即時(shí)通信用戶將達(dá)到 2000 萬(wàn)人。 上面這些數(shù)字表明,即時(shí)通信系統(tǒng)的市場(chǎng)需求量是非常大的,而語(yǔ)音作為即時(shí)通 信
40、的一個(gè)核心模塊,也將廣泛的應(yīng)用。而且隨著企事業(yè)單位以及其它局域網(wǎng)用戶對(duì)語(yǔ) 音通信的使用,其市場(chǎng)將越來(lái)越大,對(duì)其的需求也將隨之增大。 .3 用戶需求分析用戶需求分析 在本系統(tǒng)中主要采用問(wèn)卷調(diào)查以及與當(dāng)前比較流行的即時(shí)通信系統(tǒng)(如 qq)作比較 而得到用戶對(duì)語(yǔ)音通信的一些基本要求:一是速度要快(也就是要實(shí)時(shí)) ,二是質(zhì)量要 好(不能出現(xiàn)太大的雜音而影響正常通信),三是應(yīng)該能在通信過(guò)程中動(dòng)態(tài)調(diào)節(jié)音量 的大小,并能進(jìn)行靜音操作等。 .4 軟件性能要求軟件性能要求 實(shí)時(shí)語(yǔ)音通訊系統(tǒng)的兩大性能要求就是速度和質(zhì)量。在速度上不能出現(xiàn)太大的延 遲,因?yàn)檠舆t太大可能會(huì)丟失很大一部分
41、用戶,另外就是質(zhì)量上的要求,語(yǔ)音通訊質(zhì) 量是一個(gè)與速度一樣重要的問(wèn)題,在通信過(guò)程中不能出現(xiàn)太大的雜音,也不能出現(xiàn)語(yǔ) 音失真的現(xiàn)象。 .5 軟件功能需求軟件功能需求 在整個(gè)語(yǔ)音通訊過(guò)程中,涉及到客戶端與服務(wù)器兩個(gè)重要的角色,客戶端是語(yǔ)音 通訊的主體,而服務(wù)器只是 用于此語(yǔ)音通信連接的建立。 其中客戶端中包含著兩種不 同的角色,一個(gè)是請(qǐng)求方, 而另一個(gè)則是接收請(qǐng)求方。 首先由請(qǐng)求方發(fā)出通信請(qǐng)求, 經(jīng)服務(wù)器中轉(zhuǎn)后傳給接收方, 只有在接收方同意進(jìn)行語(yǔ)音 通訊請(qǐng)求后才能進(jìn)行正常的 語(yǔ)音聊天,系統(tǒng)用例圖見(jiàn) 3- 1,與各個(gè)角色相關(guān)的詳細(xì)功能見(jiàn)表 3-1: (1)請(qǐng)求方:可以把其看成是一個(gè)人
42、,也可以看作是一臺(tái)主機(jī)。請(qǐng)求方最先發(fā)出 語(yǔ)音通訊請(qǐng)求,然后等待接收方的處理反饋信息,只有在接收方同意之后才能進(jìn)行相 關(guān)的語(yǔ)音通訊準(zhǔn)備工作,進(jìn)而進(jìn)行語(yǔ)音聊天,最后可以點(diǎn)擊“結(jié)束”按鈕結(jié)束語(yǔ)音通 訊。 (2)服務(wù)器:一臺(tái)主機(jī)。其中轉(zhuǎn)請(qǐng)求方發(fā)送過(guò)來(lái)的請(qǐng)求消息給接收方,在接收方 進(jìn)行處理之后,再將其反饋信息中轉(zhuǎn)給請(qǐng)求方。在連接建立完成之后,通信雙方進(jìn)行 點(diǎn) 對(duì)點(diǎn)通信,將不再使用服務(wù)器。 (3)接收請(qǐng)求方:當(dāng)對(duì)方發(fā)出請(qǐng)求后,接收請(qǐng)求方可以進(jìn)行“接受”或者“拒絕”處 理,并將其處理反饋信息回發(fā)給請(qǐng)求方。若此處點(diǎn)擊“接受”則還要進(jìn)行相應(yīng)的語(yǔ)音 通訊工作然后開(kāi)始正常語(yǔ)音通訊,最后可以點(diǎn)擊“結(jié)束”按鈕結(jié)束語(yǔ)音通
43、訊。 3.33.3 語(yǔ)音通訊系統(tǒng)流程分析語(yǔ)音通訊系統(tǒng)流程分析 語(yǔ)音通訊是即時(shí)通信系統(tǒng)中的一個(gè)核心模塊,是實(shí)現(xiàn)人們即時(shí)交流的重要工具, 而傳統(tǒng)的一些諸如飛鴿傳書(shū)之類(lèi)的局域網(wǎng)聊天工具雖然實(shí)現(xiàn)了在局域網(wǎng)內(nèi)文字聊天、 表 3-1:各個(gè)角色相關(guān)的功能 table.3-1 various role-related functions 編號(hào)名稱描述主要路徑前置條件 1 請(qǐng)求方發(fā)出 請(qǐng)求 雙方要想進(jìn)行語(yǔ)音通 請(qǐng)求方必須先發(fā)出請(qǐng)求 點(diǎn)擊發(fā)送請(qǐng)求按鈕- 據(jù)對(duì)方 ip 發(fā)發(fā)送請(qǐng)求 聊天窗口 已經(jīng)打開(kāi) 2 請(qǐng)求方處理 反饋信息 當(dāng)請(qǐng)求方發(fā)出的請(qǐng)求經(jīng)對(duì)方處理之 后,根據(jù)其反饋信息進(jìn)行相應(yīng)操作 接收反饋信息-根據(jù)對(duì)方反饋
44、信息 類(lèi)型進(jìn)行處理 收到對(duì)方 反饋信息 3 請(qǐng)求方語(yǔ)音 通訊準(zhǔn)備 接受請(qǐng)求方的請(qǐng)求后,自己應(yīng)完成 語(yǔ)音通訊相應(yīng)的準(zhǔn)備工作 建立音頻捕獲/回放對(duì)象-開(kāi)始音頻 捕獲與回放 對(duì)方接受 請(qǐng)求 4 結(jié)束語(yǔ)音通 訊 當(dāng)請(qǐng)求方/被請(qǐng)求方點(diǎn)擊“結(jié)束”按 鈕即可結(jié)束本次語(yǔ)音通信 點(diǎn)擊結(jié)束按鈕-發(fā)送結(jié)束的消息給 對(duì)方-關(guān)閉設(shè)備,結(jié)束通信 正常的語(yǔ) 音通信中 5 服務(wù)器中轉(zhuǎn) 信息 當(dāng)服務(wù)器接收到通信雙方傳給另外 一方的消息時(shí),進(jìn)行消息轉(zhuǎn)發(fā)給對(duì) 方 接收客戶端發(fā)送來(lái)的消息-根據(jù)其 中包含的 id 進(jìn)行消息轉(zhuǎn)發(fā) 客戶端發(fā) 送了消息 6服務(wù)器查找 用戶 服務(wù)器在進(jìn)行消息轉(zhuǎn)發(fā)時(shí),會(huì)根據(jù) 其 id 查找到此條消息應(yīng)該發(fā)送給誰(shuí)
45、 在所有的在線用戶中進(jìn)行查找 id 與 接收此消息 id 相同的人即可 有消息通 過(guò)服務(wù)器 7 被請(qǐng)求方處 理請(qǐng)求 接收到請(qǐng)求方的請(qǐng)求后要進(jìn)行相應(yīng) 的處理,并將處理結(jié)果反饋對(duì)請(qǐng)求 方 接收對(duì)方的請(qǐng)求-進(jìn)行相應(yīng)的處理- 信息反饋 被請(qǐng)求方 收到請(qǐng)求 8 被請(qǐng)求方語(yǔ) 音通訊準(zhǔn)備 接受請(qǐng)求方的請(qǐng)求后,自己應(yīng)完成 語(yǔ)音通訊相應(yīng)的準(zhǔn)備工作 建立音頻捕獲/回放對(duì)象-開(kāi)始音頻 捕獲與回放 接受對(duì)方 請(qǐng)求 文件傳送等一系列功能,但其在語(yǔ)音方面卻尚未涉足,給用戶的實(shí)時(shí)交流帶來(lái)一定的 影響。所以,本系統(tǒng)以即時(shí)通信在現(xiàn)實(shí)生活中大量應(yīng)用為契機(jī),實(shí)現(xiàn)了局域網(wǎng)內(nèi)兩臺(tái) 臺(tái)主機(jī)實(shí)時(shí)語(yǔ)音聊天。只要其中任意一個(gè)用戶發(fā)出語(yǔ)音聊天的
46、請(qǐng)求,對(duì)方就會(huì)接收到 一個(gè)請(qǐng)求,若同意之后雙方就可以進(jìn)行隨意的語(yǔ)音聊天了,并且在聊天過(guò)程中可以設(shè) 置音量的大小,最后點(diǎn)擊結(jié)束鍵結(jié)束語(yǔ)音聊天。 首先對(duì)語(yǔ)音通訊流程進(jìn)行分析,流程分析是整個(gè)系統(tǒng)的基礎(chǔ),它給出了語(yǔ)音是怎 樣從一臺(tái)主機(jī)捕獲并發(fā)送到另一臺(tái)機(jī)的整個(gè)過(guò)程。一般語(yǔ)音通訊系統(tǒng)應(yīng)該包括:建立 連接,音頻捕獲,音頻發(fā)送(包括音頻壓縮),音頻接收,音頻回放(包括音頻解壓) 五個(gè)部分。其基本流程為:建立連接打開(kāi)麥克風(fēng)捕獲音頻音頻壓縮音頻傳送 音頻接收音頻解壓音頻回放。 3.43.4 語(yǔ)音通訊系統(tǒng)數(shù)據(jù)流圖語(yǔ)音通訊系統(tǒng)數(shù)據(jù)流圖 本語(yǔ)音通訊系統(tǒng)主要是是實(shí)現(xiàn)在局域網(wǎng)內(nèi)的實(shí)時(shí)語(yǔ)音聊天,需要一臺(tái)主機(jī)充當(dāng)服 務(wù)器,另
47、外的計(jì)算機(jī)連接到這臺(tái)服務(wù)器上。當(dāng)通信雙方中的一方給對(duì)方發(fā)出語(yǔ)音聊天 請(qǐng)求后,服務(wù)器進(jìn)行轉(zhuǎn)發(fā)最后雙方建立通信連接。在雙方通信連接建立后就可以在兩 臺(tái)計(jì)算機(jī)之間進(jìn)行點(diǎn)對(duì)點(diǎn)音頻數(shù)據(jù)傳輸。本地主機(jī)捕獲音頻設(shè)備中的音頻數(shù)據(jù),并經(jīng) 過(guò)壓縮然后發(fā)送給對(duì)方,在對(duì)方接收到此音頻數(shù)據(jù)之后經(jīng)解壓回放。具體數(shù)據(jù)流走向 是:一方(a方)發(fā)出請(qǐng)求經(jīng)過(guò)服務(wù)器轉(zhuǎn)發(fā)到另一方(b方),經(jīng)過(guò)b方對(duì)a方提出的請(qǐng) 求進(jìn)行處理,然后將其反饋消息返回給a方(此處假設(shè)b方選擇了接受),則a方將得 到對(duì)方的ip地址并打開(kāi)自己語(yǔ)音設(shè)備開(kāi)始進(jìn)行音頻捕獲、壓縮并發(fā)送,而b方在進(jìn)行 音頻捕獲的同時(shí)進(jìn)行音頻接收、解壓與回放。所以可以得到頂層數(shù)據(jù)流圖見(jiàn)圖
48、3-2: 圖 3-2: 頂層數(shù)據(jù)流圖 fig.3-2 the top-level dfd 在上面頂層數(shù)據(jù)流圖中,有處理語(yǔ)音請(qǐng)求、捕獲音頻與發(fā)送、音頻接收與回放三 大處理,這三個(gè)處理分別表示: 1處理語(yǔ)音請(qǐng)求:請(qǐng)求方提出的語(yǔ)音聊天請(qǐng)求,經(jīng)服務(wù)器進(jìn)行轉(zhuǎn)發(fā)給對(duì)方,然后經(jīng)過(guò) 對(duì)方的處理再通過(guò)服務(wù)器將其反饋消息轉(zhuǎn)發(fā)到請(qǐng)求方,請(qǐng)求方根據(jù)對(duì)方的應(yīng)答消息完 成相應(yīng)的動(dòng)作,若對(duì)方是接受了此語(yǔ)音請(qǐng)求,則將此應(yīng)答消息發(fā)送給音頻捕獲與發(fā)送 處理開(kāi)始此次語(yǔ)音通信。 2捕獲音頻與發(fā)送:當(dāng)請(qǐng)求方接收到對(duì)方“接受”語(yǔ)音請(qǐng)求的應(yīng)答消息后,就會(huì)打開(kāi) 自己的音頻設(shè)備啟動(dòng)音頻捕獲處理,并將捕獲到的音頻數(shù)據(jù)進(jìn)行壓縮處理之后發(fā)送給 對(duì)方
49、。在發(fā)送給對(duì)方的過(guò)程中會(huì)用到處理語(yǔ)音請(qǐng)求過(guò)程中所得到的對(duì)方的 ip 地址。 3音頻接收與回放:當(dāng)對(duì)方(b)收到 a 方傳過(guò)來(lái)的音頻數(shù)據(jù)后,首先其會(huì)通過(guò)解壓 處理而得到最初的音頻數(shù)據(jù)然后在接收方的音頻設(shè)備中進(jìn)行回放。 根據(jù)以上分析及頂層數(shù)據(jù)流圖可得細(xì)化數(shù)據(jù)流圖見(jiàn)圖 3-3: 圖 3-3: 細(xì)化數(shù)據(jù)流圖 fig.3-3 the detailed dfd 第四章第四章 語(yǔ)音通訊系統(tǒng)的設(shè)計(jì)語(yǔ)音通訊系統(tǒng)的設(shè)計(jì) 4.14.1 系統(tǒng)結(jié)構(gòu)系統(tǒng)結(jié)構(gòu) 即時(shí)通信系統(tǒng)采用cs結(jié)構(gòu)模式,即:服務(wù)器/客戶端模式。但語(yǔ)音通訊模塊只是 依靠服務(wù)器進(jìn)行兩個(gè)客戶端連接的建立,當(dāng)兩個(gè)客戶端的連接建立以后,將不使用服 務(wù)器,而是采用
50、p2p模式進(jìn)行通信。因?yàn)檎Z(yǔ)音數(shù)據(jù)不會(huì)再經(jīng)過(guò)服務(wù)器傳送到另一臺(tái)主機(jī) 上去,這樣既消耗服務(wù)器的資源,又增加了數(shù)據(jù)的傳送時(shí)間。所以,采用這種結(jié)構(gòu), 兩臺(tái)主機(jī)之間就進(jìn)行數(shù)據(jù)的點(diǎn)對(duì)點(diǎn)傳輸,既節(jié)省資源,又加快了數(shù)據(jù)的傳輸速度。系 統(tǒng)結(jié)構(gòu)圖見(jiàn)圖4-1: 圖4-1:系統(tǒng)結(jié)構(gòu)模式 fig.4-1 system architecture model 4.24.2 開(kāi)發(fā)工具開(kāi)發(fā)工具 由于開(kāi)發(fā)基于網(wǎng)絡(luò)的語(yǔ)音通訊系統(tǒng),所以現(xiàn)在比較流行的幾中語(yǔ)言就是 c+、java 和 c#,基于幾種平臺(tái)和語(yǔ)言的比較,最終選擇了 visual studio 2005 作為 ide,選擇 visual c#語(yǔ)言來(lái)實(shí)現(xiàn)此語(yǔ)音通訊系統(tǒng),選擇
51、vs2005 和 visual c#的理由如下: visual studio 是一套完整的開(kāi)發(fā)工具集,用于生成 asp.net web 應(yīng)用程序、 xml web services、桌面應(yīng)用程序和移動(dòng)應(yīng)用程序。visual basic、visual c+、visual c# 和 visual j# 全都使用相同的集成開(kāi)發(fā)環(huán)境 (ide),利用此 ide 可 以共享工具且有助于創(chuàng)建混合語(yǔ)言解決方案。另外,這些語(yǔ)言利用了 .net framework 的功能,通過(guò)此框架可使用簡(jiǎn)化 asp web 應(yīng)用程序和 xml web services 開(kāi)發(fā)的關(guān)鍵 技術(shù)。而 visual c#是微軟推出的一種
52、比較新的一種面向?qū)ο缶幊陶Z(yǔ)言,它使得程序員 可以快速地編寫(xiě)各種基于 microsoft .net 平臺(tái)的應(yīng)用程序,microsoft .net 提供了一 系列的工具和服務(wù)來(lái)最大程度地開(kāi)發(fā)利用計(jì)算與通訊領(lǐng)域。因此選擇 vs2005 作為 ide 來(lái)進(jìn)行此次開(kāi)發(fā)。 相對(duì)以前的編程語(yǔ)言來(lái)說(shuō),c#語(yǔ)言在效率與安全性上得了很大的改善,并且支持 現(xiàn)有的網(wǎng)絡(luò)編程新標(biāo)準(zhǔn),它使程序員快速便捷地創(chuàng)建基于 microsoft .net 平臺(tái)的解決 方案。這種框架使 c#組件可以方便地轉(zhuǎn)化為 xml 網(wǎng)絡(luò)服務(wù),從而使任何平臺(tái)的應(yīng)用程 序都可以通過(guò) internet 調(diào)用它。還有,c#增強(qiáng)了開(kāi)發(fā)者的效率,同時(shí)也致力于消
53、除編 程中可能導(dǎo)致嚴(yán)重結(jié)果的錯(cuò)誤,使得 c/c+程序員可以快速進(jìn)行網(wǎng)絡(luò)開(kāi)發(fā),同時(shí)也保持 了開(kāi)發(fā)者所需要的功能強(qiáng)大性和靈活性。于是筆者選擇 visual c#語(yǔ)言來(lái)進(jìn)行此次開(kāi)發(fā)。 4.34.3 流程設(shè)計(jì)流程設(shè)計(jì) 一般語(yǔ)音通訊系統(tǒng)的流程應(yīng)該包括:建立連接,音頻捕獲,音頻發(fā)送(包括音頻 壓縮),音頻接收,音頻回放(包括音頻解壓)五個(gè)部分。其基本流程為:建立連接 初始化麥克風(fēng)(打開(kāi)音頻設(shè)備)捕獲音頻音頻壓縮音頻傳送音頻接收音頻 解壓音頻回放。其流程具體設(shè)計(jì)如下: (1)建立連接:兩臺(tái)計(jì)算機(jī)之間進(jìn)行語(yǔ)音通訊,首先就是要在雙方進(jìn)行連接的建立, 然后雙方才能夠進(jìn)行通訊,確定數(shù)據(jù)發(fā)送到什么地方。本系統(tǒng)中一方先
54、發(fā)出語(yǔ)音聊天 請(qǐng)求,并通過(guò) xmpp 協(xié)議根據(jù)對(duì)方的 id 把請(qǐng)求發(fā)送給對(duì)方,在接收方接收到請(qǐng)求并點(diǎn) 擊“接受”后,接收方完成自己語(yǔ)音通訊相關(guān)的工作,并且再根據(jù)發(fā)送方的 id 發(fā)送一 個(gè)消息回去,表示自己已經(jīng)接受,在最初發(fā)出請(qǐng)求的主機(jī)接收到對(duì)方已接收請(qǐng)受后, 此主機(jī)也完成自己語(yǔ)音通訊相關(guān)的工作,至此雙方的連接建立完畢,可以正常進(jìn)行通 信了。 (2)音頻捕獲:先初始化麥克風(fēng),再打開(kāi)本機(jī)的“混音器”并得其句柄,根據(jù)此句柄 調(diào)用 winmm.dll 中所提供的一系列函數(shù)進(jìn)行捕獲音頻,并把其存放在一個(gè)數(shù)組中(因 為采用 pcm,所以捕獲到的音頻是一此離散的數(shù)字)。 (3)音頻發(fā)送:建立 socket
55、連接(udp 協(xié)議),利用 socket 的 beginsendto()函數(shù) 將數(shù)據(jù)發(fā)送給遠(yuǎn)程主機(jī)。這個(gè)過(guò)程中會(huì)用到 g729 提供的壓縮算法對(duì)存放于數(shù)組中的數(shù) 據(jù)進(jìn)行 16:1 的壓縮,減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。 (4)音頻接收:建立 socket 連接(udp 協(xié)議),利用 socket 的 beginreceivefrom() 函數(shù)從指定的遠(yuǎn)程主機(jī)接收數(shù)據(jù)并存放于一個(gè)數(shù)組中。 (5)音頻回放:本機(jī)通過(guò)音頻接收已經(jīng)將遠(yuǎn)程主機(jī)發(fā)送來(lái)的音頻數(shù)據(jù)保存在了一個(gè)數(shù) 組中,這里只需根據(jù)本機(jī)的“混音器”句柄調(diào)用 winmm.dll 中所提供的一系列函數(shù)進(jìn) 行即可實(shí)現(xiàn)語(yǔ)音回放功能。當(dāng)然,這里在回放之前會(huì)先調(diào)用
56、 g729 提供解壓算法對(duì)保存 于數(shù)組中的音頻數(shù)據(jù)進(jìn)行解壓。 4.44.4 語(yǔ)音通訊系統(tǒng)總體設(shè)計(jì)語(yǔ)音通訊系統(tǒng)總體設(shè)計(jì) 本語(yǔ)音通訊系統(tǒng)采用面向?qū)ο蟮幕局R(shí),再結(jié)合系統(tǒng)的需求分析和基本流程, 將系統(tǒng)主要分為如下四個(gè)模塊:登錄模塊,連接建立模塊,音頻捕獲模塊,音頻回放 模塊。其中音頻捕獲模塊和音頻回放模塊又可以分為若干小的模塊,最后其每一個(gè)小 的模塊都采用一個(gè)類(lèi)來(lái)進(jìn)行實(shí)現(xiàn)。總體設(shè)計(jì)見(jiàn)圖4-2: 圖 4-3:登錄模塊流程圖 fig.4-3 flow chart of login module 圖4-2:功能模塊的總體設(shè)計(jì)圖 fig.4-2 total design of function modul
57、e 4.54.5 語(yǔ)音通訊系統(tǒng)詳細(xì)設(shè)計(jì)語(yǔ)音通訊系統(tǒng)詳細(xì)設(shè)計(jì) .1 登錄模塊登錄模塊 這個(gè)模塊是整個(gè)即時(shí)通信系統(tǒng)所共用的一 個(gè)模塊,是進(jìn)入本即時(shí)通信系統(tǒng)的界面,在這 個(gè)模塊中主要是根據(jù)用戶id和password(把其存 放xmppclientconnection的一個(gè)對(duì)象中)采用 xmpp協(xié)議的xmppclientconnection對(duì)象提供的 open()方法發(fā)送到指定的服務(wù)器上進(jìn)行驗(yàn)證, 若驗(yàn)證成功,服務(wù)器會(huì)將其登錄成功的消息以 及與此用戶相關(guān)的一些信息(如:詳細(xì)信息, 好友列表等到)一起返回到客戶端,從而讓用 戶進(jìn)入登錄后的主界面mainfrom窗體,在這個(gè) 窗體中顯示了此
58、用戶可以進(jìn)行的一系列操作和 圖 4-5:音頻捕獲模塊流程圖 fig.4-5flow chart of audio capture moudle 該用戶的好友列表。在用戶登錄進(jìn)服務(wù)器的同時(shí),在服務(wù)器中記錄下此用戶的id以及 其ip地址,以便其它用戶上線時(shí)查用。其流程圖見(jiàn)圖4-3: .2 建立連接模塊建立連接模塊 兩個(gè)用戶要進(jìn)行語(yǔ)音通訊必須在一方發(fā)送請(qǐng)求而另一方接收請(qǐng)求,然后建立其連 接的情況下才能發(fā)生。此模塊主要完成兩個(gè)功能:一個(gè)是初始化麥克風(fēng),另一個(gè)就是 建立通信連接,從而能進(jìn)行正常語(yǔ)音通信。 1.初始化音頻設(shè)備 語(yǔ)音的大小可以通過(guò)音頻設(shè)備進(jìn)行控制,所以我們必須得到音頻設(shè)備的句
59、柄最終 實(shí)現(xiàn)對(duì)聲音大小的控制。所以我們必須初始化音頻設(shè)備(其實(shí)是建立類(lèi)的一個(gè)對(duì)象), 并在聊天過(guò)程中可以改變音量的大小。此初始化過(guò)程是用戶點(diǎn)擊另一個(gè)用戶想進(jìn)行聊 天的時(shí)候進(jìn)行實(shí)現(xiàn),主要是通過(guò)在我們自己定義的一個(gè)自定義控件中進(jìn)行調(diào)用 av.dll 中的 mixer 類(lèi)進(jìn)行實(shí)現(xiàn)。其中 mixer 類(lèi)主要完成:根據(jù)給定的窗口句柄打開(kāi)混音器, 獲取混音器設(shè)備指定的線路信息, 獲取關(guān)聯(lián)音頻 線路的一個(gè)或多個(gè)控制器并從控制器中得到其音 量等信息,獲取指定控制器的詳細(xì)信息, 設(shè)置指 定控制器的詳細(xì)信息。這樣我們其對(duì)象來(lái)調(diào)節(jié)麥 克風(fēng)以及揚(yáng)聲器音量的大小。 2.建立通信連接 系統(tǒng)中一方先發(fā)出語(yǔ)音聊天請(qǐng)求(將自己
60、的 ip 放于一個(gè) oob 對(duì)象(oob 類(lèi)是 xmpp 協(xié)議提供的 一個(gè)表示語(yǔ)音聊天的專(zhuān)用類(lèi))中,并將此 oob 對(duì) 象存于 iq 的對(duì)象中,并設(shè)置 iq 的相關(guān)屬性 (to,type),通過(guò) xmppclientconnection 對(duì)象 發(fā)送給指定的用戶,在服務(wù)器接收到此 iq 信息后, 判斷這是發(fā)給哪一個(gè)用戶的 iq 進(jìn)而轉(zhuǎn)發(fā)給該用戶, 在接收方接收到此請(qǐng)求后,并根據(jù)發(fā)送方的 id 進(jìn) 行判斷是否要與此人進(jìn)行語(yǔ)音聊天,若選擇“接 受”則表示要進(jìn)行語(yǔ)音聊天,所以接收方會(huì)先完 圖 4-4:建立通信連接流 fig.4-4 flow chart of erect communication l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)醫(yī)師節(jié)精彩演講稿(9篇)
- 中學(xué)生學(xué)習(xí)保證書(shū)
- 夢(mèng)課件素材教學(xué)課件
- 彌勒金辰時(shí)代廣場(chǎng)招商提案
- 影像科報(bào)告診斷質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn)
- 腦癱案例課件教學(xué)課件
- 機(jī)車(chē)車(chē)輛空氣調(diào)節(jié)系統(tǒng) 第3部分:能源效率 征求意見(jiàn)稿
- 護(hù)理課件講解教學(xué)課件
- 2024西安醫(yī)學(xué)院附屬寶雞醫(yī)院護(hù)理人員招聘(8人)筆試備考題庫(kù)及答案解析
- 余杭區(qū)六年級(jí)上學(xué)期語(yǔ)文期中檢測(cè)試卷
- T-SDDA 0002-2021 住宅裝飾裝修工程質(zhì)量驗(yàn)收標(biāo)準(zhǔn)
- 湖北省 公路工程試驗(yàn)檢測(cè)設(shè)備期間核查規(guī)范DB42∕T 1544-2020
- GB 18613-2020 電動(dòng)機(jī)能效限定值及能效等級(jí)
- 全套高中生物思維導(dǎo)圖word清晰打印版
- 滬教牛津版五年級(jí)下冊(cè)小學(xué)英語(yǔ)全冊(cè)單元知識(shí)點(diǎn)小結(jié)
- 公安機(jī)關(guān)辦理行政案件程序規(guī)定習(xí)題庫(kù)及參考答案
- 基礎(chǔ)會(huì)計(jì)教材電子版
- 【課件】讀后續(xù)寫(xiě):思維導(dǎo)圖情節(jié)構(gòu)建 課件-2023屆高三英語(yǔ)寫(xiě)作專(zhuān)項(xiàng)
- 風(fēng)險(xiǎn)分級(jí)管控清單(完整版)
- 醫(yī)院服務(wù)-PPT課件
- SYB創(chuàng)業(yè)培訓(xùn)全課件(ppt)
評(píng)論
0/150
提交評(píng)論