基于Delphi的英文發(fā)音教學軟件的實現(xiàn)

字號:

引言
    MSTTS(Microsoft Text-To-Speech)是微軟公司研制的一套功能強大的英文文字朗讀引擎,它可以將文檔中的英文文字信息轉換成計算機語音信息,通過計算機聲卡發(fā)音將內容朗讀出來。利用它和相關的語音接口開發(fā)出英語發(fā)音教學軟件,可以實現(xiàn)英文單詞發(fā)音及整段英文的流利朗讀示范。從而,可以使學生在課下或者沒有教師的情況下,從軟件中獲得標準的英文發(fā)音的輔助,這對于一些發(fā)音不好的英語學習者有極大的幫助。
    MSTTS引擎簡介
    要在軟件的開發(fā)過程中使用MSTTS技術,必須安裝MSTTS引擎。MSTTS引擎的安裝包可以在微軟公司的官方網(wǎng)站下載,也可以在“金山詞霸”軟件的安裝盤中找到。運行安裝包后,MSTTS引擎將被安裝在系統(tǒng)之中,同時,在操作系統(tǒng)控制面板的“添加/刪除”程序中會出現(xiàn)“Microsoft Text-to-speech Engine”卸載項。在安裝好MSTTS引擎之后,就可以利用的Borland Delphi平臺使用MSTTS技術開發(fā)相應的英語教學軟件,實現(xiàn)英文朗讀等功能。
    設計原理
    1、軟件設計原理
    軟件在Delphi平臺中的設計原理是通過調用微軟語音接口(MS Speech API)來實現(xiàn)英文文字朗讀功能的。安裝MS Speech API的方法和MSTTS引擎相同,亦可以在微軟官方網(wǎng)站或者在“金山詞霸”安裝盤中找到。運行spchapi.exe后,Windows目錄中會生成一個Speech子目錄,其中有一個Vtxtauto.tlb文件,它是相應的類型庫,對服務器的接口給出了與語言無關的描述;VCmd.exe作為進程外的自動化服務器,提供將文本轉換為語音的服務。
    軟件的功能分三大模塊:語音顯示模塊、語音控制模塊和編輯模塊。語音顯示模塊中,將動態(tài)顯示朗讀對象,即語音自動化服務器的處理對象;語音操作模塊中,提供一系列的語音操作,即對語音服務進行動態(tài)的個性化處理;編輯模塊是對文本內容的個性設定,滿足特殊用戶的需求。軟件的原理如圖1所示。
    2、VtxtAuto接口說明
    Delphi中使用MSTTS引擎的類型庫名為VtxtAuto,通過分析,可以了解VtxtAuto的相關成員函數(shù)和屬性。
    2.1 Speak函數(shù)
    procedure Speak(const pszBuffer: WideString; dwFlags: Integer); safecall;
    Speak函數(shù)用于實現(xiàn)朗讀功能,它有兩個參數(shù),第一個參數(shù)向MSTTS引擎?zhèn)鬟f需要朗讀的文字,第二個參數(shù)由指定朗讀時使用的語氣和優(yōu)先級的兩個符號合并而成。
    2.2 ReGISter函數(shù)
    procedure Register(const pszSite: WideString; const pszApp: WideString);safecall;
    Register函數(shù)用于實現(xiàn)接口的注冊。在軟件的初始化時,Register操作是必須的,因為在操作系統(tǒng)中可能有多個類似的程序在使用MSTTS引擎,通過Register操作可以對每一個使用MSTTS引擎的軟件進行設置和區(qū)分。
    2.3 IsSpeaking屬性
    property IsSpeaking: WordBool read Get_IsSpeaking;
    IsSpeaking屬性是一個布爾函數(shù),通過這個屬性可以取得當前程序的狀態(tài),
    2.4朗讀操作成員函數(shù)
    VtxtAuto對象有一系列的成員函數(shù),通過這些成員函數(shù),可以實現(xiàn)對朗讀功能的各種操作、控制,具體函數(shù)如表1所示。
    表1 VtxtAuto對象的成員函數(shù)
    函數(shù)命令形式
    函數(shù)說明
    VtxtAuto.AudioResume
    用于朗讀狀態(tài)的恢復操作
    VtxtAuto.StopSpeaking
    用于實現(xiàn)停止朗讀
    VtxtAuto.AudioPause
    用于實現(xiàn)暫停朗讀
    VtxtAuto.AudioFastForward
    用于實現(xiàn)向前跳過一句朗讀
    VtxtAuto.AudioRewind
    用于實現(xiàn)向后跳過一句朗讀
    此外,還有一個屬性Speed,通過讀寫Speed屬性可以取得或設置朗讀的語速,其單位是“字數(shù)/分鐘”,缺省值為170。
    軟件功能的實現(xiàn)
    1、VtxtAuto類型庫的導入
    首先,在Borland Delphi平臺上,新建一個Application,然后從Project菜單的“Import Type Library...”中選擇“Add...”,瀏覽到Windows目錄下的Speech子目錄里,打開vtxtauto.tlb,可以看到下面Class names中會出現(xiàn)我們需要的接口的包裝類“TVTxtAuto”文件。選中對話框底部的Generate Component Wrapper,點擊Create Unit就可以打開一個名為VTxtAuto_TLB的Unit。
    2、程序界面的設計
    在窗體Form1上添加如下控件:1個Memo文本控件,1個TrackBar滾動條控件和8個按鈕控件。將這些控件合理安排,軟件主界面如圖2所示。然后,對各個控件的屬性進行設置。
    文本控件用于顯示和編輯朗讀內容;滾動條控件用于動態(tài)設定語速,其MAX屬性設置為300;第一個按鈕的Caption屬性設為“朗讀”,它的功能是當用戶點擊按鈕時進行朗讀;第二個按鈕控件的Caption屬性設為“停止”,它的功能是當軟件處于朗讀狀態(tài)時停止朗讀;第三個按鈕控件的Caption屬性設為“暫?!?,它的功能是當軟件處于朗讀狀態(tài)時暫停朗讀;第四個按鈕控件的Caption屬性設為“恢復”,它的功能是當軟件處于暫停狀態(tài)時恢復朗讀;第五個按鈕控件的Caption屬性設為“向前”,它的功能是當軟件處于朗讀狀態(tài)時快速跳轉到下一句;第六個按鈕控件的Caption屬性設為“向后”,它的功能是當軟件處于朗讀狀態(tài)時快速回退到上一句;第七個按鈕控件的Caption屬性設為“導入”,它的功能是向文本控件導入新的朗讀內容;第八個按鈕控件的Caption屬性設為“導出”,它的功能是把編輯好的朗讀內容進行保存操作。