On 2016/08/23 16:38, Michael Van Canneyt wrote:
On Tue, 23 Aug 2016, Toru Takubo wrote:
On 2016/08/23 16:22, Michael Van Canneyt wrote:
On Tue, 23 Aug 2016, Toru Takubo wrote:
Hello,
I am testing a text to speech program working on Windows SAPI, and I
encountered a problem that I can not set the Voice property because
"member not found".
Below is the code which describe the problem. It is originally from
the freepascal wiki (http://wiki.freepascal.org/SAPI) and slightly
modified. Setting the voice property in this code is meaningless,
I know. It is just to reproduce the problem.
The SpVoice.Speak method itself works fine. I am working with fpc
3.0.0 on Windows 7 64bit. Any advice would be appreciated.
Regards,
Toru
_______________________________________________
program TestSAPI;
uses
SysUtils, comobj;
var
SavedCW: Word;
SpVoice: Variant;
Token: Variant;
begin
SpVoice := CreateOleObject('SAPI.SpVoice');
// Change FPU interrupt mask to avoid SIGFPE exceptions
SavedCW := Get8087CW;
try
Set8087CW(SavedCW or $4);
Token := SpVoice.Voice; //I can get a voice token.
Writeln(Token.GetDescription); //The token actually works.
try
SpVoice.Voice := Token; //"member not found" exception here. I can't set
it.
Did you try
spVoice.SetVoice(Token);
I got another exception.
"Method 'SetVoice' is not supported by automation object"
Strange, because it is listed in the SAPI reference.
This is probably why you cannot set it: the property seems to be read-only.
I wrote a JScript (saved as tts.js) and it worked fine.
_______________________________________________
var SpVoice = WScript.CreateObject("SAPI.SpVoice");
var Token = SpVoice.Voice;
WScript.Echo(Token.GetDescription());
SpVoice.Voice = Token;
SpVoice.Speak("hi");
_______________________________________________
I could even change voice with additional code.
Why my pascal code does not work as jscript does?
Regards,
Toru
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal