0

我在 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

我如何才能毫无例外地处理所有声音?

4

0 回答 0