开发自己的英文语音朗读软件

Author: Date: 2001年 21期

?牐牶芏嗳硕际褂霉谋纠识凉δ艿娜砑F涫担约憾种谱饕桓鲇⑽挠镆衾识寥砑且患苋菀椎氖虑椋旅婢透鲆桓霰喑痰氖道?
  #1?牐犚弧⑶把裕?
  ?牐牨收咄ü芯肯钟械囊恍┯镆衾识寥砑⑾郑泻芏嗟牟范际褂昧薓icrosoft的Speech API,再通过进一步的实践发现。Microsoft Speech API的功能十分强大,不光可以准确读出单词,而且还能够实现流利地朗读句子乃至段落、文章。对于不常见的单词(如中文人名的拼音),也能够根据英文的发音原则,读出较准确的发音。而且让人兴奋的是:Microsoft Speech API可以以COM组件的形式提供给程序员,方便程序员的开发与使用。
  #1?牐牰⒖⒂⑽挠镆衾识脸绦虻娜怼⒂布肪常?
  ?牐牨疚乃捎玫牟僮飨低呈荳indows 98。它对Microsoft Speech API支持得非常好。而所采用的编程环境是 Borland的Delphi 5.0。Dephi不光支持VCL组件,对COM组件的支持也是非常好的,而且在Windows下面Delphi确实是一种强大而且易于使用的开发工具。接下来最重要的是安装Microsoft Speech API,Microsoft Speech API在共享软件光盘上都会带有,也可以在金山词霸的光盘上找到,文件名是spchapi.exe,是个自解压文件,直接运行即可。
  ?牐犛布肪趁挥惺裁刺厥獾囊螅灰芄凰忱诵蠾indows 9X操作系统就可以了。
  #1?牐犎⒔杏⑽挠镆衾识脸绦蚩⒌幕静街瑁?
  ?牐?1.在Delphi中新建一应用程序,将Form1改名为frmSpeech,将Unit1保存为SpeechUnit,将工程保存为Speech。
  ?牐?2.选中Project菜单项中的Import Type Library,弹出如图所示的对话框:
  ?牐犜俚慊鰽dd按钮,此时会弹出一个文件选择框,将此框定位到Windows目录下的Speech目录,选中vtxtauto.tlb文件,选择打开。再点击Install按钮即可。
  ?牐?3.经过上面的步骤,已经将此组件引入到我们的程序中来,并生成了VTxtAuto_TLB单元(unit),我们只需要在自己的应用程序中使用此单元就可以了。现在我们在SpeechUnit的uses声明的末尾加上VTxtAuto_TLB。并在Var下面声明一个名为vtxt的全局变量,类型为VTxtAuto_。
  ?牐?4.现在我们需要在frmSpeech上放上一个Edit控件和两个Button控件。将两个按钮控件的name属性分别改为:btnSpeak和btnStop,再将两个按钮的Caption属性分别改为:Speak和Stop。(^21020504a^)?牐?
  ?牐?5.在frmSpeech的OnCreate事件中加入以下代码:
  ?牐爒txt:= CoVTxtAuto_.Create;??
  ?牐爒txt.Register?煟ВВǎ?Speech');?牔?
  ?牐?6.双击Speak按钮,加入以下代码:
  ?牐爒txt.Speed:= 100;??
  ?牐爒txt.Speak(trim(Edit1.Text),10);?牔?
  ?牐?7.双击Stop按钮,加入以下代码:
  ?牐爒txt.StopSpeaking??
  ?牐犠源耍桓鲎罴虻サ挠⑽睦识寥砑鸵阎谱魍瓿闪恕J褂檬痹贓dit对话框中输入欲朗读的单词、句子或段落,按Speak按钮就可以开始进行朗读,按Stop按钮就可以停止朗读。
  #1?牐犓摹⒔徊降纳钊胩教郑?
  ?牐犉涫礛icrosoft Speech API的功能非常的强大,它还提供了许多方法和属性可以用来改进并强化我们的语音朗读程序。其提供的主要方法与属性如下:
  ?牐?1.procedure Speak?煟╟onst pszBuffer:WideString;dwFlags:Integer);?牔?
  ?牐犂识羛szBuffer指向的字符串,并可以通过调整dwFlag参数来得到不同的语气、语调。
  ?牐?2.procedure StopSpeaking;??
  ?牐犕V沟鼻暗睦识痢?
  ?牐?3.procedure AudioPause;??
  ?牐犜萃5鼻暗睦识痢?
  ?牐?4.procedure AudioResume;??
  ?牐牬拥鼻霸萃5牡胤交指蠢识痢?
  ?牐?5.procedure AudioRewind;??
  ?牐犞匦驴祭识痢?
  ?牐?6.procedure AudioFastForward;??
  ?牐牽焖倮识痢?
  ?牐?7.property Speed:??
  ?牐犐柚美识了俣取?
  ?牐?8.property IsSpeaking:WordBool;??
  ?牐犈卸系鼻袄识潦欠裨诮小?
  ?牐?9.procedure Set_Speed(pdwSpeed;Integer)??
  ?牐犐柚美识了俣取?
  ?牐?10.function Get_Speed:Integer;??
  ?牐牷竦玫鼻暗睦识了俣取?
  ?牐牶侠淼厥褂谜庑┓椒ㄓ胧粜裕嘈糯蠹乙欢?能够开发出好的语音朗读软件。