版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、語音AgentNet的整體實現(xiàn)張宇偉第2 頁摘要:本文論述了一個人機(jī)對話應(yīng)用的實現(xiàn)(我命名它為 AgentNet)。其應(yīng)用實例為 一種新的整合了語音技術(shù)的智能代理網(wǎng)絡(luò)效勞。效勞器端開發(fā)使用了微軟 SQL SERVER 7.0 技術(shù),客戶端使用了微軟Agent ,微軟 Speech SDK5 語音合成,和語音識別技術(shù)。網(wǎng)絡(luò)連接使用了 SOCKET 技術(shù),并論述了高層網(wǎng)絡(luò)協(xié)議的實現(xiàn)。:關(guān)鍵詞 人機(jī)對話,MS-AGENT,語音合成,語音識別,網(wǎng)絡(luò)編程AbstractAbstractThis paper discuss a new actualization of man-machine conver
2、sation application,which is based on a modal of network service. And I name this service with the name ofAgentNet.The development of this service used Microsoft SQL SERVER 7.0. And the clientused the technology of Microsoft Agent, TTS (Text To Speech),SR(Speech Recognition).Alsothe client and the se
3、rver connect with SOCKET. On the SOCKET, the paper discuss thedevelopment of High-Level net protocol.KeyKey WordsWordsMan-Machine Conversation, MS-AGENT, TTS , SR ,Net Work Programming第3 頁目錄第一章概述.5.1.1 當(dāng)前人機(jī)對話模型分析 . 51.2當(dāng)前網(wǎng)絡(luò)應(yīng)用分析 .5.1.3AgentNet 概念.6.第二章語音合成及語音識別技術(shù).62.1 語音技術(shù)概述 .6.2.2 微軟語音技術(shù) .7.第三章 Agen
4、t 技術(shù)介紹 .8.3.1Microsoft Agent 技術(shù)介紹.8.3.2Microsoft Agent 技術(shù)應(yīng)用原理 .9第四章開發(fā)系統(tǒng)介紹. 1.14. 1 Microsoft Development Studio 6.0.1 13. 2 Microsoft SQL SERVER 2000 .1.3第五章系統(tǒng)實現(xiàn). 1.45.1 需求分析.1.45.2 模塊分析. 客戶端模塊. 效勞器端模塊. 1.75.3 具體實現(xiàn)細(xì)節(jié).185.3.1 客戶端界面層. 客戶端核心層. 245.3.3 客戶端功能層. 255.3.4 客戶端網(wǎng)絡(luò)層. 295
5、.3.5 效勞器端網(wǎng)絡(luò)層. 315.3.6 效勞器端核心層. 335.3.7 效勞器端功能層.335.3.8 效勞器端數(shù)據(jù)層.34第4 頁第六章使用手冊.36操作系統(tǒng)要求.36硬件要求.36效勞器端安裝.36客戶端支撐軟件的安裝.36第七章總結(jié)與展望.37參考文獻(xiàn).38第5 頁第一章概述1.1 當(dāng)前人機(jī)對話模型分析當(dāng)前研究人機(jī)界面正成為計算機(jī)行業(yè)的研究重點(diǎn)?,F(xiàn)在的研究成果主要集中在讓電腦聽懂說話方面,舊 M 首先推出了語音識別技術(shù),微軟、摩托羅拉等公司也都 展開了大量研究。成熟的語音平臺軟件包有微軟的Speech SDK、舊 M 的ViaVoice ,等等。目前全球人機(jī)界面研究的重點(diǎn),正從研究
6、計算機(jī)如何運(yùn)行轉(zhuǎn)向研究人的行 為,主要包括的領(lǐng)域有:語音上網(wǎng)、多模式對話管理、語音和視覺相結(jié)合、現(xiàn)有 芯片結(jié)合改造等。在英特爾中國研究中心,電腦已可進(jìn)行語音天氣、股票查詢, 你只要說出股票名稱,它就會告訴你現(xiàn)在的股價;而一位研究人員在寫文章時, 一邊用手寫板寫,一邊說: 填加四行表格刪除兩行,而不必像過去那樣自己動手圓表、不停地按刪除鍵。朱來,人們在與電腦交流時,可能根本見不到電腦,出任英特爾人機(jī)界面總框架師的顏永紅博士說,無論你是坐在沙發(fā)上還是躺在床上, 只要手頭有一 個類似話筒、手寫板或者遙控器之類的小玩意,就可以和電腦無線連接指揮它工 作。本文以下章節(jié)討論了微軟語音軟件的應(yīng)用。1.2 當(dāng)
7、前網(wǎng)絡(luò)應(yīng)用分析Internet 自 60 年代出現(xiàn)以來蓬勃開展,近年來以驚人的速度增長 一一連網(wǎng)主 機(jī)量每年翻一番,萬維網(wǎng)站點(diǎn)每半年翻一番 .同時伴隨多媒體技術(shù)的飛速開展, Internet 上多媒體應(yīng)用層出不窮,多媒體信息的數(shù)量與日俱增.Internet 已逐步由單 一的數(shù)據(jù)傳送網(wǎng)向數(shù)據(jù)、語音、圖像等多媒體信息的綜合傳輸網(wǎng)演化.第6 頁1.3 AgentNet 概念正當(dāng)計算機(jī)應(yīng)用,尤其是網(wǎng)絡(luò)應(yīng)用不斷增加的時候,計算機(jī)用戶被許多操作 所迷惑。對此,我們提出 AgentNet 的概念。AgentNet 它是一種新的人機(jī)界面的 嘗試。通過它,用戶可以用語音告訴 AgentNet 幫你工作。比方:你
8、說一句喂,老 頭,有沒有郵件呀? 老頭,是AgentNet的客戶精靈的名字,你當(dāng)然可以任意設(shè)置它的名 字,AgentNet就會幫你收郵件。乂比方你說:“有沒有什么新聞呀? ,它就會 為你通報你感興趣的新聞,等等許多智能的功能。要實現(xiàn)我們的目標(biāo),我們在智能代理Agent技術(shù)上,整合了語音合成和 語音識別技術(shù)。同時實現(xiàn)了一套自己開發(fā)的網(wǎng)絡(luò)協(xié)議, 為以后增加新的智能效勞 提高了方便。實現(xiàn)的困難在?。阂熏F(xiàn)成的許多較新的概念模型實現(xiàn)如智能代理的實現(xiàn) 等,并整合以往的各種成熟的技術(shù)如網(wǎng)絡(luò)模型的實現(xiàn)、語音技術(shù)的運(yùn)用等等。后繼章節(jié)將討論其具體問題。第二章語音合成及語音識別技術(shù)2.1 語音技術(shù)概述語音識別技術(shù)
9、是信息領(lǐng)域的標(biāo)志技術(shù), 這項被科學(xué)家稱為 比登月還難的研 究,在計算機(jī)飛速開展的帶動下,有了重大的突破。語音識別技術(shù)日臻成熟,目 前正處丁向產(chǎn)品化邁進(jìn)的轉(zhuǎn)折階段。 語音識別作為人機(jī)對話的手段,在計算機(jī)日 益增長的今天,愈發(fā)顯得出其在 IT 產(chǎn)業(yè)中的重要地位。人機(jī)對話 夢想成真人機(jī)對話,讓電腦聽懂人的語言是二十世紀(jì)人類的理想之一。對丁絕大多數(shù)人而言,電腦輸入絕不是一件令人愉快的事情,人們心中希望計算機(jī)是個能聽會說的工作伙伴,而不是今天這股乂聾乂啞毫無生氣的復(fù)雜機(jī)器。直接對計算 機(jī)發(fā)號施令,解放出我們的雙手,在任何狀態(tài)不只限丁坐在那里敲鍵盤下與 計算機(jī)進(jìn)行互動交談式的操作是數(shù)字化生存時代的效率表達(dá)
10、和人性化工作方式 的完滿結(jié)合。Microsoft 公司的總裁比爾 蓋茨認(rèn)為:下一代的操作系統(tǒng)以及應(yīng)用 程度的用戶界面將摒棄鍵盤和鼠標(biāo),代之以真正意義的人第7 頁機(jī)對話。從另一方面看,微電子技術(shù)開展到今天,摩爾定理仍驚人的準(zhǔn)確,計算機(jī)和 電子通信設(shè)備日益微型化。在小型化minianturization的趨勢下,袖珍型的掌 上電腦已有了 實驗室產(chǎn)品不久將出現(xiàn)在你我的手中,由此不難看到,計算機(jī)將 會微縮成腕上的手表般大小。顯而易見,如假設(shè)仍采用鍵盤輸入是不可能的,還有 其它類似控制儀器或通訊設(shè)備的鍵盤,也將在微型化的潮流之中成為眾欠之的遭 到淘汰。由此,語音輸入便成為唯一的最正確選擇。人們將完全拋棄
11、鍵盤,對著手 表大小的腕上計算機(jī)或,輕聲說出想要計算機(jī)完成的工作或是說出要撥打的號碼。 乙切盡在數(shù)!中。有限的詞匯無限的應(yīng)用語言是人類交流的第一手段。而語言本身也正隨著社會的開展而不斷地更新變異,人們終其一生都在自覺或不自覺地進(jìn)行著語言的學(xué)習(xí)和更新。無疑這種變化將成為計算機(jī)語音識別的重大難點(diǎn)。隨心所欲地同計算機(jī)交談是人類追求機(jī) 器智能化的最高境界,這種 智能聽寫機(jī)構(gòu)成的系統(tǒng)是無限詞匯無限命令集 的語音識別,其技術(shù)難度遠(yuǎn)高丁 有限命令集,就目前的研究水平,研制一些有 限詞匯有限命令集的專聽寫用系統(tǒng)是盡快將語音技術(shù)擴(kuò)大應(yīng)用范圍、推向市場的快捷途徑。2.2 微軟語音技術(shù)Speech 概述微軟 Spe
12、ech SDK 5.0 是微軟公司的語音開發(fā)軟件包工具。其工具、信息、引擎和樣品幫助,與微軟公司 API 5.0 結(jié)合起來成為一個軟 件包。SpeechSDK 也包括微軟公司的先進(jìn)的語音識別引擎和微軟公司的 Concatenative 的語音合成引擎以前代號為的“ wistler SAPI 5.0 由 2 個接口:應(yīng)用程序設(shè)計接口API和設(shè)備驅(qū)動程序接口 DDI 構(gòu)成。SAPI的 5.0 API 顯著地減少了使用語音識別的應(yīng)用和綜合的代碼。SAPI 的 5.0 DDI 和 API 除掉了許多類似在語音合成和識別引擎的多線程,第8 頁在聲音的裝置管理和方便的應(yīng)用的實現(xiàn)細(xì)節(jié)APIAPI 事件 Sp
13、eech SDK 語音合成和語音識別與應(yīng)用程序的接口,是通過接收API 事件完成。例如,正文的詞,或通用的短語被識別的時候成生了 API 事件。語音合成 APIAPI應(yīng)用程序使用接口 - ISpVoice,使 API 完成根本語音合成。應(yīng)用程序通過具有CLSID_SpVoice 的 COM CoCreateInstance 方法得到ISpVoice 接口得到 COM 接口指針。應(yīng)用程序能通過 ISpVoice: Speak 的方法合成語音,將把要合成的語音的文 本通過參數(shù)傳遞給 Speech SDK。語音識別 APIAPI就像 IspVoice 作為語音合成 API 一樣,ISpRecoCon
14、text 是給語音識別的主 要的接口對象指針。通過設(shè)置NotifySink 識別事件陷阱池,應(yīng)用程序可以捕獲語音識別完成事件。第三章Agent技術(shù)介紹3.1 Microsoft Agent技術(shù)介紹Microsoft Agent 最早出現(xiàn)在 Office 95 中, 主要用丁 Office 的幫助, 微軟稱 之為“Office助手-是在一個小窗口內(nèi)播放各種幽默的卡通動畫,而且這些動 畫是隨特定的操作不同而改變,這就給使用電腦的人增添了許多樂趣。不過這種方式在現(xiàn)在看來是很“簡陋的,不直觀也不形象生動。ApplicationApplicationSAP I RuntimeRecognitionEng
15、meSynthesisEngiine第9 頁1997 年微軟推出 Agent 1.5 版,從界面上徹底脫離了窗口的限制,而變得非 常形象生動,而且其核心采用了基丁 COM 的 ActiveX 控件方式,這就意味著 Agent 可以在 Visual C+、VisualBasic、Html 以及所有支持 ActiveX 的開發(fā)語言很方 便的進(jìn)行二次開發(fā)。同時其它領(lǐng)域的相關(guān)技術(shù)也很好的應(yīng)用到Agent 中來,如語音合成、語音識別等技術(shù)這里需要特別提出的是有關(guān)中文語音合成和識別至盡 尚未應(yīng)用丁Agent,不能不說是一種遺憾。這樣 Agent 就轉(zhuǎn)變?yōu)樾乱淮鷷f能聽 的智能界面,其深遠(yuǎn)意義顯而易見。伴隨
16、著新世紀(jì)的到來,微軟發(fā)布的 Office2000 中徹底的應(yīng)用了 Agent 的技術(shù) 應(yīng)該說基丁 Agent 2.0,聽說英文版的 Office 2000 可支持語音提示和語音命令識 別,而且微軟的新一代操作系統(tǒng) Windows2000 完全內(nèi)置了 Agent 的組件系統(tǒng), 可見微軟對 Agent 抱有極大的興趣的??傊?Agent 是一個非常有開展前途的技術(shù),目前國外已有不少基丁 Agent 的 軟件,如TalkMail 等,國內(nèi)也有局部英語學(xué)習(xí)軟件使用了Agent 的技術(shù)。但是由丁 Agent 的語音模塊只使用到了 Speech Sdk 4.0 ,語音模塊不支持中文,語 音識別率低。所以,
17、本設(shè)計沒有使用Agent 自帶的語音技術(shù),而采用最新的語音 Speech Sdk 5.0 的底層調(diào)用,支持簡體中文,合成和識別。而對丁 Agent 界 面模塊使用到了動畫技術(shù),作為人機(jī)交流的界面。3.2 Microsoft Agent 技術(shù)應(yīng)用原理對 Agent 編程的方法主要有使用 VB,VC 等語言進(jìn)行 ActiveX 調(diào)用,除此之 外還有直接通過VC 進(jìn)行 COM 編程調(diào)用。在 VB 中調(diào)用 Agent 是最簡單不過了, 但由丁 VB 程序本身存在諸多缺陷,彳艮難在實際中應(yīng)用。而在 VC 中,由丁 Agent 內(nèi)部完全采用了 UNICODE 編碼,同時還要處理各 種繁雜的 COM 接口,
18、存在一定的難度,但效率較高。:原理介紹應(yīng)用程序和 Agent Server 的連接是通過 COM 調(diào)用來實現(xiàn)的。將一個 Agent 控制加載相應(yīng)的動畫和語音碼我們稱之為“角色,一般使用COM 調(diào)用創(chuàng)立一個 Agent 角色,第10頁應(yīng)用程序和 AgentServer 的連接方法使用 COK 調(diào)用創(chuàng)立一個Agentfe 方法第11頁第四章開發(fā)系統(tǒng)介紹4. 1 Microsoft Development Studio 6.0本軟件的開發(fā)使用了 微軟的 Microsoft Development Studio 6.0 中的一員VC+ 6.0。現(xiàn)大概介紹一下 VC+編程的特點(diǎn)。Visual C+作為一
19、個功能非常強(qiáng)大的可視化應(yīng)用程序開發(fā)工具,是計算機(jī) 界公認(rèn)的最優(yōu)秀的應(yīng)用開發(fā)工具之一。Microsoft 的根本類庫 MFC 使得開發(fā)Windows 應(yīng)用程序比以往任何時候都要容易。理解 VC 工程Visual C+作為一種程序設(shè)計語言,它同時也是一個集成開發(fā)工具,提供 了軟件代碼自動生成和可視化的資源編輯功能。在 VC 中,應(yīng)用程序是以 Project 的形式存在的,Project 文件以.dsp 擴(kuò)展名,在 Workspace文件中可以包含多個 Project,由 Workspace 文件對它們進(jìn)行統(tǒng)一的 協(xié)調(diào)和管理。MFC編程特點(diǎn)近幾年來,面向?qū)ο蠹夹g(shù)無論是在理論還是實踐上都在飛速地開展。
20、面向?qū)ο蠹夹g(shù)中最重要的就是“對象的概念,它把現(xiàn)實世界中的氣球、自行車等客觀 實體抽象成程序中的“對象。這種“對象具有一定的屆性和方法,這里的屆 性指對象本身的各種特性參數(shù)。如氣球的體積,自行車的長度等,而方法是指對象本身所能執(zhí)行的功能,如氣球能飛,自行車能滾動等。一個具體的對象可以有 許多的屆性和方法,面向?qū)ο蠹夹g(shù)的重要特點(diǎn)就是對象的封裝性,對丁外界而言,并不需要知道對象有哪些屆性,也不需要知道對象本身的方法是如何實現(xiàn)的,而只需要調(diào)用對象所提供的方法來完成特定的功能。從這里我們可以看出,當(dāng)把面向?qū)ο蠹夹g(shù)應(yīng)用到程序設(shè)計中時,程序員只是在編寫對象方法時才需要關(guān)心對象 本身的細(xì)節(jié)問題,大局部的時間是
21、放在對對象的方法的調(diào)用上,組織這些對象進(jìn)行協(xié)同工作。MFC 的英文全稱是 Microsoft Fundation Classeq 即微軟的根本類庫, MFC的本質(zhì)就是一個包含了許多微軟公司已經(jīng)定義好的對象的類庫,我們知道,雖然我們要編寫的程序在功能上是千差萬別的,但從本質(zhì)上來講,都可以化歸為用戶第12頁界面的設(shè)計,對文件的操作,多媒體的使用,數(shù)據(jù)庫的訪問等等一些最主要的方 面。這一點(diǎn)正是微軟提供 MFC 類庫最重要的原因,在這個類庫中包含了一白多 個程序開發(fā)過程中最常用到的對象。在進(jìn)行程序設(shè)計的時候,如果類庫中的某個 對象能完成所需要的功能,這時我們只要簡單地調(diào)用已有對象的方法就可以了。我們還
22、可以利用面向?qū)ο蠹夹g(shù)中很重要的“繼承方法從類庫中的已有對象派生 出我們自己的對象,這時派生出來的對象除了具有類庫中的對象的特性和功能之 外,還可以由我們自己根據(jù)需要加上所需的特性和方法,產(chǎn)生一個更專門的,功能更為強(qiáng)大的對象。當(dāng)然,你也可以在程序中創(chuàng)立全新的對象,并根據(jù)需要不斷完善對象的功能。正是由丁 MFC 編程方法充分利用了面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn),它使得我們編程 時極少需要關(guān)心對象方法的實現(xiàn)細(xì)節(jié),同時類庫中的各種對象的強(qiáng)大功能足以完 成我們程序中的絕大局部所需功能,這使得應(yīng)用程序中程序員所需要編寫的代碼 大為減少,有力地保證了程序的良好的可調(diào)試性。最后要指出的是 MFC 類庫在提供的對象的各種屆
23、性和方法都是經(jīng)過謹(jǐn)慎的 編寫和嚴(yán)格的測試,可靠性很高,這就保證了使用 MFC 類庫不會影響程序的可 靠性和正確性。程序結(jié)構(gòu)剖析下面為一個表示程序中的主要類之間的關(guān)系的圖表:這個圖表表示了使用 MFC 方式的應(yīng)用程序的四個主要類之間的關(guān)系,從中 可以看出,CMYAPP類主要的作用是用來處理消息的,它統(tǒng)一管理程序收到的 所有的消息,然后把消息分配到相應(yīng)的對象。CMAINFRAME 是 CMYVIEW 的父類,也就是說視窗VIEW 顯示在主框窗 MAINFRAME 的客戶區(qū)中。類第13頁CMYVIEW 的作用是顯示數(shù)據(jù),而數(shù)據(jù)的來源是類 CMYDOC,在 MFC 程序中, 程序的數(shù)據(jù)是放在文檔當(dāng)中的
24、,而顯示數(shù)據(jù)那么是利用視窗方式,文檔與視窗別離 帶來的好處就是一個文檔可以同時具有多個視窗,每個視窗只顯示文檔中的一部分?jǐn)?shù)據(jù),或者以特定的風(fēng)格顯示文檔中的數(shù)據(jù)。 文檔與視窗別離的另一個好處就 是在程序中可以處理多個文檔,通過對不同的視窗的處理到達(dá)對不同的文檔分別 處理的目的。使用過傳統(tǒng)的 WINDOWS 編程方法的人都知道,在應(yīng)用程序中有一個重要 的函數(shù) WINMAIN (),這個函數(shù)是應(yīng)用程序的根底,用戶的操作所產(chǎn)生的消息 正是經(jīng)過這個函數(shù)的處理派送到對應(yīng)的對象中進(jìn)行處理。而在MFC 方式的WINDOWS 應(yīng)用程序中,用來處理消息的是系統(tǒng)自動生成的MFC 中的類CWINAPP 的派生類 CM
25、YAPP。3. 2 Microsoft SQL SERVER 2000使用 SQL Server 2000 的最新增強(qiáng)功能開發(fā)數(shù)據(jù)庫解決方案。建立在 SQL Server 7.0 可擴(kuò)展根底上的 SQL Server 2000 代表著下一代 Microsoft .NET Enterprise Servers (企業(yè)效勞器)數(shù)據(jù)庫的開展趨勢。 SQL Server 2000 是為創(chuàng)立 可伸縮電子商務(wù)、在線商務(wù)和數(shù)據(jù)倉儲解決方案而設(shè)計的真正意義上的關(guān)系型數(shù) 據(jù)庫管理與分析系統(tǒng)。SQLSQL ServerServer 20002000 的新特性平安的應(yīng)用程序管理。更高的可伸縮性和可靠性。數(shù)據(jù)倉庫解決
26、方案的可伸 縮性。最大的正常運(yùn)行時間和可靠性。 集成的和可擴(kuò)展的分析效勞。簡單的管理 和調(diào)整。增強(qiáng)和簡化的事務(wù)處理SQL (T SQL)開發(fā)和調(diào)試。靈活的和可擴(kuò) 展的數(shù)據(jù)轉(zhuǎn)換。第五章系統(tǒng)實現(xiàn)5.1 需求分析本設(shè)計的目標(biāo)是利用語音技術(shù)和動畫技術(shù)作為與用戶交流的主要人機(jī)界面。用戶通過語音識別控制程序運(yùn)行, 程序通過語音合成通知現(xiàn)在運(yùn)行狀況。 而作為 被控制的對象是一個網(wǎng)絡(luò)效勞模型。用戶登陸上 AgentNet 效勞器上以后,可以要求讀新聞,與同時登陸到 AgentNet 的其他客戶通訊等等。在客戶端用戶可用語音控制去完成接收電子郵件等日常工作。第14頁總體軟硬件結(jié)構(gòu)示意圖5.2 模塊分析5.2.1
27、5.2.1 陪戶端模塊目標(biāo):用戶登陸 AgentNet 后,出現(xiàn) Agent 動畫界面,所有的功能可通過語 音控制,也可通過傳統(tǒng)界面控制。功能包括:登陸、系統(tǒng)設(shè)置、人機(jī)聊天、讀文 本、郵件、看 AgentNet 新聞、通訊可與同時登陸到 AgentNet 的客戶通訊等。第15頁網(wǎng)絡(luò)JE客戶端模塊分析共分 3 層界面層分析:層模塊名模塊輸入模塊輸出模塊輸出對像備注界面層語音識別(SR)用戶通過話筒的普通話語言命令號核心處理層命令號由srgrammar.xml的 xml 文件定義,核心層的接收命令并執(zhí)行。語音合成核心層的合成后通用戶聲卡默認(rèn)以簡客戶端模塊圖界面JE核心房功能層用戶認(rèn)證人機(jī)再天郵件其
28、它第16頁(TTS)字符串過聲卡以聲音流輸出(soundstream)所連音響體中文合成語音。Agent 界面核心層的Agent 動作命令A(yù)gent 動畫動作用戶界面?zhèn)鹘y(tǒng)界面按鈕、菜單Windows 窗口等核心處理層響應(yīng)傳統(tǒng)的菜單、鼠標(biāo)事件,顯示窗口核心層分析層模塊名模塊輸入模塊輸出模塊輸出對像備注核心層核心處理界面層的語音命令號,菜單、鼠標(biāo)等事件,功能層動作成后的事件到界面層 的需要語音合 成字符串、Agent 動作命 令、Windows 窗 口界面元素。功 能層的各功能 調(diào)度界面層功能層此模塊處理核心調(diào)度。所有的 其他模塊都受到 它的控制。功能層層模塊名模塊輸入模塊輸出模塊輸出對像備注功能
29、層用戶認(rèn)證用戶名,密碼是否認(rèn)證通過結(jié)果由核心層處理賬號信息由核心層從傳統(tǒng)界面獲得設(shè)置效勞器 ip為核心層核心層信息由核第17頁地址、郵件賬號信息等提供必要的信息心層從傳統(tǒng)界面獲得,并寫到注冊表郵件收郵件新郵件信息結(jié)果由核心層處理輸出到界面層語音識別收郵件,語音合成讀郵件。通訊網(wǎng)絡(luò)層的 其他客戶登陸 消息、其他客戶 發(fā)來的訊息要顯示的 信息 , 及要合成 的語音信息字 符串結(jié)果由核心層處理輸出到界面層與網(wǎng)絡(luò)層交互信息,信息顯示到界面層新聞網(wǎng)絡(luò)層的新聞信息要合成的新聞信息字符串結(jié)果由核心層處理輸出到界面層與網(wǎng)絡(luò)層交互信息,信息顯示到界面層人機(jī)聊天命令核心層傳來的語音識別 聊天命令要合成的語音信息字
30、符 串結(jié)果由核心層處理輸出到界面層有限的命令反映。.2 |艮務(wù)器端模塊目標(biāo):每個客戶端必須先登陸到 AgentNet 效勞器,才能繼續(xù)使用,這里需 要賬號認(rèn)證。每個效勞器端的事件,都要被紀(jì)錄,這里需要事件管理。效勞器端 提供一個新聞效勞。當(dāng)客戶端要求看最新的新聞時,發(fā)新聞給客戶端。這里要有新聞管理,用丁添加、刪除、修改新聞??蛻舳税l(fā)過來的網(wǎng)絡(luò)訊息,以及效勞器端發(fā)給客戶端的訊息, 都由網(wǎng)絡(luò)層實所有具體功能的實現(xiàn)在功能層第18頁核心層處理各層的調(diào)度。由丁本設(shè)計主要目標(biāo)表達(dá)在整個結(jié)構(gòu)的架設(shè)。 到現(xiàn)在為止,實現(xiàn)的是根本的 效勞。但以后可以很方便的在其根本結(jié)構(gòu)上增加新效勞功能。相對丁客戶
31、端,效勞器端模塊結(jié)構(gòu)不具體展開。詳細(xì)信息可到具體實現(xiàn)小節(jié) 觀察。5.3 具體實現(xiàn)細(xì)節(jié).1 陪戶端界面層語音識別SR模塊SRSR 中定義的成員變量有:CComPtr m_cpEngine;/SR engine 接口CComPtr m_cpRecoCtxt;/recognize context 接口第19頁CComPtr m_cpCmdGrammar; /grammar 接口成員函數(shù):InitSR(); 初始化ProcessRecoEvent();事件響應(yīng)函數(shù)ExecuteSRCommand();執(zhí)行語音命令ReleaseSR();釋放接口InitSR()InitSR() 函數(shù)中初
32、始化了 COM 接口、SR engine 接口、recognize context 接口、grammar接口,這些都是 COM 接口指針。其中 m_cpEnginem_cpEngine 為主 SR Engine 接口,程序使用它作為與其他模塊的連接。m_cpRecoCtxtm_cpRecoCtxt 為 recongnize事件上下文,通過它,當(dāng)識別事件發(fā)生的時候,可以獲得具體識別出來的文字或 命令號。m_cpCmdGrammarm_cpCmdGrammar 為命令接口。由丁本設(shè)計的語音識別只涉及到有 限命令詞匯,所以在這里定義了命令接口。對丁一些其它需要口述板的應(yīng)用可以 定義口述接口,以識別無
33、限命令集既自然語言識別。當(dāng)然定義有限命令可以大大提高識別率。m_cpCmdGrammarm_cpCmdGrammar 命令接口的初始化是通過載入一個名為 srgrammar.cfg語法規(guī)那么文件而完成。這個文件由一個名為 srgrammar.xml 的 XML 文件通 過專用的語法產(chǎn)生程序產(chǎn)生。在 srgrammar.xml 內(nèi)具體定義了需要識別的中文命 令。如: 你好 在這里定義了一些用戶自定義事件#define WM_RECOEVENT WM_USER+100并在 MESSAGE_MAP 內(nèi)定義處理函數(shù)語音識別事件消息處理ON_MESSAGE(WM_RECOEVENT,ProcessRec
34、oEvent)當(dāng)識別結(jié)束時,程序主線程接收到此WM_RECOEVENT 消息,運(yùn)行 處理 函數(shù)ProcessRecoEvent()。此函數(shù)在確定是語音識別事件成生后,運(yùn)行 ExecuteSRCommand()函數(shù)。第20頁ExecuteSRCommand(羚辨哪個命令被識別,并執(zhí)行響應(yīng)命令處理函數(shù)。語法規(guī)那么與語法樹語法規(guī)那么是 SAPI 5.0 的一個重要的元素。它限制了在語音識別處理中,可 能的被識別的字或句子成分。短語或句用每個語法規(guī)那么成分來決定識別通路。例如,核查在描述旅行方案的句子:“我想開車從北京到上海。請注意這里有決定結(jié)果的信息元素存在。就這個例子來說,有個人在方案從北京開車到
35、上海。這個非常簡單的例子說明了一個可能非常復(fù)雜的問題。不限制方法、方向和旅行目的地,產(chǎn)生的旅行方案將是任選的無限數(shù)。作為結(jié)果產(chǎn)生的有效信息能通過加以限制的方法選擇決定。第21頁下為這個例子的具體分析:一個誨音識別的例子識別統(tǒng)果:方法:開軍原城市:北京目的城而上詞我想開車 從 北京到 上海方法目的城市第22頁GRAMMAR,DEFINE)CID NAME/天津# VAL=1102/?/DEFINE?KOLE JIAffE=Tra.vle TOPLEVEL= ACTIVE 開車P VALLFly#乘飛機(jī) AP MAL=*北京。北京P VAL=* 上海*上海 P VAL=*南京今南京成?P VAL=
36、*夭津。夭津JK/OPHAL北京V北京/P, PVAL二,上澹。上海 P VAL 二*南宗。南京/P, PVAL=*天津。天津 5 第23頁語音合成(TT0 模塊 ISPVQIW*語音合成模塊相對簡單。它定義的變量有:/tts 語音合成接口ISpVoice *m_cpTTSVoice;成員函數(shù):InitTTS(); 初始化AgentSpeak(Cstring strSpeak); 合成ReleaseTTS();釋放接口先使用 InitTTS()初始化,它初始化了 COM 接口,并設(shè)置了合成的男聲 的語速,默認(rèn)把它設(shè)為+2 ,語速快一點(diǎn),相對覺得自然一點(diǎn)。然后核心層關(guān)心的就是AgentSpeak
37、(CString strSpeak)這個函數(shù)了。核心層把欲合成的字符申作為參數(shù)提交給AgentSpeak,即合成了語音。AgentAgent 界面模塊|lA.EflitClB.mct erEWriteProfileString(strServerSection,ServerIpAddress,ServerPage.m_strServerlpAddress);讀效勞器 ip 地址m_stuSetup.strServerIpAddress=pApp-GetProfileString(strServerSection,ServerIpAddress);由丁篇幅有限,具體請看代碼。第26頁郵件模塊這里
38、用到了兩個類CPop3CPop3 類用丁郵件處理,CMailMessageCMailMessage 用丁郵件內(nèi)容解碼。在初始化后,用CPop3:SetServerProperties( LPCTSTR sServerHostName, UINT nPort)設(shè)定郵件 效勞器參數(shù)。用CPop3:SetUserProperties( LPCTSTR sUsername, LPCTSTR sPassword )設(shè)定用 戶賬號參數(shù)。這些參數(shù)是從設(shè)置模塊讀過來的。然后CPop3:Connect(),CPop3:GetNumMessage()獲得當(dāng)前郵箱的郵件數(shù)。CPop3:GetMessage( UIN
39、T nMsg, CMailMessage* msg)獲得郵件內(nèi)容放到msgCPop3:Disconnect()斷開連接。第27頁通過CMailMessage:EncodeBody()可解碼郵件內(nèi)容。郵件的具體內(nèi)容在解碼后放在成員變量中。理點(diǎn)一-多線程由丁在處理收郵件功能時,假設(shè)程序使單線程的,網(wǎng)絡(luò)延時必定使主線程阻塞。 所以當(dāng)核心模塊調(diào)用郵件模塊必須開一個新線層。多線層編程細(xì)節(jié)在 Windows 的一個進(jìn)程內(nèi),包含一個或多個線程。線程是指進(jìn)程的一條執(zhí)行 路徑,它包含獨(dú)立的堆棧和 CPUS 存器狀態(tài),每個線程共享所有的進(jìn)程資源,包 括翻開的文件、信號標(biāo)識及動態(tài)分配的內(nèi)存等等。一個進(jìn)程內(nèi)的所有線程
40、使用同一個 32 位地址空間,而這些線程的執(zhí)行由系統(tǒng)調(diào)度程序控制,調(diào)度程序決定哪 個線程可執(zhí)行以及什么時候執(zhí)行線程。 線程有優(yōu)先級別,優(yōu)先權(quán)較低的線程必須 等到優(yōu)先權(quán)較高的線程執(zhí)行完任務(wù)后再執(zhí)行。在多處理器的機(jī)器上,調(diào)度程序可 將多個線程放到不同的處理器上去運(yùn)行,這樣就可使處理器的任務(wù)平衡,也提高了系統(tǒng)的運(yùn)行效率。Visual C+ 5.0 提供了 Windows 應(yīng)用程序的集成開發(fā)環(huán)境DeveloperStudio。在這個環(huán)境里,用戶既可以編寫 C 風(fēng)格的 32 位 Win32 應(yīng)用程序,也可 以利用 MF 以庫編寫 C+以格的應(yīng)用程序,二者各有其優(yōu)點(diǎn):基丁 Win32 的應(yīng)用 程序執(zhí)行代碼
41、小巧,運(yùn)行效率高,但要求程序員編寫的代碼較多,且需要管理所 有系統(tǒng)提供應(yīng)程序的資源;而基丁 MFC 類庫的應(yīng)用程序可以快速建立起應(yīng)用程序,類庫為程序員提供了大量的封裝類,而且Developer Studio 為程序員提供了一些工具來管理用戶源程序, 其缺點(diǎn)是類庫代碼很龐大, 應(yīng)用程序的執(zhí)行代碼 離不開這些代碼。由丁使用類庫所帶來的快速、 簡捷和功能強(qiáng)大等優(yōu)越性, 因此, 除非有特殊的需要, 否那么 VisualC+提倡使用 MFC!庫進(jìn)行應(yīng)用程序開發(fā)。收郵件線程的具體實現(xiàn)主線程和收郵件線程問通過消息互相通訊。定義如下消息:郵件模塊消息定義#define WM_MAIL_ACCOUNT_NOT_
42、SET WM_USER+200#define WM_MAIL_CANNOT_LOGIN WM_USER+201第28頁#define WM_MAIL_PROCESS WM_USER+202#define WM_MAIL_NO_NEW_MAIL WM_USER+203#define WM_MAIL_PROCESS_DONE WM_USER+204消息的具體含義可在消息名上看出,不再贅述。具體請參看源代碼。定義消息響應(yīng)函數(shù)如下:郵件賬號沒設(shè)定事件消息處理ON_MESSAGE(WM_MAIL_ACCOUNT_NOT_SET,ProcessMailAccountNotSet)郵件賬號沒設(shè)定事件消息處理
43、ON_MESSAGE(WM_MAIL_CANNOT_LOGIN,ProcessMailCannotLogin)/有郵件要處理事件消息處理ON_MESSAGE(WM_MAIL_PROCESS,ProcessReadMail)/沒有新郵件要處理事件消息處理ON_MESSAGE(WM_MAIL_NO_NEW_MAIL,ProcessNoMail)/郵件處理完成事件消息處理ON_MESSAGE(WM_MAIL_PROCESS_DONE,ProcessMailDone)當(dāng)核心層調(diào)用收郵件模塊時,開新線程如下;AfxBeginThread(GetMailThread,&m_stuThreadInf
44、o,THREAD_PRIORITY_NO RMAL);UINT GetMailThread(LPVOID pParam)是一個全局函數(shù)。其參數(shù)中是一個定義的,線程必須用到的信息結(jié)構(gòu)。當(dāng)GetMailThread執(zhí)行完,發(fā)消息到主線程,主線程處理響應(yīng)動作。由丁篇幅有限,具體請看代碼。通訊模塊發(fā)送一般消息到好友。這個函數(shù)把訊息送到網(wǎng)絡(luò)層。在選定對方好友后,提出一個對話框,輸入訊息ProcessSendGeneralMsg(CString strToUserName, CString strText)第29頁StrToUserName 為好友名,StrText 為發(fā)送的消息字符串。對方網(wǎng)絡(luò)層收到消息
45、,調(diào)用處理好友信息ProcessReceiveGeneralMsg(msg.m_strUser,msg.m_strText);其中參數(shù) msg 為網(wǎng)絡(luò)層消息類。這里與網(wǎng)絡(luò)層的內(nèi)容緊密相關(guān),請參看網(wǎng)絡(luò)層內(nèi)容。新聞模塊這里是網(wǎng)絡(luò) C/S 結(jié)構(gòu)的具體表達(dá)。本設(shè)計到現(xiàn)在只實現(xiàn)了一個效勞器端的具體效勞,即新聞效勞。但結(jié)構(gòu)已架 設(shè)好,擴(kuò)展方便。ProcessReadNews();向網(wǎng)絡(luò)層發(fā)出讀郵件命令。網(wǎng)絡(luò)層收到,效勞器端的新聞后,調(diào)用ProcessRequestReadNews(CString strNews)再提升到界面層。這里與網(wǎng)絡(luò)層的內(nèi)容緊密相關(guān),請參看網(wǎng)絡(luò)層內(nèi)容。人機(jī)聊天模塊此模塊現(xiàn)在非常不成熟
46、,由丁時間緊迫,能力有限?,F(xiàn)在只是簡單的預(yù)定義 的有限命令答復(fù)。目標(biāo)是有一定的人工智能,有一定的推理機(jī)制,一定的自學(xué)習(xí)機(jī)制。要以后進(jìn)一步完成。.4 陪戶端網(wǎng)絡(luò)層網(wǎng)絡(luò)層是具體的網(wǎng)絡(luò)通訊的具體實現(xiàn),它負(fù)責(zé)與效勞器的通訊。使用到了 SOCKET 類來具體實現(xiàn)。這里,定義了一個繼承了CSocket 的 CToServerSocket 類。第30頁:網(wǎng)絡(luò)通訊高層協(xié)議為了處理不同消息,定義了高層的通訊協(xié)議:CMsg:m_strCommand字符申裝載了這個協(xié)議。設(shè)置模塊獲得。SendMsg(CMsgSendMsg(CMsg *pMsg)*pMsg)發(fā)送消息,參數(shù)為一個 CMsg 對像。Re
47、ceiveMsg()ReceiveMsg()接受消息,并進(jìn)行響應(yīng)處理,上升到核心層處理。CMsgCMsg 是定義網(wǎng)絡(luò)消息的類,效勞器端有一個同樣定義的類。處理具體消息其成員變量有:CString m_strText;/通信字符串CString m_strCommand;/命令字符串CString m_strUser;用戶名字符串CString m_strToUser;目的用戶CString m_strPassword;/用戶字符串第31頁協(xié)議的具體內(nèi)容.5 |艮務(wù)器端網(wǎng)絡(luò)層效勞器端的網(wǎng)絡(luò)層用了 socketsocket 同客戶端的網(wǎng)絡(luò)層連接。不過效勞器端比客戶端多一個類,這里建
48、了一個繼承CSocketCSocket 的類:ClisteningSocketClisteningSocket 這個類的實例將綁定效勞器端的ip 地址,和固定端口號:5040。ClisteningSocketClisteningSocket 用丁監(jiān)聽客戶端的連接。假設(shè)發(fā)現(xiàn)有客戶端的連接,產(chǎn)生一個 CClientSocketCClientSocket 類的實例。CClientSocketCClientSocket 類是繼承了 CSocket 的類,處理對客戶端的網(wǎng)絡(luò)信息?,F(xiàn)聯(lián)系客戶端網(wǎng)絡(luò)層,實現(xiàn)的根本算法如下:由丁篇幅有限,具體請看代碼。第32頁效勞器方(SERVER1、構(gòu)造一個套接字CSock
49、et ser_s1 ;2、創(chuàng)立該套接字ser_s1.Create (port) ;其中,port 為效勞器方客戶方(CLIENT)1、構(gòu)造一個套接字CSocket cli_s ;2、創(chuàng)立該套接字cli_s.Create ();第33頁4、構(gòu)造一個新的套接字Csocket ser_s2 ;5、效勞器等待從 sers2上 接受客戶連接請求ser_si.Accept (ser_s2)翻開的通信通道號3、開始監(jiān)聽來自客戶機(jī)的連接3、客戶機(jī)方套接字 cli s 向效勞器方ser_si.Listen();套接字 ser si 發(fā)出連接請求cli_s .Connect (Addr , port);其中,Ad
50、dr是欲連接效勞器方套接字地址結(jié)構(gòu)指針,可采用IP地址或機(jī)器名。port即翻開的通道號,其值與效勞器方的一致。6、構(gòu)造一個類 CSocketFile 的對象4、構(gòu)造一個類 CSocketFile 的對象CSocketFile file(&ser_s2)CSocketFile file(&cli_s)7、構(gòu)造類 CArchive的對象 arIn、arOut5、構(gòu)造類 CArchive 的對象 arIn、arOut,以用于數(shù)據(jù)的收和發(fā)。以用于數(shù)據(jù)的收和發(fā)。CArchive arIn(&file , CArchive :load)CArchive arIn(&file
51、 , CArchive :load)CArchivearOut(&fileCArchivearOut(&fileCArchive :store)CArchive :store)8、使用 arIn和 arOut 進(jìn)行收或發(fā)數(shù)據(jù)6、使用 arIn和 arOut 進(jìn)行發(fā)或收數(shù)據(jù)arIn value ;arOut value ;arOut value ;其中,value是所傳輸?shù)臄?shù)據(jù)9、摧毀所創(chuàng)立的 CSocket、7、摧毀所創(chuàng)立的 CSocket、CSocketFile 、CArchive 等類的對象CSocketFile 、CArchive 等類的對象第34頁.6
52、|艮務(wù)器端核心層它處理各種數(shù)據(jù),完成其他各層的初始化、調(diào)用。完成傳統(tǒng)界面的處理(包 括 windows 窗口)。界面上出現(xiàn)的 windows 元素有,一個樹控件,一個 List 控件。由丁這里主要涉及到一些繁瑣的源代碼,篇幅有限,具體請看代碼。.7 |艮務(wù)器端功能層事件管理模塊事件管理的所有數(shù)據(jù)來自數(shù)據(jù)層。主有以下幾個函數(shù):AddEvent(CString strType, CString strEvent);添加個事件ShowEvent();顯示所有事件ClearEvent();清空所有事件所有的動作由核心層接收的菜單命令激發(fā)。當(dāng)進(jìn)行添加、刪除、更新命令時,會彈出相應(yīng)對話框,
53、與管理員交流。賬號管理模塊所有數(shù)據(jù)來自數(shù)據(jù)層。主有以下函數(shù)OnMenuAddNewAccount();OnMenuitemAccountDelete();OnMenuitemAccountUpdate();新聞管理模塊所有數(shù)據(jù)來自數(shù)據(jù)層。有以下函數(shù)OnMenuitemAddNewNews();第35頁OnMenuitemNewsDelete();OnMenuitemNewsUpdate();所有的動作由核心層接收的菜單命令激發(fā)。當(dāng)進(jìn)行添加、刪除、更新命令時,會彈出相應(yīng)對話框,與管理員交流客戶通信模塊核心層從網(wǎng)絡(luò)層傳來的所有有關(guān)客戶通訊的數(shù)據(jù),在這里處理。有以下函數(shù):(已簡化)ProcessLogin ();ProcessLogout();ProcessSendGeneralMessage ();ProcessSendNews();ProcessListOnlineBuddy ();具體含義可在函數(shù)名上看出,不再贅述。具體請參看源代碼。.8 川艮務(wù)器端數(shù)據(jù)層其他層的所有的數(shù)據(jù)來自數(shù)據(jù)層。數(shù)據(jù)層的所有數(shù)據(jù)以及處理方法都保存在SQL SERVER 上。C+端有以下幾個函數(shù):InitConnectSqlServer();用于連接數(shù)據(jù)庫ExecuteStoredProc(_b
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度勞動合同解除與離職員工離職手續(xù)辦理及經(jīng)濟(jì)補(bǔ)償合同3篇
- 2025年度鋼結(jié)構(gòu)加固施工承包合同模板
- 2025年度農(nóng)村個人耕地租賃與農(nóng)業(yè)信息化建設(shè)合同3篇
- 農(nóng)村農(nóng)業(yè)勞務(wù)用工合同(2025年度)勞動權(quán)益維護(hù)協(xié)議
- 2025年度農(nóng)村集體土地租賃合同范本(鄉(xiāng)村旅游)
- 二零二五年度高速鐵路信號系統(tǒng)安裝合同安裝協(xié)議3篇
- 寵物生活館2025年度寄養(yǎng)及美容服務(wù)合同3篇
- 二零二五年度員工職務(wù)秘密及保密信息處理協(xié)議3篇
- 2025年度年度文化產(chǎn)業(yè)發(fā)展合伙人合同協(xié)議書3篇
- 2025年度養(yǎng)殖場勞務(wù)合同(畜禽疫病防控與治療)3篇
- 針灸推拿治療失眠PPT
- ISO-8467-1993高錳酸鹽指數(shù)
- 防雷和接地監(jiān)理實施細(xì)則-
- 糧食倉儲組織架構(gòu)設(shè)計及全套管理規(guī)章制度
- 《人員素質(zhì)測評理論與方法》電子版本
- 陶瓷色料的技術(shù)PPT課件
- 幼兒園食品安全工作計劃四篇
- 課程設(shè)計YA32-350型四柱萬能液壓機(jī)液壓系統(tǒng)設(shè)計
- 中國工業(yè)數(shù)據(jù)庫介紹
- 弱電智能化設(shè)計服務(wù)建議書(共35頁)
- 中國銀監(jiān)會關(guān)于規(guī)范中長期貸款還款方式的通知
評論
0/150
提交評論