次のように、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 を参照してください。