2008-10-16 5 views
5

ich es tat, indem OLE-Objekt mit Delphi 2000/NT/XP, wie folgend:Text to speech in Vista

Voice := CreateOLEObject('SAPI.SpVoice'); 
Voice.speak(...) 

Aber das in Vista nicht funktioniert, wie kann ich mein Programm einfach machen einige sprechen Text in Vista?

+0

danke François. Es funktioniert mit der Komponente in einem Papier, das Sie vorgeschlagen haben (http://www.blong.com/Conferences/DCon2002/Speech/SAPI51/SAPI51.htm) –

Antwort

4

Ich habe gerade versucht (D2009 auf Vista Home Premium) mit dem folgenden Code und es funktioniert!

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, gibt es eine nice paper on using speech in Delphi programming von Brian Long ...


(Sehr) Später Update:

Denn warum könnte es nicht in Vista arbeiten und geben einen EZeroDivide Ausnahme außerhalb der IDE, siehe diese andere SO Frage: Delphi SAPI Text-To-Speech

+0

Danke für das Papier. Aber, den Code ausführend, den Sie in Vista zeigten, erhalte ich den Fehler "Gleitkommadivision durch Null". Hast du es in Vista getestet? (Ich baute es mit BDS2006 in Windows XP und lief die ausführbare Datei in Vista) –

+0

Ich habe in Vista (auf der gleichen Maschine) gebaut und getestet –

+0

danke François. Es funktioniert mit der Komponente in dem Papier, das Sie vorgeschlagen haben (http://www.blong.com/Conferences/DCon2002/Speech/SAPI51/SAPI51.htm) –