?? delphi-voice-develop.txt
字號:
基于Delphi的英文發音教學軟件的實現
[日期:2006-12-02] 來源: 作者: [字體:大
引言
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);//朗讀文本控件中的內容|
|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平臺上開發了功能全面的英文發音教學軟件,不僅可以實現模仿真人
的標準發音功能和對多文檔的連續朗讀,而且還可以對朗讀的語速、語調等自由設定。
閱讀:5 次
錄入:chenyibiao <memberProfile.aspx?id=2>
【 評論 <remark.aspx?ID=1712> 】 【 推薦 <mail.aspx?ID=1712> 】 【 打印
<javascript:doPrint()> 】
上一篇:用Delphi開發視頻聊天軟件 <show.aspx?id=1711&cid=166>
下一篇:Delphi編程播放無聲音的AVI動畫 <show.aspx?id=1713&cid=166>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -