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 に答える