Преобразование текста в речь в Vista
-
03-07-2019 - |
Вопрос
Я сделал это, создав объект OLE с помощью Delphi в 2000/NT/XP следующим образом:
Voice := CreateOLEObject('SAPI.SpVoice');
Voice.speak(...)
Но это не работает в Vista, как мне заставить мою программу просто произносить какой-то текст в Vista?
Решение
Я только что попробовал (D2009 на Vista Home Premium) со следующим кодом, и он работает!
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.
К вашему сведению, есть хорошая статья об использовании речи в программировании на Delphi Брайан Лонг...
(Очень) позднее обновление:
Почему это может не работать в Vista и выдавать исключение EZeroDivide вне IDE, см. другой вопрос SO: Преобразование текста в речь Delphi SAPI
Не связан с StackOverflow