




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 本科畢業論文(設計)題 目: 基于微軟語音引擎的語音識別 學 生: 歡 學號: 8 學 院:物理與電子科學學院 專業: 電子信息科學與技術 入學時間: 2010 年 9 月 15 日指導教師: 周小波 職稱: 教授 完成日期: 2014 年 5 月 4 日誠 信 承 諾我謹在此承諾:本人所寫的畢業論文基于微軟語音引擎的語音識別均系本人獨立完成,沒有抄襲行為,凡涉與其他作者的觀點和材料,均作了注釋,若有不實,后果由本人承擔。 承諾人(簽名): 年 月 日基于微軟語音引擎的語音識別歡 學號:8 指導老師:周小波摘要:本設計是利用微軟語音軟件開發包Speech SDK,在VC+6.0 的MFC平臺
2、下實現計算機語音識別的過程。通過對微軟語音開發理論的學習與探索,了解MFC平臺的開發與應用,掌握Microsoft Speech SDK (SAPI)在VC+6.0下的加載運行,設計出的在Windows系統下的人機交互語音識別系統。系統總體設計包含上位機設計和下位機設計,以上位機軟件設計為主體設計部分,下位機部分作為功能擴展部分。其中下位機設計使用STC89C51單片機作為主控芯片,下位機軟件采用C語言在Keil下編程實現。上位機控制部分包含打開Windows視窗程序、打開瀏覽器中的等操作。下位機控制部分主要是控制語音模塊的語音播報。整個系統是圍繞日常生活中人們所需進行設計的,為人們日常生活提
3、供更多的便利。 關鍵詞:語音識別、Speech SDK、MFC、單片機; The Speech Recognition designbased on Microsoft Speech SDKName: LiuHuanStudent ID:8 Instructor:Xiaobo ZhouAbstract : The design which using the Microsoft Speech SDK was designed on the workspace of MFC by VC+6.0 and make it that PC speech recognition true. The ma
4、n machine interaction system which operations on Windows Operation System was designed by learning and researching in the Microsoft Speech development theory , knowing the design and application on the workspace of MFC and the operation on VC+6.0.The whole system design was insisted of the upper com
5、puter design and the lower computer design , the upper computer design was the main design and the lower computer design was designed as an extended design.The main control chip of the lower computer design used STC89C51 MCU. The software of the lower computer was programmed by C program language at
6、 the workspace of Keil. The part of the upper computer control included opening the windows procedure, opening websites and so on . The main function of the lower computer control was controlling the voice broadcast which was produced by voice module . The whole system was designed by enclosing peop
7、le's daily lives , in order to make it much more convienient . Key words: speech recognition, Speech SDK, MFC, Microcontroller Unit ;目錄1.引言11.1研究的背景11.2研究的意義11.3研究的目標12.系統整體設計概述12.1 設計環境要求12.2 功能概述23.語音識別系統底層概述33.1語音識別的基本原理33.2 Microsoft Speech SDK介紹44.系統上位機設計64.1 語音識別的過程64.1.1 COM庫的初始化64.1.2 對語
8、音識別對象的創建74.1.3 上下文語音識別命令的創建74.1.4 對識別消息和感興趣事件進行設置74.1.5 語法和規則的裝載74.1.6 響應各種事件84.2 上位機程序設計過程104.2.1編寫語法規則文件104.2.2上位機系統初始化104.2.3消息函數實現115.系統下位機設計115.1 下位機硬件設計115.1.1 串口電平轉換電路設計125.1.2 語音控制模塊與流水燈電路設計135.2 下位機軟件設計135.2.1 下位機串口通信波特率設置145.2.2 語音播報控制芯片時序控制156.系統配置與調試156.1上位機調試156.2下位機調試187. 設計總結18參考文獻:19
9、附錄一:系統上位機部分源代碼20附錄二:XML語法規則文件代碼31附錄三:系統下位機源代碼33致3837 / 421.引言1.1研究的背景語音識別技術的產生與不斷發展的過程已經有六十多年的歷史, 在計算機與現代通信技術的不斷進步,語音識別技術的進步與其擴大的應用領域也得以體現。目前,一些基于語音識別技術的產品如語音撥號,智能語音搜索引擎等在國外都相繼得到了開發與使用。最早利用計算機技術實現語音識別技術的有IBM、APPLE、GOOGLE等公司,在目前的Windows、Android等智能移動設備中都相繼得到了開發。 1.2研究的意義語音識別技術是語音領域的重要組成部分,同時在計算機科學領域中發
10、揮著不可或缺的作用。在應用領域中語音識別是人機交互方式的一個重要應用,伴隨著語音技術、通信技術、智能物聯網技術的發展,語音識別技術將在遠程智能控制、教育培訓、電子商務管理等各個新型領域中發揮著更大的作用。1.3研究的目標本設計的目標是利用微軟語音開發包Microsoft Speech SDK 5.1 開發設計出具有語音識別功能的軟件。該軟件的使用是在Windows操作系統下運行的,識別相關語音命令來加載運行所指定的功能。2.系統整體設計概述2.1 設計環境要求系統整體設計包括上位機語音識別軟件設計,下位機單片機與其應用硬件結構與程序算法設計。上位機采用在VC+6.0 的MFC平臺下編程實現,下
11、位機使用STC89C51單片機進行通信并實現相應的控制過程。在設計過程中的硬件要求有電源、一臺裝有VC+6.0的Windows PC、麥克風設備、串口或USB轉串口設備、單片機最小系統以與實現相應功能的應用電路與其元器件等。2.2 功能概述在MFC加載編譯,執行程序后,生成的可執行文件即最終的應用軟件。啟動應用軟件后,系統立即進入語音識別狀態,由用戶對著PC的麥克風發出相關語音請求指令,系統會對發出的語音請求信號進行識別與判斷,如果與預期設定的語音請求指令相一致,那么就可以獲得有效的識別結果,在函數調用中加載相應的功能指令。在程序設計的過程中首先對系統進行初始化,包括語音初始化和串口初始化,其
12、中串口初始化是為了與下位機進行通信,然后進入語音識別過程。本設計中加入了調用Windows系統視窗程序、打開、播放Flash動畫與下位機進行通信并實現相應功能。如圖1所示為系統功能流程。麥克風語音助理Windows系統視窗程序打開網站通信串口播放Flash啟動計算器百度阜陽師范學院火車訂票下位機打開文件夾語音播報奏樂流水燈圖1 系統功能流程3.語音識別系統底層概述3.1語音識別的基本原理根據語音識別在現實中的應用,語音識別存在以下幾種形式:小詞匯量與大詞匯量的識別、無詞匯數量限制的識別,獨立單個詞語與串聯連續詞句的識別,特定相關人與非特定相關人的識別。盡管語音識別系統存在著多種類別,但各種識別
13、形式遵循相似的語音識別基本原理與處理方法。預處理聲學參數分析測度估計判決語音庫專家知識庫失真測度語音信號識別結果如圖2所示為語音識別原理的詳細流程,當一個具有一定意義和信息含量的語音信息被錄入識別系統時,系統會對其進行“訓練(Training)”過程,其具體操作是開始分析語音信息的特征,接著按一定的指令將其傳送到機器并存儲起來。進行訓練之后就會對語音進行“識別(Recognition)”,具體過程是與語音參數庫中的參數模板進行比較,以此來判斷識別結果是否理想。在識別過程常加入失真度比較環節,該過程中會計算“識別”過后的語音與語音參數矢量之間的“失真測度(DistortionMeasures)”
14、,從中取出失真度最小的模塊,即可當作最終理想的識別結果。圖2 語音識別原理流圖3.2 Microsoft Speech SDK介紹Microsoft Speech SDK是在windows 操作系統下視窗環境(如VC+6.0、Visual Studio等開發工具)語音開發工具包,其主要包含以下幾種語音引擎,即應用設計接口(SAPI)、微軟的串聯語音與語音到文本的合成(TTS)引擎以與微軟的連續語音識別引擎(MCSR)1。這里主要針對SAPI引擎作詳細介紹,SAPI引擎主要用于對低層系統的控制,此外,還具有高度適應性的直接語音管理、訓練向導管理、事件管理以與語音識別(SR)管理等。如圖3所示為S
15、API層,應用程序接口(API)層和設備驅動接口(DDI)層三者之間的結構圖。Application(應用程序)Application(應用程序)SAPI Runtime (SAPI運行時)Recognition Engine(識別引擎)TTS Engine(語音合成引擎)APIDDI圖3 微軟Speech SDK底層驅動結構由上面的結構圖可以看出在這里用戶應用程序是通過SAPI與API層之間進行交互的,語音識別引擎是通過SAP層與DDI進行通信的。其中API層在對語音識別以與語音合成方面的程序開發起到了加快作用。因此語音識別API層在程序開發過程起到了主導作用,是在這里要詳細介紹的一個環節。
16、語音識別中存在的可共享語音識別引擎CRInstanceCreat_ISP是其主要接口。CRInstanceCreat_ISP在處理語音識別事件和應用程序接受消息通知的過程中起到了傳輸作用。應用程序在語音引擎的選擇中有兩種不同的選擇方式。其中的共享式語音識別(Shared Recognition)在語音識別應用程序的共享語音識別引擎得到了廣泛的應用,具備可用于提供給其他能夠接受的語音識別應用程序的功能2。在創建一個可共享語音識別引擎 CRInstanceCreat_ISP對象的過程中,應用程序(APP)首先要調用COM 的ComCRInstanceCreat(SpShared_CLSID_ReC
17、on)函數,從而SAPI可以將音頻輸入流設置為默認模式。如果在一個大型的服務程序中,通常需要驅動在一個系統上獨立運行,為確保系統能夠有一個穩定的工作狀況,此時獨占式語音識別(InProc Speech Recognition)引擎與共享式語音識別引擎(CRInstanceCreat_ISP)相比顯得更加適合。在創建一個獨占式語音識別引擎的CRInstanceCreat_ISP對象的過程中,應用程序同樣要首先調用COM的ComCRInstanceCreat函數。在這里應用程序調用ComCRInstanceCreat(SpShared_CLSID_ReCon)函數的目的是創建獨式識別引擎,為了對音
18、頻輸入的設置,還需要調用ISpRecognizet:SetInput函數。最后一步的操作是對ISpRecognizet:CreateCRInstanceCreat函數的調用,用其來得到 CRInstanceCreat_ISP對象。接下來的操作是為APP感興趣的事件來設置消息進行通知處理。作為IspEventSource的一種應用接口,在CRInstanceCreat_ISP接口中調用相應的方法用于指定CRInstanceCreat_ISP需要的特定的消息,這個方法可以是IspNotifySource。在這里不管什么樣的事件在被處理之前都需要被ISpEventSource:InterestSET
19、的方法來進行設定。在經過ISpEventSource:InterestSET方法事件設定過程的中,需要有SPEI_RECOGNITION事件來標識Recognizer_ISP,因為Recognizer_ISP是在CRInstanceCreat_ISP對語音識別之后的狀態標識。 在設置好感興趣事件之后,系統設計上需要指定何種語音,實現這個方法就需要以一定的指令或語法來進行約束,包含一定的控制語法和相關的口述命令。在這里應用程序需要首先創建和加載一個RecoGrammar_ISP接口,是為前面所提到的控制語法提供載體,而且在這個過程需要調用RecoGrammar_ISP:LoadDictation
20、 方法,用其作為口述語法的載體。當確定好適當的控制語法之后,需要對口述狀態進行設置,此時應用程序APP需要調用RecoGrammar_ISP:SetDictationState 方法以此來激活控制語法執行啟動識別過程3。在APP執行請求的過程中,首先需要某個通知機制來得到相應的通知消息,實現此過程還需要lParam成員,其包含的IspRecoResult接口為APP確定了RecoGrammar_ISP 接口識別出的是何種語音信號。4.系統上位機設計在系統設計中上位機設計是主體設計部分,在這里上位機軟件直接起到對Windows系統應用程序的操作作用,也是與下位機進行互動引導模塊。本設計系統方案的
21、軟件是在VC+6.0 的MFC平臺下設計并執行的,其中MFC平臺(Microsoft Foundation Classes)是一個微軟公司提供的類庫(class libraries),以C+類的形式封裝了Windows的API,并且包含一個應用程序框架,以減少應用程序開發人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的建控件和組件的封裝類。在MFC設計軟件過程中,首先需要在Windows7系統下安裝微軟Speech SDK 5.1的語音發卡包,在VC+6.0的工具選項中導入Speech SDK 5.1 的庫文件和頭文件即加載軟件底層接口驅動程序,通過語音識別來執
22、行相關指令以實現相應的功能。4.1 語音識別的過程語音識別的編程離不開由上所述的幾種語音識別引擎接口即以下四個語音引擎RecoGrammar_ISP,Recognizer_ISP ,ISpPhrase以與CRInstanceCreat_ISP它們都遵循COM組件的工作原理和Windows應用程序的工作原理即消息驅動機制,在實現過程中首先需要構造出操作語音識別的類即CSpeechRecognition,接下來即可通過CSpeechRecognition類來實現一個語音識別程序4。語音識別系統執行所需的各個引擎接口都在CSpeechRecognition類中封裝好了,它們分別是m_cpRecoEn
23、gine,m_cpRecoCotxt和 m_cpDictationGrammars,使用這些接口的目的在于它們使語音識別過程得到了簡潔方便。4.1.1 COM庫的初始化COM庫(Componet Object Model)即組件對象模型,是一種說明如何建立可動態互變組件的規,此規提供了為保證能夠互操作,客戶和組件應遵循的一些二進制和網絡標準5。通過這種標準將可以在任意兩個組件之間進行通信而不用考慮其所處的操作環境是否一樣、使用的開發語言是否一致以與是否運行于同一臺計算機。COM庫存在于DLL中,其在OLE32.DLL與OLE32.LIB中,定義了一些常用的函數,因此對COM的調用必須先用函數C
24、oInitialize (Null)來對其進行初始化。4.1.2 對語音識別對象的創建在對語音識別對象的創建過程中需要以特定的順序定義各個語音接口的對象,語音識別對象的識別事件可以對計算機用戶發出的聲音做出響應,判斷用戶朗讀的詞匯并執行相應的操作。語音識別對象Recognizer Object是實現語音識別引擎的方法。 4.1.3 上下文語音識別命令的創建上下文語音識別命令(Recognition Context)的創建是為系統在語音識別過程中,對語音識別的命令請求包括接收與發送消息起到了通知作用,同時為語法規則對象的創建起到了驅動作用,在創建語法規則對象時,一般每個語音識別上下文對象都對應一
25、個消息處理函數,該對象由特定函數創建6。 4.1.4 對識別消息和感興趣事件進行設置在這里需要首先調用函數SetNotifyWindowMessage,為了將識別消息送給windows,讓windows辨別具體需要進行處理的識別消息。在對語音響應時間的確定時需要通過函數中定義的消息WMSrenent來計量,此時在初始化函數的響應窗口中會得到通知7。接下來需要對感興趣事件進行設置。4.1.5 語法和規則的裝載語音識別引擎需要有一套特定的語法,APP需要首先初始化的步驟是語法的裝載,而且需要對RecoGrammar_ISP 接口進行執行激活處理。當存在的語法規則被RecoGrammar_ISP 接
26、口識別,ISpRecogContext對象會向APP發出語音識別消息,接下來就會對識別消息響應函數進行調用;在編輯消息函數中,獲取識別的結果是通過ISpPhraser接口實現的8。在語法規則還沒有被終止,這一步可以一直循環下去。根據實際應用的情況確定在此次程序設計采用聽說式語法規則,由于它具有相當大的語言詞匯量,適合漢語普通話的錄入識別。4.1.6 響應各種事件在以上五個步驟都依次執行完畢時,即已經完成了語音識別的初始化過程,接下來就能對每個程序事件進行直接響應。當應用程序退出時,卸載COM平臺。語音識別助理軟件系統流程如圖4所示。開始鏈接引擎正確裝載XML命令語法設置麥克風正確麥克風接收語音
27、命令狀態識別正確將識別結果送給控制模塊是否識別結束識別結束返回出錯提示否否否是是是 是圖4 語音識別助理軟件系統流程4.2 上位機程序設計過程上位機設計總體過程包括語法規則文件即“微軟語音識別CmdCtrl.xml”文件的編寫、程序初始化即語音識別初始化和串口通信初始化以與消息函數的實現過程。其中文件采用記事本進行編輯,將需要錄入的語音信息寫入文件中。程序設計需要首先安裝微軟Speech SDK 5.1,VC+6.0中建立工程,在工程設計中加入串口通信、Flash控件。文件配置中添加語音引擎sapi的頭文件和庫文件。4.2.1編寫語法規則文件XML文件是一種可以用來作為擴展標記的語言文件,其主
28、要作用是定義數據類型,使系統文件更具有結構化的特點9。在實際應用當中,XML文件需要由用戶自己編寫,來實現源語言的文件標記,XML文件在Web信息的交換中起到了主要的作用。XML文件的編寫有一套統一的約束規則,而且XML文件在對系統主程序結構的描述和交換提供了獨立的方法。在本上位機設計中需要裝載XLM文件,在對語音識別信息語音信號錄入的關鍵字依次寫入XML語法規則文件中。在語音引擎加載完畢,系統需要裝載XML命令,編寫語法規則文件是用其來定義需要識別的命令。在這些由用戶錄入的特定的語句,需要命令控制約束進行對其識別,程序中編寫的“微軟語音識別CmdCtrl.xml”文件需要在語法規則RecoG
29、rammar_ISP接口中裝載并被激活。4.2.2上位機系統初始化程序初始化過程中需要對語音識別進行初始化,在這里語音識別初始化即4.1所述的COM口初始化、語音識別對象的創建、上下文語音識別命令的創建、識別消息和感興趣事件的設置、語法和規則的裝載六個底層驅動過程。接著是對串口進行初始化,串口初始化的目的是為了與下位機進行通信,串口初始化過程中需要進行的操作有串口端口號的設定、輸入模式設定為二進制模式、收到一個字節引發OnComm事件、串口參數的設置其中波特率9600bit/s,無奇偶校驗。4.2.3消息函數實現在以上語音識別引擎和串口初始化完畢,系統初始化完成,接下來是對程序消息函數的實現過
30、程。在MFC程序運行過程中,程序需要由事件驅動。系統維護是維護窗口例行過程中主要的維護機制,對在傳入系統的消息時消息處理函數會對其進行處理。在建立一個窗口前,為了讓消息處理函數與窗口建立聯系,消息處理函數必須先寫,當系統檢測到消息時就會調用消息處理函數。消息函數中包含的消息事件是在程序流程中依次被取出,在程序執行實現,將實現結果依次發送到特定的窗口中。整個消息響應過程是一個程序輪詢的過程。在程序輪詢中按照取出消息,派發消息的循環過程,直到退出循環,程序終止10。本程序在對消息響應函數的設計過程中,在語法規則被識別引擎CRInstanceCreat_ISP識別之后,應用程序需要由ISpRecoC
31、ontext對象發出語音識別消息,并調用識別消息的各個響應函數。5.系統下位機設計為了實現更多的擴展應用,使人機互動過程更加靈活多樣,系統方案中加入了PC與MCU的通信部分。系統下位機設計的硬件部分包括51單片機最小系統,電平轉換電路,語音播報模塊。系統下位機軟件設計采用C語言在Keil下編程,將生成的.hex文件通過串口燒寫到單片機。5.1 下位機硬件設計這里使用STC89C51單片機作為下位機MCU,系統電源采用電腦USB接口電源供電,語音模塊供電部分采用兩個二極管達到降壓的目的,整個下位機電路系統包括語音模塊電路,單片機最小系統電路以與串口電平轉換電路,單片機最小系統電路如圖5所示。其中
32、電路板設計使用Altium Designer6.9 軟件繪制原理圖與PCB,電路板工藝設計過程中主要經過了電路板鉆孔、線路曝光、線路顯影以與線路腐蝕四個流程。圖5 單片機最小系統5.1.1 串口電平轉換電路設計由于電腦電平使用的是CMOS電平,而下位機最小系統采用的是TTL電平,在上位機與下位機進行數據交換時過程中,需要將電腦的COMS電平轉換成下位機的TTL電平,將下位機的TTL電平轉換成電腦的CMOS電平,上位機與下位機才能正常通信。本串口電平轉換芯片選用MAX232芯片,串口電平轉換電路如圖所示。圖6 串口電平轉換電路5.1.2 語音控制模塊與流水燈電路設計語音播報控制芯片選用唯創的WT
33、V020-SD,該模塊控制方式多樣,這里選用該模塊的三線串口控制方式,三線串口控制方式具有對存儲在SD卡中的任意一個.AD4格式文件進行語音播報的功能。其硬件方式簡單,只需CLK,RST以與DI三條線路與單片機的IO連接。流水燈電路中使用7個發光二極管加一個1K歐排阻進行限流,如圖7所示為語音控制模塊以與流水燈的接口電路。圖7 語音模塊與LED電路圖8下位機硬件實物圖5.2 下位機軟件設計該系統下位機軟件采用C語言在Keil下編程實現。軟件實現的功能是當上位機接收到語音命令信息,向下位機串口發送相應的十六進制字符,下位機接收到串口發送的數據,通過選擇判斷,實現對應的功能要求,本設計案例中加入了
34、語音播報與流水燈閃爍過程。下位機軟件執行流程如圖9所示:執行相關功能模塊結束接收數據一致一致 否是等待串口發送并接收數劇波特率、IO口初始化開始圖9 下位機執行流程圖5.2.1 下位機串口通信波特率設置為了使上位機與下位機能進行正常通信,這里單片機使用11.0592MHz晶振,波特率設定為9600 bit/s。根據波特率的計算公式: 其中X為定時器的初始值,fosc為單片機使用的晶振頻率大小。此過程需要對單片機的定時器,串行口控制寄存器以與PCON寄存器進行設置。定時器工作方式選擇定時器一的方式二,串行口方式選擇方式一,即串行口使用10位通用異步通信接口,此時PCON寄存器的SMOD位設定為0
35、。根據以上條件和波特率計算公式得出定時器一的初始值X。5.2.2 語音播報控制芯片時序控制這里語音播報芯片WTV020-SD使用的是三線串口控制模式,其實現機制是是由單片機的三個IO口按照一定的時序分別控制CLK,RST以與DI。其控制時序如圖10所示。在RST信號拉低5ms之后,CLK信號需要立即拉高300ms并等待數據線2ms的時間,數據線可隨時鐘線發送數據,每次發送兩個字節數據即音頻文件的文件名,這里音頻文件名是以十六進制形式命名的兩字節格式。當文件名的十六位數據發送完畢,語音播報芯片開始響應輸出對應的語音文件,即時序圖中的BUSY信號為高電位,表示有語音輸出這個狀態。圖10 三線串口控
36、制時序6.系統配置與調試6.1上位機調試系統上位機設計是在Windows7系統下進行配置的,上位機實現調試階段主要是針對上位機麥克風的訓練。系統上位機在對Windows系統視窗程序、打開和播放Flash動畫都是在PC上完成的,當用戶在一定的距離之對著麥克風發出語音請求,Windows彈出相應的功能表示上位機軟件在PC中的設計沒有問題。上位機麥克風訓練過程首先需要打開Windows7系統,進入控制面板的輕松訪問界面啟動語音識別并設置麥克風。如圖11 所示為啟動語音識別配置麥克風。圖11 啟動語音識別配置麥克風當上位機進入系統彈出軟件歡迎動畫界面如圖12所示。 圖12 軟件歡迎動畫界面系統上位機軟
37、件打開后,當用戶對著麥克風呼出“師學院”,Windows界面彈出師學院的。圖13 小葉同學正對著麥克風呼叫“師學院”圖14 Windows 彈出師學院窗口6.2 下位機調試系統下位機調試主要針對串口通訊和語音播報模塊的時序調試。串口通訊調試過程中,由上位機發送十六進制字符如果下位機接收到相應的字符那么波特率設置正確。在語音播報控制模塊的調試中需要嚴格按照WTV020-SD的三線控制時序,其中CLK與DI時序如圖15示波器截圖所示,黃線是CLK,綠線是DI。圖15 示波器檢測到的CLK與DI時序波7. 設計總結本設計過程是學習與設計的同步過程,由于在校期間軟件方面知識很是欠缺,本設計是從開始接觸
38、MFC到了解在MFC平臺下開發軟件的一個開始階段。設計制作過程中也是從一點一滴學起來的,并逐步完善的。為了讓整體設計效果達到實用性與趣味性,在設計過程中相繼添加了幾個生活中實用性的模塊。因為語音識別技術是人機互動的一種方式,在人的意志控制下,以發出語言的方式讓機器來實現人的意愿是很有趣,很友好的。當然,在設計過程遇到了一些問題,解決這些問題的過程的同時也提升了學習能力,在歷時幾個月的學習與設計的時間里,對軟件設計有了初步認識。參考文獻:1 MicrosoftSpeech5.1SDKHelpZ.2 逸波,郭天杰,王華駒.最新語音識別技術M :電子工業,1998.3 安居院猛,中嵨正之.計算機語音
39、處理(日)M :國防工業,1987.4 孟威,黃維通 Visual C+ 程序設計教程M :機械工業,2002.5 禹才,左友東,秀清.基于SpeechSDK的語音控制應用程序的設計與實現J.計算機應用,2004.6 松, 文軒.基于Microsoft SpeechSDK5. 1 實現中英文朗讀 J.7 宋陽.利用SAPI5完成中文語音音素的分解 J.微計算機息,2005.8 朱民雄,聞新,黃健群,周露-計算機語音技術M.:航空航天大學,2002.9 尚國,金龍.語音識別技術概述J1電腦,2006.10 艷.基于MFC平臺下的語音識別系統的設計.計算機語音技術,2007.附錄一:系統上位機部分
40、源代碼/基于微軟語音引擎的語音識別/師學院/物理與電子科學學院.實驗C樓103/歡/2014.5.4#include "stdafx.h"#include "voice.h"#include "voiceDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic
41、:CAboutDlg();enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportprotected:DECLARE_MESSAGE_MAP();void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()/ CVoiceDlg dialogCVoic
42、eDlg:CVoiceDlg(CWnd* pParent /*=NULL*/): CDialog(CVoiceDlg:IDD, pParent)B0=0;m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CVoiceDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CVoiceDlg)DDX_Control(pDX, IDC_EDIT1, m_Edit1);DDX_Control(pDX, IDC_WEBSITE, m_web
43、site);DDX_Control(pDX, IDC_SHOCKWAVEFLASH1, m_FlashPlayer);DDX_Control(pDX, IDC_MSCOMM1, m_);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CVoiceDlg, CDialog)/AFX_MSG_MAP(CVoiceDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnAddFlash)ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)ON_MES
44、SAGE(WM_RECOEVENT, OnRecoEvent)ON_BN_CLICKED(IDC_WEBSITE, OnWebsite)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CVoiceDlg message handlersBOOL CVoiceDlg:OnInitDialog()CDialog:OnInitDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX &a
45、mp; 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAbo
46、utMenu);/ Set the icon for this dialog. The framework does this automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/* 語音識別初始化*/HRESULT hr =m_SREngine.InitializeSapi(this->GetSafeHwnd(), WM_RECOEVENT);if
47、(FAILED(hr)return FALSE;hr = m_SREngine.LoadCmdFromFile("微軟語音識別CmdCtrl.xml");if(FAILED(hr)/:MessageBox(NULL, "HERE","OK",MB_OK);return FALSE;hr = m_SREngine.SetRuleState(NULL, NULL, SPRS_ACTIVE /*TRUE*/);if(FAILED(hr)return FALSE;/* 語音識別初始化*結束*/if(m_.GetPortOpen()m_.Set
48、PortOpen(FALSE);m_.SetCommPort(1);m_.SetInputMode(1);m_.SetInBufferSize(1024);m_.SetOutBufferSize (512);m_.SetSettings("9600,n,8,1");if(!m_.GetPortOpen()m_.SetPortOpen(true);m_.SetRThreshold(1);m_.SetInputLen(0);m_.GetInput();return TRUE; / return TRUE unless you set the focus to a control
49、void CVoiceDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);void CVoiceDlg:OnPaint()if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSaf
50、eHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnP
51、aint();/*CPaintDC dc(this);CRect rect;GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP);BITMAP bitmap;bmpBackground.GetBitmap(&bitmap);CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0,0,rect.Widt
52、h(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); */HCURSOR CVoiceDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CVoiceDlg:OnRecoEvent(WPARAM wParam, LPARAM lParam)/語音識別消息響應USES_CONVERSION;CSpEvent event;HRESULT hr = S_OK;if(m_SREngine.m_cpRecoContext)while(event.GetFrom(
53、m_SREngine.m_cpRecoContext) = S_OK)switch(event.eEventId)case SPEI_FALSE_RECOGNITION:break;case SPEI_HYPOTHESIS:case SPEI_RECOGNITION:CComPtr <ISpRecoResult> cpResult;CSpDynamicString dstrText;CString strResult;CString strTXData;cpResult = event.RecoResult();cpResult ->GetText(SP_GETWHOLEPH
54、RASE, SP_GETWHOLEPHRASE, TRUE, &dstrText, NULL);strResult = W2T(dstrText);if(strResult = CString("師學院")ShellExecute(NULL, "open", "", NULL, NULL, SW_SHOWNORMAL);else if(strResult = CString("百度") )ShellExecute(NULL, "open", ".baidu.", NU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 液體乳品加工過程中的節能減排考核試卷
- 方便素食加工考核試卷
- 礦山測量新技術與數據應用考核試卷
- 毛巾企業生產安全風險評估與防范考核試卷
- 腫瘤靶向治療與免疫治療考核試卷
- 上饒師范學院《二外(法語)2》2023-2024學年第一學期期末試卷
- 江蘇省南京玄武外國語學校2025年初三元月調研測試物理試題試卷含解析
- 咸陽師范學院《環境工程基礎勞動》2023-2024學年第二學期期末試卷
- 上海市浦東新區南匯中學2024-2025學年高三物理試題月考試題含解析
- 南京信息工程大學《高等天然藥物化學》2023-2024學年第二學期期末試卷
- 2024-2030年中國太空艙酒店行業市場發展分析及前景趨勢與投資研究報告
- 嬰幼兒發展引導員(三級)理論試題及答案
- 預制梁場建設施工梁場建設規劃
- 人教版八年級下冊物理精講與精練突破專題強化一 杠杠和滑輪組作圖問題(附答案)
- 2024低預應力預制混凝土實心方樁
- 物業值班門崗5S標準檢查
- 宣威區域地質資料
- 軍事博物館調研報告
- CJJT191-2012 浮置板軌道技術規范
- 2024年同等學力申碩-同等學力(法學)筆試參考題庫含答案
- 農貿市場安全生產制度
評論
0/150
提交評論