![論文基于微軟語音引擎的語音識別_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/0ff342b9-305b-4f71-8e4b-259d5e6fd456/0ff342b9-305b-4f71-8e4b-259d5e6fd4561.gif)
![論文基于微軟語音引擎的語音識別_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/0ff342b9-305b-4f71-8e4b-259d5e6fd456/0ff342b9-305b-4f71-8e4b-259d5e6fd4562.gif)
![論文基于微軟語音引擎的語音識別_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/0ff342b9-305b-4f71-8e4b-259d5e6fd456/0ff342b9-305b-4f71-8e4b-259d5e6fd4563.gif)
![論文基于微軟語音引擎的語音識別_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/0ff342b9-305b-4f71-8e4b-259d5e6fd456/0ff342b9-305b-4f71-8e4b-259d5e6fd4564.gif)
![論文基于微軟語音引擎的語音識別_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/0ff342b9-305b-4f71-8e4b-259d5e6fd456/0ff342b9-305b-4f71-8e4b-259d5e6fd4565.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 本科畢業(yè)論文(設(shè)計)題 目: 基于微軟語音引擎的語音識別 學(xué) 生: 歡 學(xué)號: 8 學(xué) 院:物理與電子科學(xué)學(xué)院 專業(yè): 電子信息科學(xué)與技術(shù) 入學(xué)時間: 2010 年 9 月 15 日指導(dǎo)教師: 周小波 職稱: 教授 完成日期: 2014 年 5 月 4 日誠 信 承 諾我謹(jǐn)在此承諾:本人所寫的畢業(yè)論文基于微軟語音引擎的語音識別均系本人獨(dú)立完成,沒有抄襲行為,凡涉與其他作者的觀點(diǎn)和材料,均作了注釋,若有不實(shí),后果由本人承擔(dān)。 承諾人(簽名): 年 月 日基于微軟語音引擎的語音識別歡 學(xué)號:8 指導(dǎo)老師:周小波摘要:本設(shè)計是利用微軟語音軟件開發(fā)包Speech SDK,在VC+6.0 的MFC平臺
2、下實(shí)現(xiàn)計算機(jī)語音識別的過程。通過對微軟語音開發(fā)理論的學(xué)習(xí)與探索,了解MFC平臺的開發(fā)與應(yīng)用,掌握Microsoft Speech SDK (SAPI)在VC+6.0下的加載運(yùn)行,設(shè)計出的在Windows系統(tǒng)下的人機(jī)交互語音識別系統(tǒng)。系統(tǒng)總體設(shè)計包含上位機(jī)設(shè)計和下位機(jī)設(shè)計,以上位機(jī)軟件設(shè)計為主體設(shè)計部分,下位機(jī)部分作為功能擴(kuò)展部分。其中下位機(jī)設(shè)計使用STC89C51單片機(jī)作為主控芯片,下位機(jī)軟件采用C語言在Keil下編程實(shí)現(xiàn)。上位機(jī)控制部分包含打開Windows視窗程序、打開瀏覽器中的等操作。下位機(jī)控制部分主要是控制語音模塊的語音播報。整個系統(tǒng)是圍繞日常生活中人們所需進(jìn)行設(shè)計的,為人們?nèi)粘I钐?/p>
3、供更多的便利。 關(guān)鍵詞:語音識別、Speech SDK、MFC、單片機(jī); 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研究的目標(biāo)12.系統(tǒng)整體設(shè)計概述12.1 設(shè)計環(huán)境要求12.2 功能概述23.語音識別系統(tǒng)底層概述33.1語音識別的基本原理33.2 Microsoft Speech SDK介紹44.系統(tǒng)上位機(jī)設(shè)計64.1 語音識別的過程64.1.1 COM庫的初始化64.1.2 對語
8、音識別對象的創(chuàng)建74.1.3 上下文語音識別命令的創(chuàng)建74.1.4 對識別消息和感興趣事件進(jìn)行設(shè)置74.1.5 語法和規(guī)則的裝載74.1.6 響應(yīng)各種事件84.2 上位機(jī)程序設(shè)計過程104.2.1編寫語法規(guī)則文件104.2.2上位機(jī)系統(tǒng)初始化104.2.3消息函數(shù)實(shí)現(xiàn)115.系統(tǒng)下位機(jī)設(shè)計115.1 下位機(jī)硬件設(shè)計115.1.1 串口電平轉(zhuǎn)換電路設(shè)計125.1.2 語音控制模塊與流水燈電路設(shè)計135.2 下位機(jī)軟件設(shè)計135.2.1 下位機(jī)串口通信波特率設(shè)置145.2.2 語音播報控制芯片時序控制156.系統(tǒng)配置與調(diào)試156.1上位機(jī)調(diào)試156.2下位機(jī)調(diào)試187. 設(shè)計總結(jié)18參考文獻(xiàn):19
9、附錄一:系統(tǒng)上位機(jī)部分源代碼20附錄二:XML語法規(guī)則文件代碼31附錄三:系統(tǒng)下位機(jī)源代碼33致3837 / 421.引言1.1研究的背景語音識別技術(shù)的產(chǎn)生與不斷發(fā)展的過程已經(jīng)有六十多年的歷史, 在計算機(jī)與現(xiàn)代通信技術(shù)的不斷進(jìn)步,語音識別技術(shù)的進(jìn)步與其擴(kuò)大的應(yīng)用領(lǐng)域也得以體現(xiàn)。目前,一些基于語音識別技術(shù)的產(chǎn)品如語音撥號,智能語音搜索引擎等在國外都相繼得到了開發(fā)與使用。最早利用計算機(jī)技術(shù)實(shí)現(xiàn)語音識別技術(shù)的有IBM、APPLE、GOOGLE等公司,在目前的Windows、Android等智能移動設(shè)備中都相繼得到了開發(fā)。 1.2研究的意義語音識別技術(shù)是語音領(lǐng)域的重要組成部分,同時在計算機(jī)科學(xué)領(lǐng)域中發(fā)
10、揮著不可或缺的作用。在應(yīng)用領(lǐng)域中語音識別是人機(jī)交互方式的一個重要應(yīng)用,伴隨著語音技術(shù)、通信技術(shù)、智能物聯(lián)網(wǎng)技術(shù)的發(fā)展,語音識別技術(shù)將在遠(yuǎn)程智能控制、教育培訓(xùn)、電子商務(wù)管理等各個新型領(lǐng)域中發(fā)揮著更大的作用。1.3研究的目標(biāo)本設(shè)計的目標(biāo)是利用微軟語音開發(fā)包Microsoft Speech SDK 5.1 開發(fā)設(shè)計出具有語音識別功能的軟件。該軟件的使用是在Windows操作系統(tǒng)下運(yùn)行的,識別相關(guān)語音命令來加載運(yùn)行所指定的功能。2.系統(tǒng)整體設(shè)計概述2.1 設(shè)計環(huán)境要求系統(tǒng)整體設(shè)計包括上位機(jī)語音識別軟件設(shè)計,下位機(jī)單片機(jī)與其應(yīng)用硬件結(jié)構(gòu)與程序算法設(shè)計。上位機(jī)采用在VC+6.0 的MFC平臺下編程實(shí)現(xiàn),下
11、位機(jī)使用STC89C51單片機(jī)進(jìn)行通信并實(shí)現(xiàn)相應(yīng)的控制過程。在設(shè)計過程中的硬件要求有電源、一臺裝有VC+6.0的Windows PC、麥克風(fēng)設(shè)備、串口或USB轉(zhuǎn)串口設(shè)備、單片機(jī)最小系統(tǒng)以與實(shí)現(xiàn)相應(yīng)功能的應(yīng)用電路與其元器件等。2.2 功能概述在MFC加載編譯,執(zhí)行程序后,生成的可執(zhí)行文件即最終的應(yīng)用軟件。啟動應(yīng)用軟件后,系統(tǒng)立即進(jìn)入語音識別狀態(tài),由用戶對著PC的麥克風(fēng)發(fā)出相關(guān)語音請求指令,系統(tǒng)會對發(fā)出的語音請求信號進(jìn)行識別與判斷,如果與預(yù)期設(shè)定的語音請求指令相一致,那么就可以獲得有效的識別結(jié)果,在函數(shù)調(diào)用中加載相應(yīng)的功能指令。在程序設(shè)計的過程中首先對系統(tǒng)進(jìn)行初始化,包括語音初始化和串口初始化,其
12、中串口初始化是為了與下位機(jī)進(jìn)行通信,然后進(jìn)入語音識別過程。本設(shè)計中加入了調(diào)用Windows系統(tǒng)視窗程序、打開、播放Flash動畫與下位機(jī)進(jìn)行通信并實(shí)現(xiàn)相應(yīng)功能。如圖1所示為系統(tǒng)功能流程。麥克風(fēng)語音助理Windows系統(tǒng)視窗程序打開網(wǎng)站通信串口播放Flash啟動計算器百度阜陽師范學(xué)院火車訂票下位機(jī)打開文件夾語音播報奏樂流水燈圖1 系統(tǒng)功能流程3.語音識別系統(tǒng)底層概述3.1語音識別的基本原理根據(jù)語音識別在現(xiàn)實(shí)中的應(yīng)用,語音識別存在以下幾種形式:小詞匯量與大詞匯量的識別、無詞匯數(shù)量限制的識別,獨(dú)立單個詞語與串聯(lián)連續(xù)詞句的識別,特定相關(guān)人與非特定相關(guān)人的識別。盡管語音識別系統(tǒng)存在著多種類別,但各種識別
13、形式遵循相似的語音識別基本原理與處理方法。預(yù)處理聲學(xué)參數(shù)分析測度估計判決語音庫專家知識庫失真測度語音信號識別結(jié)果如圖2所示為語音識別原理的詳細(xì)流程,當(dāng)一個具有一定意義和信息含量的語音信息被錄入識別系統(tǒng)時,系統(tǒng)會對其進(jìn)行“訓(xùn)練(Training)”過程,其具體操作是開始分析語音信息的特征,接著按一定的指令將其傳送到機(jī)器并存儲起來。進(jìn)行訓(xùn)練之后就會對語音進(jìn)行“識別(Recognition)”,具體過程是與語音參數(shù)庫中的參數(shù)模板進(jìn)行比較,以此來判斷識別結(jié)果是否理想。在識別過程常加入失真度比較環(huán)節(jié),該過程中會計算“識別”過后的語音與語音參數(shù)矢量之間的“失真測度(DistortionMeasures)”
14、,從中取出失真度最小的模塊,即可當(dāng)作最終理想的識別結(jié)果。圖2 語音識別原理流圖3.2 Microsoft Speech SDK介紹Microsoft Speech SDK是在windows 操作系統(tǒng)下視窗環(huán)境(如VC+6.0、Visual Studio等開發(fā)工具)語音開發(fā)工具包,其主要包含以下幾種語音引擎,即應(yīng)用設(shè)計接口(SAPI)、微軟的串聯(lián)語音與語音到文本的合成(TTS)引擎以與微軟的連續(xù)語音識別引擎(MCSR)1。這里主要針對SAPI引擎作詳細(xì)介紹,SAPI引擎主要用于對低層系統(tǒng)的控制,此外,還具有高度適應(yīng)性的直接語音管理、訓(xùn)練向?qū)Ч芾?、事件管理以與語音識別(SR)管理等。如圖3所示為S
15、API層,應(yīng)用程序接口(API)層和設(shè)備驅(qū)動接口(DDI)層三者之間的結(jié)構(gòu)圖。Application(應(yīng)用程序)Application(應(yīng)用程序)SAPI Runtime (SAPI運(yùn)行時)Recognition Engine(識別引擎)TTS Engine(語音合成引擎)APIDDI圖3 微軟Speech SDK底層驅(qū)動結(jié)構(gòu)由上面的結(jié)構(gòu)圖可以看出在這里用戶應(yīng)用程序是通過SAPI與API層之間進(jìn)行交互的,語音識別引擎是通過SAP層與DDI進(jìn)行通信的。其中API層在對語音識別以與語音合成方面的程序開發(fā)起到了加快作用。因此語音識別API層在程序開發(fā)過程起到了主導(dǎo)作用,是在這里要詳細(xì)介紹的一個環(huán)節(jié)。
16、語音識別中存在的可共享語音識別引擎CRInstanceCreat_ISP是其主要接口。CRInstanceCreat_ISP在處理語音識別事件和應(yīng)用程序接受消息通知的過程中起到了傳輸作用。應(yīng)用程序在語音引擎的選擇中有兩種不同的選擇方式。其中的共享式語音識別(Shared Recognition)在語音識別應(yīng)用程序的共享語音識別引擎得到了廣泛的應(yīng)用,具備可用于提供給其他能夠接受的語音識別應(yīng)用程序的功能2。在創(chuàng)建一個可共享語音識別引擎 CRInstanceCreat_ISP對象的過程中,應(yīng)用程序(APP)首先要調(diào)用COM 的ComCRInstanceCreat(SpShared_CLSID_ReC
17、on)函數(shù),從而SAPI可以將音頻輸入流設(shè)置為默認(rèn)模式。如果在一個大型的服務(wù)程序中,通常需要驅(qū)動在一個系統(tǒng)上獨(dú)立運(yùn)行,為確保系統(tǒng)能夠有一個穩(wěn)定的工作狀況,此時獨(dú)占式語音識別(InProc Speech Recognition)引擎與共享式語音識別引擎(CRInstanceCreat_ISP)相比顯得更加適合。在創(chuàng)建一個獨(dú)占式語音識別引擎的CRInstanceCreat_ISP對象的過程中,應(yīng)用程序同樣要首先調(diào)用COM的ComCRInstanceCreat函數(shù)。在這里應(yīng)用程序調(diào)用ComCRInstanceCreat(SpShared_CLSID_ReCon)函數(shù)的目的是創(chuàng)建獨(dú)式識別引擎,為了對音
18、頻輸入的設(shè)置,還需要調(diào)用ISpRecognizet:SetInput函數(shù)。最后一步的操作是對ISpRecognizet:CreateCRInstanceCreat函數(shù)的調(diào)用,用其來得到 CRInstanceCreat_ISP對象。接下來的操作是為APP感興趣的事件來設(shè)置消息進(jìn)行通知處理。作為IspEventSource的一種應(yīng)用接口,在CRInstanceCreat_ISP接口中調(diào)用相應(yīng)的方法用于指定CRInstanceCreat_ISP需要的特定的消息,這個方法可以是IspNotifySource。在這里不管什么樣的事件在被處理之前都需要被ISpEventSource:InterestSET
19、的方法來進(jìn)行設(shè)定。在經(jīng)過ISpEventSource:InterestSET方法事件設(shè)定過程的中,需要有SPEI_RECOGNITION事件來標(biāo)識Recognizer_ISP,因?yàn)镽ecognizer_ISP是在CRInstanceCreat_ISP對語音識別之后的狀態(tài)標(biāo)識。 在設(shè)置好感興趣事件之后,系統(tǒng)設(shè)計上需要指定何種語音,實(shí)現(xiàn)這個方法就需要以一定的指令或語法來進(jìn)行約束,包含一定的控制語法和相關(guān)的口述命令。在這里應(yīng)用程序需要首先創(chuàng)建和加載一個RecoGrammar_ISP接口,是為前面所提到的控制語法提供載體,而且在這個過程需要調(diào)用RecoGrammar_ISP:LoadDictation
20、 方法,用其作為口述語法的載體。當(dāng)確定好適當(dāng)?shù)目刂普Z法之后,需要對口述狀態(tài)進(jìn)行設(shè)置,此時應(yīng)用程序APP需要調(diào)用RecoGrammar_ISP:SetDictationState 方法以此來激活控制語法執(zhí)行啟動識別過程3。在APP執(zhí)行請求的過程中,首先需要某個通知機(jī)制來得到相應(yīng)的通知消息,實(shí)現(xiàn)此過程還需要lParam成員,其包含的IspRecoResult接口為APP確定了RecoGrammar_ISP 接口識別出的是何種語音信號。4.系統(tǒng)上位機(jī)設(shè)計在系統(tǒng)設(shè)計中上位機(jī)設(shè)計是主體設(shè)計部分,在這里上位機(jī)軟件直接起到對Windows系統(tǒng)應(yīng)用程序的操作作用,也是與下位機(jī)進(jìn)行互動引導(dǎo)模塊。本設(shè)計系統(tǒng)方案的
21、軟件是在VC+6.0 的MFC平臺下設(shè)計并執(zhí)行的,其中MFC平臺(Microsoft Foundation Classes)是一個微軟公司提供的類庫(class libraries),以C+類的形式封裝了Windows的API,并且包含一個應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的建控件和組件的封裝類。在MFC設(shè)計軟件過程中,首先需要在Windows7系統(tǒng)下安裝微軟Speech SDK 5.1的語音發(fā)卡包,在VC+6.0的工具選項(xiàng)中導(dǎo)入Speech SDK 5.1 的庫文件和頭文件即加載軟件底層接口驅(qū)動程序,通過語音識別來執(zhí)
22、行相關(guān)指令以實(shí)現(xiàn)相應(yīng)的功能。4.1 語音識別的過程語音識別的編程離不開由上所述的幾種語音識別引擎接口即以下四個語音引擎RecoGrammar_ISP,Recognizer_ISP ,ISpPhrase以與CRInstanceCreat_ISP它們都遵循COM組件的工作原理和Windows應(yīng)用程序的工作原理即消息驅(qū)動機(jī)制,在實(shí)現(xiàn)過程中首先需要構(gòu)造出操作語音識別的類即CSpeechRecognition,接下來即可通過CSpeechRecognition類來實(shí)現(xiàn)一個語音識別程序4。語音識別系統(tǒng)執(zhí)行所需的各個引擎接口都在CSpeechRecognition類中封裝好了,它們分別是m_cpRecoEn
23、gine,m_cpRecoCotxt和 m_cpDictationGrammars,使用這些接口的目的在于它們使語音識別過程得到了簡潔方便。4.1.1 COM庫的初始化COM庫(Componet Object Model)即組件對象模型,是一種說明如何建立可動態(tài)互變組件的規(guī),此規(guī)提供了為保證能夠互操作,客戶和組件應(yīng)遵循的一些二進(jìn)制和網(wǎng)絡(luò)標(biāo)準(zhǔn)5。通過這種標(biāo)準(zhǔn)將可以在任意兩個組件之間進(jìn)行通信而不用考慮其所處的操作環(huán)境是否一樣、使用的開發(fā)語言是否一致以與是否運(yùn)行于同一臺計算機(jī)。COM庫存在于DLL中,其在OLE32.DLL與OLE32.LIB中,定義了一些常用的函數(shù),因此對COM的調(diào)用必須先用函數(shù)C
24、oInitialize (Null)來對其進(jìn)行初始化。4.1.2 對語音識別對象的創(chuàng)建在對語音識別對象的創(chuàng)建過程中需要以特定的順序定義各個語音接口的對象,語音識別對象的識別事件可以對計算機(jī)用戶發(fā)出的聲音做出響應(yīng),判斷用戶朗讀的詞匯并執(zhí)行相應(yīng)的操作。語音識別對象Recognizer Object是實(shí)現(xiàn)語音識別引擎的方法。 4.1.3 上下文語音識別命令的創(chuàng)建上下文語音識別命令(Recognition Context)的創(chuàng)建是為系統(tǒng)在語音識別過程中,對語音識別的命令請求包括接收與發(fā)送消息起到了通知作用,同時為語法規(guī)則對象的創(chuàng)建起到了驅(qū)動作用,在創(chuàng)建語法規(guī)則對象時,一般每個語音識別上下文對象都對應(yīng)一
25、個消息處理函數(shù),該對象由特定函數(shù)創(chuàng)建6。 4.1.4 對識別消息和感興趣事件進(jìn)行設(shè)置在這里需要首先調(diào)用函數(shù)SetNotifyWindowMessage,為了將識別消息送給windows,讓windows辨別具體需要進(jìn)行處理的識別消息。在對語音響應(yīng)時間的確定時需要通過函數(shù)中定義的消息WMSrenent來計量,此時在初始化函數(shù)的響應(yīng)窗口中會得到通知7。接下來需要對感興趣事件進(jìn)行設(shè)置。4.1.5 語法和規(guī)則的裝載語音識別引擎需要有一套特定的語法,APP需要首先初始化的步驟是語法的裝載,而且需要對RecoGrammar_ISP 接口進(jìn)行執(zhí)行激活處理。當(dāng)存在的語法規(guī)則被RecoGrammar_ISP 接
26、口識別,ISpRecogContext對象會向APP發(fā)出語音識別消息,接下來就會對識別消息響應(yīng)函數(shù)進(jìn)行調(diào)用;在編輯消息函數(shù)中,獲取識別的結(jié)果是通過ISpPhraser接口實(shí)現(xiàn)的8。在語法規(guī)則還沒有被終止,這一步可以一直循環(huán)下去。根據(jù)實(shí)際應(yīng)用的情況確定在此次程序設(shè)計采用聽說式語法規(guī)則,由于它具有相當(dāng)大的語言詞匯量,適合漢語普通話的錄入識別。4.1.6 響應(yīng)各種事件在以上五個步驟都依次執(zhí)行完畢時,即已經(jīng)完成了語音識別的初始化過程,接下來就能對每個程序事件進(jìn)行直接響應(yīng)。當(dāng)應(yīng)用程序退出時,卸載COM平臺。語音識別助理軟件系統(tǒng)流程如圖4所示。開始鏈接引擎正確裝載XML命令語法設(shè)置麥克風(fēng)正確麥克風(fēng)接收語音
27、命令狀態(tài)識別正確將識別結(jié)果送給控制模塊是否識別結(jié)束識別結(jié)束返回出錯提示否否否是是是 是圖4 語音識別助理軟件系統(tǒng)流程4.2 上位機(jī)程序設(shè)計過程上位機(jī)設(shè)計總體過程包括語法規(guī)則文件即“微軟語音識別CmdCtrl.xml”文件的編寫、程序初始化即語音識別初始化和串口通信初始化以與消息函數(shù)的實(shí)現(xiàn)過程。其中文件采用記事本進(jìn)行編輯,將需要錄入的語音信息寫入文件中。程序設(shè)計需要首先安裝微軟Speech SDK 5.1,VC+6.0中建立工程,在工程設(shè)計中加入串口通信、Flash控件。文件配置中添加語音引擎sapi的頭文件和庫文件。4.2.1編寫語法規(guī)則文件XML文件是一種可以用來作為擴(kuò)展標(biāo)記的語言文件,其主
28、要作用是定義數(shù)據(jù)類型,使系統(tǒng)文件更具有結(jié)構(gòu)化的特點(diǎn)9。在實(shí)際應(yīng)用當(dāng)中,XML文件需要由用戶自己編寫,來實(shí)現(xiàn)源語言的文件標(biāo)記,XML文件在Web信息的交換中起到了主要的作用。XML文件的編寫有一套統(tǒng)一的約束規(guī)則,而且XML文件在對系統(tǒng)主程序結(jié)構(gòu)的描述和交換提供了獨(dú)立的方法。在本上位機(jī)設(shè)計中需要裝載XLM文件,在對語音識別信息語音信號錄入的關(guān)鍵字依次寫入XML語法規(guī)則文件中。在語音引擎加載完畢,系統(tǒng)需要裝載XML命令,編寫語法規(guī)則文件是用其來定義需要識別的命令。在這些由用戶錄入的特定的語句,需要命令控制約束進(jìn)行對其識別,程序中編寫的“微軟語音識別CmdCtrl.xml”文件需要在語法規(guī)則RecoG
29、rammar_ISP接口中裝載并被激活。4.2.2上位機(jī)系統(tǒng)初始化程序初始化過程中需要對語音識別進(jìn)行初始化,在這里語音識別初始化即4.1所述的COM口初始化、語音識別對象的創(chuàng)建、上下文語音識別命令的創(chuàng)建、識別消息和感興趣事件的設(shè)置、語法和規(guī)則的裝載六個底層驅(qū)動過程。接著是對串口進(jìn)行初始化,串口初始化的目的是為了與下位機(jī)進(jìn)行通信,串口初始化過程中需要進(jìn)行的操作有串口端口號的設(shè)定、輸入模式設(shè)定為二進(jìn)制模式、收到一個字節(jié)引發(fā)OnComm事件、串口參數(shù)的設(shè)置其中波特率9600bit/s,無奇偶校驗(yàn)。4.2.3消息函數(shù)實(shí)現(xiàn)在以上語音識別引擎和串口初始化完畢,系統(tǒng)初始化完成,接下來是對程序消息函數(shù)的實(shí)現(xiàn)過
30、程。在MFC程序運(yùn)行過程中,程序需要由事件驅(qū)動。系統(tǒng)維護(hù)是維護(hù)窗口例行過程中主要的維護(hù)機(jī)制,對在傳入系統(tǒng)的消息時消息處理函數(shù)會對其進(jìn)行處理。在建立一個窗口前,為了讓消息處理函數(shù)與窗口建立聯(lián)系,消息處理函數(shù)必須先寫,當(dāng)系統(tǒng)檢測到消息時就會調(diào)用消息處理函數(shù)。消息函數(shù)中包含的消息事件是在程序流程中依次被取出,在程序執(zhí)行實(shí)現(xiàn),將實(shí)現(xiàn)結(jié)果依次發(fā)送到特定的窗口中。整個消息響應(yīng)過程是一個程序輪詢的過程。在程序輪詢中按照取出消息,派發(fā)消息的循環(huán)過程,直到退出循環(huán),程序終止10。本程序在對消息響應(yīng)函數(shù)的設(shè)計過程中,在語法規(guī)則被識別引擎CRInstanceCreat_ISP識別之后,應(yīng)用程序需要由ISpRecoC
31、ontext對象發(fā)出語音識別消息,并調(diào)用識別消息的各個響應(yīng)函數(shù)。5.系統(tǒng)下位機(jī)設(shè)計為了實(shí)現(xiàn)更多的擴(kuò)展應(yīng)用,使人機(jī)互動過程更加靈活多樣,系統(tǒng)方案中加入了PC與MCU的通信部分。系統(tǒng)下位機(jī)設(shè)計的硬件部分包括51單片機(jī)最小系統(tǒng),電平轉(zhuǎn)換電路,語音播報模塊。系統(tǒng)下位機(jī)軟件設(shè)計采用C語言在Keil下編程,將生成的.hex文件通過串口燒寫到單片機(jī)。5.1 下位機(jī)硬件設(shè)計這里使用STC89C51單片機(jī)作為下位機(jī)MCU,系統(tǒng)電源采用電腦USB接口電源供電,語音模塊供電部分采用兩個二極管達(dá)到降壓的目的,整個下位機(jī)電路系統(tǒng)包括語音模塊電路,單片機(jī)最小系統(tǒng)電路以與串口電平轉(zhuǎn)換電路,單片機(jī)最小系統(tǒng)電路如圖5所示。其中
32、電路板設(shè)計使用Altium Designer6.9 軟件繪制原理圖與PCB,電路板工藝設(shè)計過程中主要經(jīng)過了電路板鉆孔、線路曝光、線路顯影以與線路腐蝕四個流程。圖5 單片機(jī)最小系統(tǒng)5.1.1 串口電平轉(zhuǎn)換電路設(shè)計由于電腦電平使用的是CMOS電平,而下位機(jī)最小系統(tǒng)采用的是TTL電平,在上位機(jī)與下位機(jī)進(jìn)行數(shù)據(jù)交換時過程中,需要將電腦的COMS電平轉(zhuǎn)換成下位機(jī)的TTL電平,將下位機(jī)的TTL電平轉(zhuǎn)換成電腦的CMOS電平,上位機(jī)與下位機(jī)才能正常通信。本串口電平轉(zhuǎn)換芯片選用MAX232芯片,串口電平轉(zhuǎn)換電路如圖所示。圖6 串口電平轉(zhuǎn)換電路5.1.2 語音控制模塊與流水燈電路設(shè)計語音播報控制芯片選用唯創(chuàng)的WT
33、V020-SD,該模塊控制方式多樣,這里選用該模塊的三線串口控制方式,三線串口控制方式具有對存儲在SD卡中的任意一個.AD4格式文件進(jìn)行語音播報的功能。其硬件方式簡單,只需CLK,RST以與DI三條線路與單片機(jī)的IO連接。流水燈電路中使用7個發(fā)光二極管加一個1K歐排阻進(jìn)行限流,如圖7所示為語音控制模塊以與流水燈的接口電路。圖7 語音模塊與LED電路圖8下位機(jī)硬件實(shí)物圖5.2 下位機(jī)軟件設(shè)計該系統(tǒng)下位機(jī)軟件采用C語言在Keil下編程實(shí)現(xiàn)。軟件實(shí)現(xiàn)的功能是當(dāng)上位機(jī)接收到語音命令信息,向下位機(jī)串口發(fā)送相應(yīng)的十六進(jìn)制字符,下位機(jī)接收到串口發(fā)送的數(shù)據(jù),通過選擇判斷,實(shí)現(xiàn)對應(yīng)的功能要求,本設(shè)計案例中加入了
34、語音播報與流水燈閃爍過程。下位機(jī)軟件執(zhí)行流程如圖9所示:執(zhí)行相關(guān)功能模塊結(jié)束接收數(shù)據(jù)一致一致 否是等待串口發(fā)送并接收數(shù)劇波特率、IO口初始化開始圖9 下位機(jī)執(zhí)行流程圖5.2.1 下位機(jī)串口通信波特率設(shè)置為了使上位機(jī)與下位機(jī)能進(jìn)行正常通信,這里單片機(jī)使用11.0592MHz晶振,波特率設(shè)定為9600 bit/s。根據(jù)波特率的計算公式: 其中X為定時器的初始值,fosc為單片機(jī)使用的晶振頻率大小。此過程需要對單片機(jī)的定時器,串行口控制寄存器以與PCON寄存器進(jìn)行設(shè)置。定時器工作方式選擇定時器一的方式二,串行口方式選擇方式一,即串行口使用10位通用異步通信接口,此時PCON寄存器的SMOD位設(shè)定為0
35、。根據(jù)以上條件和波特率計算公式得出定時器一的初始值X。5.2.2 語音播報控制芯片時序控制這里語音播報芯片WTV020-SD使用的是三線串口控制模式,其實(shí)現(xiàn)機(jī)制是是由單片機(jī)的三個IO口按照一定的時序分別控制CLK,RST以與DI。其控制時序如圖10所示。在RST信號拉低5ms之后,CLK信號需要立即拉高300ms并等待數(shù)據(jù)線2ms的時間,數(shù)據(jù)線可隨時鐘線發(fā)送數(shù)據(jù),每次發(fā)送兩個字節(jié)數(shù)據(jù)即音頻文件的文件名,這里音頻文件名是以十六進(jìn)制形式命名的兩字節(jié)格式。當(dāng)文件名的十六位數(shù)據(jù)發(fā)送完畢,語音播報芯片開始響應(yīng)輸出對應(yīng)的語音文件,即時序圖中的BUSY信號為高電位,表示有語音輸出這個狀態(tài)。圖10 三線串口控
36、制時序6.系統(tǒng)配置與調(diào)試6.1上位機(jī)調(diào)試系統(tǒng)上位機(jī)設(shè)計是在Windows7系統(tǒng)下進(jìn)行配置的,上位機(jī)實(shí)現(xiàn)調(diào)試階段主要是針對上位機(jī)麥克風(fēng)的訓(xùn)練。系統(tǒng)上位機(jī)在對Windows系統(tǒng)視窗程序、打開和播放Flash動畫都是在PC上完成的,當(dāng)用戶在一定的距離之對著麥克風(fēng)發(fā)出語音請求,Windows彈出相應(yīng)的功能表示上位機(jī)軟件在PC中的設(shè)計沒有問題。上位機(jī)麥克風(fēng)訓(xùn)練過程首先需要打開Windows7系統(tǒng),進(jìn)入控制面板的輕松訪問界面啟動語音識別并設(shè)置麥克風(fēng)。如圖11 所示為啟動語音識別配置麥克風(fēng)。圖11 啟動語音識別配置麥克風(fēng)當(dāng)上位機(jī)進(jìn)入系統(tǒng)彈出軟件歡迎動畫界面如圖12所示。 圖12 軟件歡迎動畫界面系統(tǒng)上位機(jī)軟
37、件打開后,當(dāng)用戶對著麥克風(fēng)呼出“師學(xué)院”,Windows界面彈出師學(xué)院的。圖13 小葉同學(xué)正對著麥克風(fēng)呼叫“師學(xué)院”圖14 Windows 彈出師學(xué)院窗口6.2 下位機(jī)調(diào)試系統(tǒng)下位機(jī)調(diào)試主要針對串口通訊和語音播報模塊的時序調(diào)試。串口通訊調(diào)試過程中,由上位機(jī)發(fā)送十六進(jìn)制字符如果下位機(jī)接收到相應(yīng)的字符那么波特率設(shè)置正確。在語音播報控制模塊的調(diào)試中需要嚴(yán)格按照WTV020-SD的三線控制時序,其中CLK與DI時序如圖15示波器截圖所示,黃線是CLK,綠線是DI。圖15 示波器檢測到的CLK與DI時序波7. 設(shè)計總結(jié)本設(shè)計過程是學(xué)習(xí)與設(shè)計的同步過程,由于在校期間軟件方面知識很是欠缺,本設(shè)計是從開始接觸
38、MFC到了解在MFC平臺下開發(fā)軟件的一個開始階段。設(shè)計制作過程中也是從一點(diǎn)一滴學(xué)起來的,并逐步完善的。為了讓整體設(shè)計效果達(dá)到實(shí)用性與趣味性,在設(shè)計過程中相繼添加了幾個生活中實(shí)用性的模塊。因?yàn)檎Z音識別技術(shù)是人機(jī)互動的一種方式,在人的意志控制下,以發(fā)出語言的方式讓機(jī)器來實(shí)現(xiàn)人的意愿是很有趣,很友好的。當(dāng)然,在設(shè)計過程遇到了一些問題,解決這些問題的過程的同時也提升了學(xué)習(xí)能力,在歷時幾個月的學(xué)習(xí)與設(shè)計的時間里,對軟件設(shè)計有了初步認(rèn)識。參考文獻(xiàn):1 MicrosoftSpeech5.1SDKHelpZ.2 逸波,郭天杰,王華駒.最新語音識別技術(shù)M :電子工業(yè),1998.3 安居院猛,中嵨正之.計算機(jī)語音
39、處理(日)M :國防工業(yè),1987.4 孟威,黃維通 Visual C+ 程序設(shè)計教程M :機(jī)械工業(yè),2002.5 禹才,左友東,秀清.基于SpeechSDK的語音控制應(yīng)用程序的設(shè)計與實(shí)現(xiàn)J.計算機(jī)應(yīng)用,2004.6 松, 文軒.基于Microsoft SpeechSDK5. 1 實(shí)現(xiàn)中英文朗讀 J.7 宋陽.利用SAPI5完成中文語音音素的分解 J.微計算機(jī)息,2005.8 朱民雄,聞新,黃健群,周露-計算機(jī)語音技術(shù)M.:航空航天大學(xué),2002.9 尚國,金龍.語音識別技術(shù)概述J1電腦,2006.10 艷.基于MFC平臺下的語音識別系統(tǒng)的設(shè)計.計算機(jī)語音技術(shù),2007.附錄一:系統(tǒng)上位機(jī)部分
40、源代碼/基于微軟語音引擎的語音識別/師學(xué)院/物理與電子科學(xué)學(xué)院.實(shí)驗(yàn)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;/* 語音識別初始化*結(jié)束*/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)/語音識別消息響應(yīng)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("師學(xué)院")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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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年高性能功能陶瓷結(jié)構(gòu)陶瓷項(xiàng)目立項(xiàng)申請報告模板
- 2025年勘探開發(fā)技術(shù)咨詢合同文本
- 2025年食品分銷合作協(xié)議樣本
- 2025年進(jìn)口臨床治療儀器合同協(xié)議
- 2025年消腫散結(jié)類用藥項(xiàng)目規(guī)劃申請報告模式
- 2025年二手小康住宅買賣協(xié)議模板
- 2025年船專用碼頭項(xiàng)目提案報告模稿
- 2025年高強(qiáng)度耐磨黃銅合金項(xiàng)目規(guī)劃申請報告模板
- 2025年出租車租賃承包合同
- 2025年臨時工派遣協(xié)議
- 排球正面上手傳球 說課稿-2023-2024學(xué)年高一上學(xué)期體育與健康人教版必修第一冊
- 2025年浙江省交通投資集團(tuán)財務(wù)共享服務(wù)中心招聘2名高頻重點(diǎn)提升(共500題)附帶答案詳解
- 客流統(tǒng)計系統(tǒng)施工方案
- 瓶裝液化氣送氣工培訓(xùn)
- 道德經(jīng)全文完整版本
- 濰坊市人民醫(yī)院招聘真題
- 銷售人員薪資提成及獎勵制度
- 《大學(xué)生安全教育》課件 項(xiàng)目四 軍事安全
- 10KV電力配電工程施工方案
- 2023年宏觀經(jīng)濟(jì)學(xué)考點(diǎn)難點(diǎn)
- 先兆流產(chǎn)課件-課件
評論
0/150
提交評論