程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 基於Delphi的英文發音教學軟件的實現

基於Delphi的英文發音教學軟件的實現

編輯:Delphi

引言

MSTTS(Microsoft Text-To-Speech)是微軟公司研制的一套功能強大的英文文字朗讀引擎,它可以將文檔中的英文文字信息轉換成計算機語音信息,通過計算機聲卡發音將內容朗讀出來。利用它和相關的語音接口開發出英語發音教學軟件,可以實現英文單詞發音及整段英文的流利朗讀示范。從而,可以使學生在課下或者沒有教師的情況下,從軟件中獲得標准的英文發音的輔助,這對於一些發音不好的英語學習者有極大的幫助。

MSTTS引擎簡介

要在軟件的開發過程中使用MSTTS技術,必須安裝MSTTS引擎。MSTTS引擎的安裝包可以在微軟公司的官方網站下載,也可以在“金山詞霸”軟件的安裝盤中找到。運行安裝包後,MSTTS引擎將被安裝在系統之中,同時,在操作系統控制面板的“添加/刪除”程序中會出現“Microsoft Text-to-speech Engine”卸載項。在安裝好MSTTS引擎之後,就可以利用的Borland Delphi平台使用MSTTS技術開發相應的英語教學軟件,實現英文朗讀等功能。

設計原理

1、軟件設計原理

軟件在Delphi平台中的設計原理是通過調用微軟語音接口(MS Speech API)來實現英文文字朗讀功能的。安裝MS Speech API的方法和MSTTS引擎相同,亦可以在微軟官方網站或者在“金山詞霸”安裝盤中找到。運行spchapi.exe後,Windows目錄中會生成一個Speech子目錄,其中有一個Vtxtauto.tlb文件,它是相應的類型庫,對服務器的接口給出了與語言無關的描述;Vcmd.exe作為進程外的自動化服務器,提供將文本轉換為語音的服務。

軟件的功能分三大模塊:語音顯示模塊、語音控制模塊和編輯模塊。語音顯示模塊中,將動態顯示朗讀對象,即語音自動化服務器的處理對象;語音操作模塊中,提供一系列的語音操作,即對語音服務進行動態的個性化處理;編輯模塊是對文本內容的個性設定,滿足特殊用戶的需求。軟件的原理如圖1所示。

 

  圖1 軟件原理圖

2、VtxtAuto接口說明

Delphi中使用MSTTS引擎的類型庫名為VtxtAuto,通過分析,可以了解VtxtAuto的相關成員函數和屬性。

2.1 Speak函數

procedure Speak(const pszBuffer: WideString; dwFlags: Integer); safecall;

Speak函數用於實現朗讀功能,它有兩個參數,第一個參數向MSTTS引擎傳遞需要朗讀的文字,第二個參數由指定朗讀時使用的語氣和優先級的兩個符號合並而成。

2.2 Register函數

procedure Register(const pszSite: WideString; const pszApp: WideString);safecall;

Register函數用於實現接口的注冊。在軟件的初始化時,Register操作是必須的,因為在操作系統中可能有多個類似的程序在使用MSTTS引擎,通過Register操作可以對每一個使用MSTTS引擎的軟件進行設置和區分。

2.3 IsSpeaking屬性

property IsSpeaking: WordBool read Get_IsSpeaking;

IsSpeaking屬性是一個布爾函數,通過這個屬性可以取得當前程序的狀態,

2.4朗讀操作成員函數

VtxtAuto對象有一系列的成員函數,通過這些成員函數,可以實現對朗讀功能的各種操作、控制,具體函數如表1所示。

表1 VtxtAuto對象的成員函數

函數命令形式
函數說明
VtxtAuto.AudioResume
用於朗讀狀態的恢復操作
VtxtAuto.StopSpeaking
用於實現停止朗讀
VtxtAuto.AudioPause
用於實現暫停朗讀
VtxtAuto.AudioFastForward
用於實現向前跳過一句朗讀
VtxtAuto.AudioRewind
用於實現向後跳過一句朗讀

此外,還有一個屬性Speed,通過讀寫Speed屬性可以取得或設置朗讀的語速,其單位是“字數/分鐘”,缺省值為170。

軟件功能的實現

1、VtxtAuto類型庫的導入

首先,在Borland Delphi平台上,新建一個Application,然後從Project菜單的“Import Type Library...”中選擇“Add...”,浏覽到Windows目錄下的Speech子目錄裡,打開vtxtauto.tlb,可以看到下面Class names中會出現我們需要的接口的包裝類“TVTxtAuto”文件。選中對話框底部的Generate Component Wrapper,點擊Create Unit就可以打開一個名為VTxtAuto_TLB的Unit。

2、程序界面的設計

