[fpc-pascal] Can not set voice property of SpVoice

Michael Van Canneyt michael at freepascal.org
Tue Aug 23 09:38:43 CEST 2016



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.

Michael.



More information about the fpc-pascal mailing list