質問

次のように、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.

FYI、 Delphiプログラミングでの音声の使用に関する素晴らしい論文があります。 ブライアンロング...


(非常に)最新の更新:

Vistaで動作せず、IDEの外部でEZeroDivide例外が発生する理由については、他のSOの質問を参照してください: Delphi SAPIテキスト読み上げ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top