2008-10-16 25 views
5

lo hice mediante la creación de objeto OLE con Delphi en 2000/NT/XP de la siguiente manera:texto a voz en Vista

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

Pero esto no funciona en Vista, ¿cómo puedo hacer que mi programa simplemente hablan algo texto en Vista?

+0

gracias François. Funciona con el componente en el papel que sugirió (http://www.blong.com/Conferences/DCon2002/Speech/SAPI51/SAPI51.htm) –

Respuesta

4

¡Acabo de probar (D2009 en Vista Home Premium) con el siguiente código y funciona!

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, hay un nice paper on using speech in Delphi programming por Brian largo ...


(Muy) Late Actualización:

Por qué no podría funcionar en Vista y dar una EZeroDivide excepción fuera del IDE, vea esta otra pregunta ASÍ: Delphi SAPI Text-To-Speech

+0

Gracias por el papel. Pero, ejecutando el código que mostró, en Vista, aparece el error "División de punto flotante por cero". ¿Lo probaste en Vista? (Lo construí con BDS2006 en Windows XP y ejecuté el ejecutable en Vista) –

+0

Construí y probé en Vista (en la misma máquina) –

+0

gracias François. Funciona con el componente en el documento que sugirió (http://www.blong.com/Conferences/DCon2002/Speech/SAPI51/SAPI51.htm) –

Cuestiones relacionadas