Delphi XE2のSpeechAPI 5.4の例があります。その一部を次に示します。
try
SpVoice:= TSpVoice.Create(nil);
SOTokens := SpVoice1.GetVoices('', '');
for i := 0 to SOTokens.Count - 1 do begin
SOToken := SOTokens.Item(I);
SOToken._AddRef;
s:=SOToken.GetDescription(0); // raise exception
Log(IntToStr(i)+': '+s);
end;
except
on E : Exception do begin
Log(E.ClassName+' error raised, with message : '+E.Message);
end;
end;
このコードは、XP から 8.1 までのすべての Windows で正しく機能します。残念ながら、Windows 10 では例外が発生します。ログファイルで私は読むことができます:
0: Microsoft David Desktop - English (United States)
EOleException error raised, with message : OLE error 8004503A
標準の Windows テキスト読み上げツールは、利用可能な2 つの音声を表示します。
Microsoft David Desktop - English (United States)
Microsoft Zira Desktop - English (United States)
TSpVoice
動的に作成することが重要です。
例外なくすべてのボイスを操作するにはどうすればよいですか?