Domanda

L'ho fatto creando l'oggetto OLE con Delphi in 2000 / NT / XP come segue:

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

Ma questo non funziona in Vista, come posso fare in modo che il mio programma parli semplicemente del testo in Vista?

È stato utile?

Soluzione

Ho appena provato (D2009 su Vista Home Premium) con il seguente codice e funziona!

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.

Cordiali saluti, esiste un un bel documento sull'uso del discorso nella programmazione Delphi di Brian Long ...


Aggiornamento (molto) in ritardo:

Per quale motivo potrebbe non funzionare in Vista e generare un'eccezione EZeroDivide al di fuori dell'IDE, vedere questa altra domanda SO: Sintesi vocale di Delphi SAPI

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top