我通过在 2000/NT/XP 中使用 Delphi 创建 OLE 对象来做到这一点,如下所示:
Voice := CreateOLEObject('SAPI.SpVoice');
Voice.speak(...)
但这在 Vista 中不起作用,我怎样才能让我的程序在 Vista 中简单地说一些文本?
我通过在 2000/NT/XP 中使用 Delphi 创建 OLE 对象来做到这一点,如下所示:
Voice := CreateOLEObject('SAPI.SpVoice');
Voice.speak(...)
但这在 Vista 中不起作用,我怎样才能让我的程序在 Vista 中简单地说一些文本?
我刚刚尝试使用以下代码(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