I did it by creating OLE object with Delphi in 2000/NT/XP as following:
Voice := CreateOLEObject('SAPI.SpVoice');
Voice.speak(...)
But this does not work in Vista, how can I make my program simply speak some text in Vista?
-
I just tried (D2009 on Vista Home Premium) with the following code and it works!
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, there is a nice paper on using speech in Delphi programming by Brian Long...
François : I did build and test in Vista (on the same machine)From François -
Thanks for the paper. But, running the code you showed, in Vista, I get the error "Floating point division by zero". Did you test it in Vista? (I built it with BDS2006 in Windows XP and ran the executable in Vista)
Argalatyr : François said that he compiled in Vista. Have you tried that? -
Works when run from IDE (Turbo 2006) but gives floating point error as above when run outside IDE?
0 comments:
Post a Comment