Vistaでのテキスト読み上げ
-
03-07-2019 - |
質問
次のように、2000 / NT / XPでDelphiを使用してOLEオブジェクトを作成しました。
Voice := CreateOLEObject('SAPI.SpVoice');
Voice.speak(...)
しかし、これはVistaでは機能しません。Vistaでプログラムがテキストを単に話すようにするにはどうすればよいですか?
解決
次のコードで(Vista Home PremiumのD2009)を試してみましたが、動作します!
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、 Delphiプログラミングでの音声の使用に関する素晴らしい論文があります。 ブライアンロング...
(非常に)最新の更新:
Vistaで動作せず、IDEの外部でEZeroDivide例外が発生する理由については、他のSOの質問を参照してください: Delphi SAPIテキスト読み上げ
所属していません StackOverflow