tts(50分)

  • 主题发起人 luxindelphi
  • 开始时间
L

luxindelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
问一个很菜的问题,我下载了MS中文TTS,但不知道如何使用,谁能告诉我?
 
安装不就行了
 
安装时没有任何提示,不知道装到那儿去了。也没办法在DELPHI里调用呀?
 
具体的代码很复杂,不过你可以取www.delphi32.com去找找!![:)]
 
首先在Delphi的菜单中选“project-Import Type Library”,在弹出的对话框中选“Add”,
此时会弹出“Open Type Library”对话框,将之定位到你的Windows/Speech目录中,选择
“vtxtauto.tlb”,然后在Import Type Library对话框中单击"Install",
单击OK,Delphi会自动生成一个VtxtAuto_TLB.pas文件。
这个文件包含了TTS引擎的COM类接口,可以用来与DLL文件通信。
我们就利用它编个小程序来读一段英文文本。
新建一个工程,将这个文件包含进来: uses VtxtAuto_TLB;
跟着声明一个对象: var ... TTS: IVTxtAuto;

然后如图在窗体上放置5个TButton (分别命名为ReadBtn, PauseBtn, StopBtn, PrevBtn, NextBtn)、
一个TMemo(命名为Memo1)、一个TStaticText(命名为SpeedText)和一个TTrackbar
(命名为Speed)。现在我们开始写代码。

首先在启动时初始化:

procedure TForm1.FormCreate(Sender: TObject);

begin
TTS := CoVTxtAuto_.Create;
// 建立对象

TTS.Register('Project1', 'Project1');
// 用Register方法注册,两个参数是WideString,我们随便填

Speed.position:=TTS.Get_Speed;
//TTS允许调整朗读的速度。用Get_Speed方法来读取当前朗读的 //速度值,并当做初值赋给Trackbar end;

然后我们用按钮控制朗读的启停:

procedure TForm1.ReadBtnClick(Sender: TObject);
// 朗读按钮

begin
TTS.Speak(memo1.text,vtxtst_READING);
// 这就是核心方法Speak,第一个参数是要朗读的文本,第二个参数
// 是朗读风格常数,这里取值为vtxtst_READING,其他值请参考
//VtxtAuto_TLB.pas文件。不过这个参数好象对朗读的效果改变不大。

end;


procedure TForm1.StopBtnClick(Sender: TObject);
//停止按钮
begin
TTS.StopSpeaking;
//用StopSpeaking方法可以停止朗读
end;

接着,我们用一个按钮让朗读可以随时暂停:

procedure TForm1.PauseBtnClick(Sender: TObject);


begin
If TTS.IsSpeaking then
//如果属性IsSpeaking为真,则表示正在朗读

begin
TTS.AudioPause;
//暂停

PauseBtn.Caption:='继续';


end

else
begin
TTS.AudioResume;
//如果已经处于暂停状态则继续

PauseBtn.Caption:='暂停';

end;



end;

Trackbar用来调整朗读的速度。如果你对自己的外语听力有足够的自信,尽可以将速度上调,体验一下什么叫“妙语连珠”(小心你的耳朵忙不过来);要是你的听力水平同我一样“高”的话,最好还是将速度值调到180左右:

procedure TForm1.SpeedChange(Sender: TObject);


begin
TTS.Set_Speed(Speed.position);
//设置速度

SpeedText.Caption:='速度:'+inttostr(Speed.position);
//显示速度数值

end;

TTS还允许跳读,可以方便地朗读上一句或直接读下一句:

procedure TForm1.PrevBtnClick(Sender: TObject);


begin
TTS.AudioRewind
//跳到上一句

end;


procedure TForm1.NextBtnClick(Sender: TObject);


begin
TTS.AudioFastForward;
//跳到下一句 end;

最后,记得在程序结束时释放接口对象TTS: procedure TForm1.FormDestroy(Sender: TObject);

begin
TTS:=nil;


end;



OK!大功告成。运行,在Memo中随便输入几句英文,点击“朗读”就能听到声音了。
你还可以将程序改进一下,让它读某个文件内容或剪贴板的信息(“词霸2000”就是这样处理的)。现在谁还敢说你的程序不专业?


 
呵呵,我也是刚刚做了一个demo,要的话发给你。
方法和楼上的一样。
 
to chenxz:
请发给我,luxin@mhkj.com
谢谢
 
to Haofei:
你说的是英文的TTS用法,我以前就知道,我想知道的是中文TTS的用法
 
其中有个 web 方式的例子。运行它就可以了。
 
读中文效果如何?

有经验的说
 
jsxjd:
你好,你指的是什么里面有WEB的例子呀?
 
里面有示例,是 htm 文件,用浏览器就可以试!
其中有脚本代码,其实这些都是一样的。
 
jsxjd:
你好,是什么里面有WEB的例子,说清楚亚,如果是安装包,我看过了,没有。
 
是不是分不够,谁解决这个问题我在加50分
 
告诉我你的EMAIL,我们发邮件给你
 
luxin@mhkj.com
 
接受答案了.
 
顶部