王祥青
摘要:為解決農(nóng)村中學(xué)英語的閱讀教學(xué)受教師發(fā)音不準(zhǔn)而效果一直不佳的難題,筆者在VB編程中使用了TTS技術(shù),實(shí)現(xiàn)了英語的流利朗讀,極大提高了英語閱讀教學(xué)的效率。
關(guān)鍵詞:VB;TTS;英語閱讀教學(xué)
中圖分類號:TP319文獻(xiàn)標(biāo)識碼:B 文章編號:1673-8454(2009)14-0061-02
長期以來,農(nóng)村中學(xué)英語的閱讀教學(xué),由于受教師發(fā)音不夠標(biāo)準(zhǔn)的限制一直效果不佳。為破解這一難題,本人在VB編程中使用TTS技術(shù),輕而易舉實(shí)現(xiàn)了英語的流利朗讀,并能自由調(diào)節(jié)朗讀的速度與效率,極大的提高了英語閱讀教學(xué)的效率。
那么TTS是什么呢?其實(shí),TTS是微軟出品的一套文字朗讀引擎(Text-To-SpeechEngine),在VB編程中調(diào)用TTS實(shí)現(xiàn)英語的朗讀。
下面以VB6.0為例詳解具體的實(shí)現(xiàn)過程。
一、TTS引擎安裝
TTS引擎所需的Microsoft Text-To-SpeechEngine與Microsoft Speech API軟件既可以到微軟的站點(diǎn)下載,也可以在“金山詞霸.net”的安裝光盤上找到(文件名為MSTTS.EXE與SPCHAPI.EXE)。安裝了TTS引擎后,在WINDOWS所在文件夾下會(huì)生成一個(gè)SPEECH子文件夾,其中有一個(gè)Vtxtauto.tlb文件,在編程時(shí)要調(diào)用它。
二、在VB中引入Vtxtauto.tlb文件
進(jìn)入VB6.0,執(zhí)行菜單命令“文件/新建工程/標(biāo)準(zhǔn)EXE”并確定,然后執(zhí)行菜單“工程”中的“引用”,單擊“瀏覽”按鈕到WINDOWS文件夾下的SPEECH子文件夾,打開Vtxtauto.tlb文件,則“VoiceText1.0 Type Library”被添加到引用列表中,選中它并單擊確定。將庫Vtxtauto引入VB后,可以通過菜單“視圖”中的“對象瀏覽器”來了解它所封裝的類,以及了解各類的成員函數(shù)與屬性的意義與使用格式等信息。一些主要的方法與屬性將在下面的源程序中給予注釋,故在此不詳細(xì)列出。
三、在窗體FORM1上放置所需控件并設(shè)置主要屬性
在FORM1上添加三種Label控件,一個(gè)TextBox控件,一個(gè)HscrollBar控件,六個(gè)CommandButton控件。窗體及各控件的主要屬性如下:
FORM1:Caption=“英文朗讀”
LABEL1:Caption=“請輸入英文文檔”
LABEL2:Caption=“朗讀速度”
LABEL3:Caption=“”
(LABEL3標(biāo)簽用來顯示朗讀速度值)
TEXT1:Text=“PleaseinputEnglishtext”,ToolTipText=“請輸入或粘貼英文文檔”,MultiLine=True,ScrollBars=3 – Both.
HSCROLL1:名稱=SpeedChange ,Min=90 ,Max=300
(Min與Max屬性值分別用來限定可調(diào)節(jié)的語速的最小值與最大值)
COMMAND1:名稱=read,Caption=“朗讀”
COMMAND2:名稱=pause,Caption=“暫?!?/p>
COMMAND3:名稱=stop,Caption=“停止”
COMMAND4:名稱=prev,Caption=“上一句”
COMMAND5:名稱=next,Caption=“下一句”
COMMAND6:名稱=quit,Caption=“退出”
四、代碼編寫
在窗體裝載時(shí)調(diào)用Register方法注冊,括號內(nèi)的兩個(gè)參數(shù)是字符串,可以隨便填。
Private Sub Form_Load( )
Call VTxtAuto. VTxtAuto. Register(Space(8),Space(8),)
因?yàn)檎Z速的默認(rèn)值為170,故水平滾動(dòng)條的初值也設(shè)為170
SpeedChange. Value=170
End Sub
設(shè)置朗讀速度調(diào)節(jié)代碼,當(dāng)水平滾動(dòng)條的值Value發(fā)生變化時(shí)將其賦給控制語速的Speed屬性Private Sub SpeedChange_Change( )
VTxtAuto. VTxtAuto. Speed= SpeedChange. Value Label3.Caption= SpeedChange. Value
End Sub
設(shè)置“朗讀”按鈕代碼
Private Sub read_Click( )
如果朗讀出錯(cuò),則轉(zhuǎn)到出錯(cuò)處理標(biāo)記模塊ErrorHandler
On Error GoTo ErrorHandler
調(diào)用方法Speak進(jìn)行朗讀,第一個(gè)參數(shù)是要朗讀的文本,第二個(gè)參數(shù)是設(shè)置朗讀風(fēng)格
CallVTxtAuto. VTxtAuto.speak(Trim(Text1.Text),
vtxtsp_VERYHIGH+vtxtst_READING)
Exit Sub
ErrorHandler:
MsgBox”只能朗讀英文文檔,不能朗讀漢字符號!”,,”出錯(cuò)信息”
End Sub
設(shè)置“暫?!卑粹o代碼
Private Sub pause_Click( )
If VTxtAuto. VTxtAuto.IsSpeaking Then
如果屬性IsSpeaking為真,則表示正在朗讀,調(diào)用AudioPause方法暫停朗讀
Call VTxtAuto. VTxtAuto. AudioPause
Pause. Caption=“恢復(fù)”
Else
如果已經(jīng)處于暫停狀態(tài)則調(diào)用AudioResume方法恢復(fù)朗讀
Call VTxtAuto. VTxtAuto. AudioResume
Pause. Caption=“暫?!?/p>
End If
End Sub
設(shè)置“停止”按鈕代碼,調(diào)用Stop Speaking方法停止當(dāng)前朗讀
Private Sub stop_Click( )
Call VTxtAuto. VTxtAuto. Stop Speaking
End Sub
設(shè)置“上一句”按鈕代碼,調(diào)用AudioRewind方法往后跳過一句
Private Sub prev_Click( )
Call VTxtAuto. VTxtAuto. AudioRewind
End Sub
設(shè)置“下一句”按鈕代碼,調(diào)用AudioFastForward方法向前跳過一句
Private Sub next_Click( )
Call VTxtAuto. VTxtAuto. AudioFastForward
End Sub
設(shè)置“退出”按鈕代碼
Private Sub quit_Click( )
Unload Me
End Sub
說明:本程序在中文WINDOWS操作平臺,VB6.0環(huán)境下運(yùn)行通過。運(yùn)行時(shí)在文本編輯框中輸入或粘貼英文文檔,然后單擊“朗讀”按鈕就可播放讀音。這樣,不管在課上還是在課下,不管有無教師,學(xué)生只要打開電腦運(yùn)行程序即可進(jìn)行朗讀練習(xí),從而避免了因教師發(fā)音障礙帶來的不便,極大地提高了英語閱讀教學(xué)的效率!
五、程序改進(jìn)思想
對于精于VB編程的電腦愛好者來說可對本程序作一些改進(jìn),例如增加從文本文件或數(shù)據(jù)庫中讀取文檔的功能,增加讓用戶選擇朗讀的優(yōu)先級、發(fā)聲語氣類型、發(fā)聲音量調(diào)節(jié)功能。當(dāng)然,這些功能實(shí)現(xiàn)起來稍為復(fù)雜一些,有興趣的愛好者可以自行探索一下。
(編輯:劉軒)