微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题开发自己的英文语音朗读软件
栏目软件世界
发布2001年21期
  很多人都使用过带文本朗读功能的软件。其实,自己动手制作一个英文语音朗读软件是一件很容易的事情,下面就给出一个编程的实例。
   一、前言:
  笔者通过研究现有的一些语音朗读软件发现,有很多的产品都使用了Microsoft的Speech API,再通过进一步的实践发现。Microsoft Speech API的功能十分强大,不光可以准确读出单词,而且还能够实现流利地朗读句子乃至段落、文章。对于不常见的单词(如中文人名的拼音),也能够根据英文的发音原则,读出较准确的发音。而且让人兴奋的是:Microsoft Speech API可以以COM组件的形式提供给程序员,方便程序员的开发与使用。
   二、开发英文语音朗读程序的软、硬件环境:
  本文所采用的操作系统是Windows 98。它对Microsoft Speech API支持得非常好。而所采用的编程环境是 Borland的Delphi 5.0。Dephi不光支持VCL组件,对COM组件的支持也是非常好的,而且在Windows下面Delphi确实是一种强大而且易于使用的开发工具。接下来最重要的是安装Microsoft Speech API,Microsoft Speech API在共享软件光盘上都会带有,也可以在金山词霸的光盘上找到,文件名是spchapi.exe,是个自解压文件,直接运行即可。
  硬件环境没有什么特殊的要求,只要能够顺利运行Windows 9X操作系统就可以了。
   三、进行英文语音朗读程序开发的基本步骤:
  1.在Delphi中新建一应用程序,将Form1改名为frmSpeech,将Unit1保存为SpeechUnit,将工程保存为Speech。
  2.选中Project菜单项中的Import Type Library,弹出如图所示的对话框:
  再点击Add按钮,此时会弹出一个文件选择框,将此框定位到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。(

)  
  5.在frmSpeech的OnCreate事件中加入以下代码:
  vtxt:= CoVTxtAuto_.Create;
  vtxt.Register''('Speech');
  6.双击Speak按钮,加入以下代码:
  vtxt.Speed:= 100;
  vtxt.Speak(trim(Edit1.Text),10);
  7.双击Stop按钮,加入以下代码:
  vtxt.StopSpeaking
  自此,一个最简单的英文朗读软件就已制作完成了。使用时在Edit对话框中输入欲朗读的单词、句子或段落,按Speak按钮就可以开始进行朗读,按Stop按钮就可以停止朗读。
   四、进一步的深入探讨:
  其实Microsoft Speech API的功能非常的强大,它还提供了许多方法和属性可以用来改进并强化我们的语音朗读程序。其提供的主要方法与属性如下:
  1.procedure Speak(const pszBuffer:WideString;dwFlags:Integer);
  朗读pszBuffer指向的字符串,并可以通过调整dwFlag参数来得到不同的语气、语调。
  2.procedure StopSpeaking;
  停止当前的朗读。
  3.procedure AudioPause;
  暂停当前的朗读。
  4.procedure AudioResume;
  从当前暂停的地方恢复朗读。
  5.procedure AudioRewind;
  重新开始朗读。
  6.procedure AudioFastForward;
  快速朗读。
  7.property Speed:
  设置朗读速度。
  8.property IsSpeaking:WordBool;
  判断当前朗读是否在进行。
  9.procedure Set_Speed(pdwSpeed;Integer)
  设置朗读速度。
  10.function Get_Speed:Integer;
  获得当前的朗读速度。
  合理地使用这些方法与属性,相信大家一定能够开发出好的语音朗读软件。