捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:用于解决D7生成的AgentObjects_TLB.pas不能发声的正确文件
yuelinniao 32520 2008/1/2 23:33:07
不知道是不是因为国内言论自由度的问题。国内技术员不共享解决方法,搜帖不发帖。我很早就对这个问题反思过。
kongxiangji 30131 2007/6/22 11:33:04
 最后我在yahoo上搜到一个国外的网站上找到了那个文件。
kongxiangji 30130 2007/6/22 11:24:30
原来那么多人遇到这个问题啊,我原来也是在论坛上发帖子,没人解决。
能为大家解决问题是件幸福的事。
qvbfndcwy 29863 2007/6/8 10:18:08
最近下载了lps的文件,发现Peedy.LanguageID := $0409;这句一定要加上,agent才可以说话。
register 29851 2007/6/7 22:09:05
  TForm1 = class(TForm)
    btnCreateAgent: TButton;
    btnAgentSpeak: TButton;
  private
    MyAgent: TAgent;
    Peedy: IAgentCtlCharacterEx;
    Request1: IagentCtlRequest;
  end;


procedure TForm1.btnCreateAgentClick(Sender: TObject);
begin
  MyAgent := TAgent.Create(self);
  if OpenDialog1.Execute then
  begin
    Request1 := MyAgent.Characters.Load('Peedy', OpenDialog1.FileName);
    Peedy := MyAgent.Characters.Character('Peedy');
    Peedy.Show(0);
  end;
end;

procedure TForm1.btnAgentSpeakClick(Sender: TObject);
begin
  Peedy.LanguageID := $0409;

  Peedy.Speak('TTS测试正常,可为什么我还是个哑巴?', '');
end;
register 29850 2007/6/7 21:27:33
出错位置:
procedure TAgent.CreateControl;

  procedure DoCreate;
  begin
    FIntf := IUnknown(OleObject) as IAgentCtlEx;
  end;

begin
  if FIntf = nil then DoCreate;
end;

出错提示:
Access violation at address 0045CDC2 in modeult 'TestMsAgent.exe'.Read of address 00000338.
lps 29848 2007/6/7 17:54:44
有人说还是不能发音,贴一段我的测试程序,绝对可以发音。如果仍然不行,请检查ms agent和TTS的安装和设置

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, AgentObjects_TLB;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    myagent: TAgent;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
Var merlin: IagentCtlCharacterEx;
    Request1: IagentCtlRequest;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
merlin.Show(0);
merlin.Play('LookDown');
merlin.LanguageID:=$0409;
merlin.Speak(edit1.Text,'');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  MyAgent.Characters.Unload('merlin');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Request1 := MyAgent.Characters.Load( 'merlin', 'MERLIN.ACS' );
merlin:= MyAgent.Characters.Character( 'merlin' );
merlin.Commands.Add('Delphi','RunDelphi中文','Delphi',True,True);
merlin.Commands.Add('Visual Basic',' Run VB中文','VB',True,True);
end;

end.
lps 29832 2007/6/7 1:07:41
最近又研究了一下,发现以前走入了误区,都是被资料误导了,其实可以直接调用TTS发音,不是一定通过ms agent啊!
另外,用TTS还以读中文,甚至中英文混合读。
汗一个
register 29831 2007/6/6 23:55:05
严重同意楼上! 
这个问题从 2004 一直找到现在,终于可以解决了。
qvbfndcwy 29796 2007/6/5 11:41:56
谢谢你提供的资料,有空我去试验一下,如果可以的话,我将非常感谢你的帮助。不过我对于之前的那个发出如下答案的人,有点鄙视:
{
……直到有一个叫MIKY的谈到读取Character动作列表时修改AgentObjects_TLB.pas后成功。
从而受到了启发在google中搜索AgentObjects_TLB.pas结果在cvs.sourceforge.net
中下载了一个AgentObjects_TLB.pas。覆盖到X:\Program Files\Borland\Delphi7Imports\AgentObjects_TLB.pas.
然后再运行上面的代码。
成功了!!
我的Agent终于可以说话了。
哈哈!!!!
有人需要我可以把AgentObjects_TLB.pas发给他
}
以前查找了好多天的baidu和google都是这样的文章!那可真叫郁闷啊。
第一页 上一页 下一页 最后页 有 10 条纪录 共1页 1 - 10
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表