On 04/10/2017 02:58 AM, misabov wrote:
The project has generated an exception class EOleSysError with a message:
???? ?????? ?? ??????.
uses
...,ComObj;
var
SpVoice: Variant;
SpVoice := CreateOleObject('SAPI.SpVoice');
SpVoice.Voice:= SpVoice.GetVoices('','').Item(0);
SpVoice GetVoices method (SAPI 5.3) cannot return a selection of voices
available to the voice.
A long time ago I played with MS sapi. I will try to put the relevant
code here for you. My goal was to put the output speech into memory to
be processed further. I think I used the fpc tool importtl to generate
the Speechlib_tlb unit. But its been a long time now. I can email you
directly the file if you want.
Regards,
Andrew Haines
uses
OleServer, ComObj, Speechlib_tlb, Windows, Variants, ActiveX, ...
var
SpeechVoice: ISpeechVoice;
Voice: TSpVoice;
Voices: ISpeechObjectTokens;
ToSpeak: OleVariant;
i: Integer;
VoiceList: TStringList;
begin
CoInitialize(nil);
Voice := TSpVoice.Create(self);
CoCreateInstance(CLASS_SpVoice, nil, CLSCTX_ALL, IID_ISpeechVoice,
SpeechVoice);
Voice.ConnectTo(SpeechVoice);
Voices := Voice.GetVoices('','');
VoiceList := TStringList.Create;
for i := 0 to Voices.Get_Count -1 do
VoiceList.AddObject(Voices.Item(I).GetDescription(0),
TObject(Voices.Item(I)));
Voice.Voice := ISpeechObjectToken(Pointer(VoiceList.Objects[0])); //
0 is the index of the desired voice.
// VoiceList.Strings[x] is a text description of the voice
ToSpeak := 'Hello MS SAPI';
Voice.speak(ToSpeak, SVSFDefault);
// cleanup
end;
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal