请问怎样调用微软TTS语音库,读文本框中的文本发音?新手求教!up有分

cyf_delphi 2004-11-05 10:27:49
我是新手,所以请高手把步骤写的详细一些,在此谢谢了。
...全文
1384 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
netseek 2005-07-24
  • 打赏
  • 举报
回复
中文语音包,简单例子这里有
http://www.smartysoft.cn/
14174 2005-05-18
  • 打赏
  • 举报
回复
我下中文语音包也不能读中文
ksaiy 2004-11-05
  • 打赏
  • 举报
回复
金山词霸发声使用的是微软TTS引擎。
当金山词霸安好后会在windows下产生speech目录, 里面存放的就是TTS文件.
从delphi中选择工程菜单中的导入类型库菜单,选择windows\
speech目录下的vtxtauto.tlb文件,单击确定后delphi会自动生成vtxauto_TLB.pas文件,它包含了TTS的com接口。
应用如下:
uses vtxauto_TLB;

var TTS: ivtxtauto;

用前:
TTS:=covtxtauto_.Create ;
TTS.Register('project1','project1');
用后:
TTS:=nil;

TTs.speak('要读的字符串',vtxtst_reading);
TTs.stopspeaking; // 停止
TTs.set_speed(1); // 速度

我试过同金山词霸的发音一样的。

unit word1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
VTxtAuto_TLB, StdCtrls, ComCtrls, Mask, FileCtrl;

type
TForm1 = class(TForm)
speedtext: TStaticText;
speed: TTrackBar;
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
gettext: TLabel;
procedure FormCreate(Sender: TObject);
procedure stopbtnClick(Sender: TObject);
procedure speedChange(Sender: TObject);
procedure prebtnClick(Sender: TObject);
procedure nextbtnClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
TTS:IVTxtAuto;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
TTS:=CoVtxtAuto_.Create;
TTS.Register('superwords','superwords');
speed.Position:=TTS.Get_Speed;
speedtext.caption:='速度:'+inttostr(speed.position);
speed.SelEnd:=speed.Position;
//filelistbox1.Mask:= '所有文件(*.*)|*.*| 文本文件(*.txt)|*.txt';
end;



procedure TForm1.stopbtnClick(Sender: TObject);
begin
TTS.StopSpeaking;
end;


procedure TForm1.speedChange(Sender: TObject);
begin
TTS.Set_Speed(speed.position);
speedtext.caption:='速度:'+inttostr(speed.position);
speed.SelEnd:=speed.Position;
end;

procedure TForm1.prebtnClick(Sender: TObject);
begin
TTS.AudioRewind;
end;

procedure TForm1.nextbtnClick(Sender: TObject);
begin
TTS.AudioFastForward;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
TTS:=nil;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;




procedure TForm1.Button2Click(Sender: TObject);
begin
TTS.Speak(Edit1.text,vtxtst_READING);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (length(trim(edit1.text))>0) and (key=chr(32))
then begin if trim(edit1.text)=gettext.Caption
then begin
TTS.Speak(edit1.Text,vtxtst_COMMAND);
edit1.Clear;
end
else TTS.Speak('YOU ARE WRONG',vtxtst_STATEMENT);
end;
end;


end.


uses
VTxtAuto_TLB;

var
FISpeech: IVTxtAuto;

procedure TForm1.FormCreate(Sender: TObject);
begin
FISpeech := CoVTxtAuto_.Create;
FISpeech.Register('DreamCapital', 'MailAlert');
end;

使用:
SpeechString := 'Now test the function of speech!';
FISpeech.Speak(SpeechString, vtxtst_READING);

但是中文是没法发音的。这不是由SPeech SDK5决定的,而是因为
缺少一个语音库。
cyf_delphi 2004-11-05
  • 打赏
  • 举报
回复
怎么没人回吗?????
cyf_delphi 2004-11-05
  • 打赏
  • 举报
回复
最好有源码!
ksaiy 2004-11-05
  • 打赏
  • 举报
回复
我吗?
ksaiy@sina.com
cyf_delphi 2004-11-05
  • 打赏
  • 举报
回复
我有一个程序你可以帮我测试一下吗?
也是一个语音的小程序。
我发给你,你试一下中文能不能读出。
把你的邮箱写来
纯冰糖 2004-11-05
  • 打赏
  • 举报
回复
你装了金山词霸就可以了,然后导进去那个ocx
cyf_delphi 2004-11-05
  • 打赏
  • 举报
回复
我已经安装了,还是不能读出中文
ksaiy 2004-11-05
  • 打赏
  • 举报
回复
第一个地址发错了。
ksaiy 2004-11-05
  • 打赏
  • 举报
回复
http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/SpeechSDK51LangPack.exe
ksaiy 2004-11-05
  • 打赏
  • 举报
回复
http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-S/SpeechSDK51LangPack.exe

去这里下载。
cyf_delphi 2004-11-05
  • 打赏
  • 举报
回复
中文的语音库在什么地方有下载????
网址!!!
  • 打赏
  • 举报
回复
楼上的高手,向你致敬!
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2004-11-05 10:27
社区公告
暂无公告