在VB中使用文字朗讀引擎(TTS)技術

發表于:2007-07-14來源:作者:點擊數: 標簽:
作者:許錦新 現今市面上流行的一些英語學習軟件,在廣告詞上經常說自己使用了國際頂尖的全程語音TTS技術,能進行整段英文的流利朗讀,并能自由調節朗讀的速度與頻率等。那么,這個神奇的TTS究竟是什么東西呢? 其實,TTS是微軟出品的一套文字朗讀引擎(Text
作者:許錦新

  現今市面上流行的一些英語學習軟件,在廣告詞上經常說自己使用了國際頂尖的全程語音TTS技術,能進行整段英文的流利朗讀,并能自由調節朗讀的速度與頻率等。那么,這個神奇的TTS究竟是什么東西呢?

  其實,TTS是微軟出品的一套文字朗讀引擎(Text-To-Speech Engine),這些英語軟件就是調用它來進行英文朗讀的。我們在英語學習軟件的編程開發中也可使用TTS技術,下面筆者將利用Visual Basic 5.0來揭開TTS神秘的面紗。

  一、安裝TTS引擎
  TTS引擎所需的Microsoft Text-to-Speech Engine與Microsoft Speech API軟件都可到微軟的站點去下載,也可以在“金山詞霸2000”或“金山詞霸.net”的安裝光盤上找到(文件名為MSTTS.EXE與SPCHAPI.EXE)。安裝了TTS引擎后,在Windows所在目錄下會生成一個SPEECH目錄,其中有一個Vtxtauto.tlb文件,在編程時我們需要調用它。

  二、在VB中引入Vtxtauto.tlb文件
  進入VB 5.0,執行選單命令“文件/新建工程/標準EXE”并確定,然后執行選單“工程”中的“引用”,單擊“瀏覽”按鈕到Windows目錄下的SPEECH子目錄,打開Vtxtauto.tlb文件,將“VoiceText 1.0 Type Library”添加到引用列表中,選中它并單擊確定。將庫Vtxtauto引入VB后,我們可以通過選單“視圖”中的“對象瀏覽器”來了解它所封裝的類,以及各類成員函數的屬性的意義、使用格式等信息。一些主要的方法與屬性意義,筆者在下面的源程序中將給出注釋,在這里就不詳細列出。

  三、設置控件及屬性
  在FORM1上添加三個Label控件、一個TextBox控件、一個HScrollBar控件和六個CommandButton控件。窗體及各控件的主要屬性設置如下:

  FORM1:Caption=“英文朗讀”

  LABEL1:Caption=“請輸入英文文檔”

  LABEL2:Caption=“朗讀速度”

  LABEL3:Caption=“ ”

 ?。↙ABEL3標簽用來顯示朗讀速度值)

  TEXT1:Text=“Please input english text”;ToolTiptext=“請輸入或粘貼英文文檔”; MultiLine=True;ScrollBars=3-Both

  HSCROLL1:名稱=SpeedChange;Min=90;Max=300(Min與Max屬性值分別用來限定可調節的語速的最小與最大值)

  COMMAND1:名稱=read;Caption=“朗讀”

  COMMAND2:名稱=pause;Caption=“暫?!?

  COMMAND3:名稱=stop;Caption=“停止”

  COMMAND4:名稱=prev;Caption=“上一句”

  COMMAND5:名稱=next;Caption=“下一句”

  COMMAND6:名稱=quit;Caption=“退出”

  四、編寫代碼
  下面我們就可以一步步地編寫代碼,具體代碼如下:

  '在窗體裝載時調用Register方法注冊,括號內的兩個參數是字符串

  Private Sub Form_Load()

  Call VTxtAuto.VTxtAuto.Register(Space(8), Space(8))

  '因為語速的默認值為170,故水平滾動條的初值也設為170

  SpeedChange.Value = 170

  End Sub

  '設置朗讀速度調節代碼,當水平滾動條的值Value發生變化時將其賦給控制語速的Speed屬性

  Private Sub SpeedChange_Change()

  VTxtAuto.VTxtAuto.Speed=SpeedChange.Value

  Label3.Caption = SpeedChange.Value

  End Sub

  '設置“朗讀”按鈕代碼

  Private Sub read_Click()

  '如果朗讀出錯,則轉到出錯處理標記模塊ErrorHandler

  On Error GoTo ErrorHandler

  '調用方法Speak進行朗讀,第一個參數是要朗讀的文本,第二個參數是設置朗讀風格

  Call VTxtAuto.VTxtAuto.speak(Trim(Text1.Text), vtxtsp_VERYHIGH + vtxtst_READING)

  Exit Sub

  ErrorHandler:

  MsgBox "只能朗讀英文文檔,不能朗讀漢字字符!", , "出錯信息"

  End Sub

  '設置“暫?!卑粹o代碼

  Private Sub pause_Click()

  If VTxtAuto.VTxtAuto.IsSpeaking Then

  '如果屬性IsSpeaking為真,則表示正在朗讀,調用AudioPause方法暫停朗讀

  Call VTxtAuto.VTxtAuto.AudioPause

  pause.Caption = "恢復"

  Else

  '如果已經處于暫停狀態則調用AudioResume方法恢復朗讀

  Call VTxtAuto.VTxtAuto.AudioResume

  pause.Caption = "暫停"

  End If

  End Sub

  '設置“停止”按鈕代碼,調用StopSpeaking方法停止當前朗讀

  Private Sub stop_Click()

  Call VTxtAuto.VTxtAuto.StopSpeaking

  End Sub

  '設置“上一句”按鈕代碼,調用AudioRewind方法往后跳過一句

  Private Sub prev_Click()

   Call VTxtAuto.VTxtAuto.AudioRewind

  End Sub

  '設置“下一句”按鈕代碼,調用AudioFastForward方法向前跳過一句

  Private Sub next_Click()

   Call VTxtAuto.VTxtAuto.AudioFastForward

  End Sub

  '設置“退出”按鈕代碼

  Private Sub quit_Click()

   Unload Me

  End Sub

  本程序在中文Windows 95/98、VB 5.0環境下運行通過。運行時在文本編輯框中輸入或粘貼英文文檔,然后單擊“朗讀”按鈕就可播放讀音。
  五、程序改進思路
  本文對在VB編程中使用TTS技術只是起個拋磚引玉的作用,熟悉VB編程的電腦愛好者來可以對本程序作一些改進,例如增加對聲卡和TTS引擎是否安裝的檢測、增加從文本文件或數據庫中讀取文檔的功能、增加讓用戶選擇朗讀的優先級和發聲音量調節等功能。這些功能實現起來較為復雜,感興趣的讀者可進行深入研究。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97