5

我通过在 2000/NT/XP 中使用 Delphi 创建 OLE 对象来做到这一点,如下所示:

Voice := CreateOLEObject('SAPI.SpVoice');
Voice.speak(...)

但这在 Vista 中不起作用,我怎样才能让我的程序在 Vista 中简单地说一些文本?

4

1 回答 1

4

我刚刚尝试使用以下代码(Vista Home Premium 上的 D2009),它可以工作!

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Voice: Variant;
begin
  Voice := CreateOLEObject('SAPI.SpVoice');
  Voice.speak('Hello World');
end;

end.

仅供参考,Brian Long有一篇关于在 Delphi 编程中使用语音的好论文...


(非常)延迟更新:

为什么它可能无法在 Vista 中运行并在 IDE 之外给出 EZeroDivide 异常,请参阅另一个 SO 问题:Delphi SAPI Text-To-Speech

于 2008-10-16T08:00:19.180 回答