在窗體Form1上添加如下控件:1個Memo文本控件,1個TrackBar滾動條控件和8個按鈕控件。將這些控件合理安排,軟件主界面如圖2所示。然後,對各個控件的屬性進行設置。

圖2 軟件主界面

文本控件用於顯示和編輯朗讀內容;滾動條控件用於動態設定語速,其MAX屬性設置為300;第一個按鈕的Caption屬性設為“朗讀”,它的功能是當用戶點擊按鈕時進行朗讀;第二個按鈕控件的Caption屬性設為“停止”,它的功能是當軟件處於朗讀狀態時停止朗讀;第三個按鈕控件的Caption屬性設為“暫停”,它的功能是當軟件處於朗讀狀態時暫停朗讀;第四個按鈕控件的Caption屬性設為“恢復”,它的功能是當軟件處於暫停狀態時恢復朗讀;第五個按鈕控件的Caption屬性設為“向前”,它的功能是當軟件處於朗讀狀態時快速跳轉到下一句;第六個按鈕控件的Caption屬性設為“向後”,它的功能是當軟件處於朗讀狀態時快速回退到上一句;第七個按鈕控件的Caption屬性設為“導入”,它的功能是向文本控件導入新的朗讀內容;第八個按鈕控件的Caption屬性設為“導出”,它的功能是把編輯好的朗讀內容進行保存操作。

3、代碼的實現

3.1 VtxtAuto的注冊

首先聲明全局變量:

var TTS:IVTxtAuto;

然後,在FormCreate中用VtxtAuto類型庫的Register函數注冊軟件。同時,初始化滾動條控件,用於設定系統語速狀態。

procedure TForm1.FormCreate(Sender: TObject);
begin
 TTS:=CoVtxtAuto_.Create;//產生自動化對象
 TTS.Register('WingRocWords','WingRocWords');//向服務器注冊
 suiTrackBar.Position:=TTS.Get_Speed;//獲得語音速度
 speedtext.Caption:='當前速度:'+IntToStr(TTS.Speed)+' 字/分鐘'; //顯示語音速度
end;
  

3.2 朗讀按鈕代碼的實現

procedure TForm1.ReadClick(Sender: TObject);
begin
 TTS.Speak(TxtMemo.Lines.Text,vtxtst_READING);//朗讀文本控件中的內容
end;

3.3 停止按鈕代碼的實現

procedure TForm1.StopClick(Sender: TObject);
begin
 TTS.StopSpeaking;//停止朗讀
end;

3.4 暫停按鈕代碼的實現

procedure TForm1.PauseClick(Sender: TObject);
begin
 if TTS.IsSpeaking//判斷系統是否處於朗讀狀態
 then
  TTS.AudioPause;//如果為真,暫停朗讀
 else
  ShowMessaget('未在朗讀狀態!');//如果為假,顯示錯誤信息
end;

3.5 恢復按鈕代碼的實現

procedure TForm1. ResumeClick(Sender: TObject);
begin
 TTS.AudioResume;//恢復朗讀狀態
end;

3.6 向前按鈕代碼的實現

procedure TForm1. FastForwardClick(Sender: TObject);
begin
 TTS.AudioFastForward;//向前跳轉一句
end;

3.7 向後按鈕代碼的實現

procedure TForm1. RewindClick(Sender: TObject);
begin
 TTS.AudioRewind;//向後跳轉一句
end;

3.8 導入按鈕代碼的實現

procedure TForm1.InputClick(Sender: TObject);
begin
 if OpenDialog.Execute //激活OpenDialog控件
 then
  TxtMemo.Lines.LoadFromFile(OpenDialog.FileName); //向文本控件中導入朗讀內容
end;

3.9 導出按鈕代碼的實現

procedure TForm1.OutputClick(Sender: TObject);
begin
 if SaveDialog.Execute //激活SaveDialog控件
 then
  TxtMemo.Lines.SaveToFile(SaveDialog.FileName); //保存編輯好的朗讀內容
end;

4、軟件生成和測試

當程序代碼編寫好後,在Delphi平台上運行程序,Delphi會自動生成可執行文件。運行可執行程序,導入英文文檔,點擊朗讀等按鈕進行測試。軟件中的各項功能運行良好,並且兼容Windows所有版本。

結束語

在英語教學中,“發音”是十分重要的一個環節,讓計算機實現輔助教師對學生的發音教學工作顯得尤為重要。在本文中,對利用MSTTS技術開發軟件進行了深入的研究和實踐,突破了以往的軟件只能針對單詞發音以及無法控制發音狀態的缺陷,在Delphi平台上開發了功能全面的英文發音教學軟件,不僅可以實現模仿真人的標准發音功能和對多文檔的連續朗讀,而且還可以對朗讀的語速、語調等自由設定。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved