我正在从 XP 迁移到 Windows 7 64 位。我在 XP 机器上编译的应用程序可以在 XP 上正常运行。但是,当我在 W7 机器上运行 exe 时,GetVoices 返回的声音列表如下:
Microsoft Anna
Microsoft Mary
Microsoft Mike
Sample TTS Voice。
检查 W7 语音属性对话框显示机器上仅加载了 Microsoft Anna。检查 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Speech/Voices 的注册表可以确认这一点。
在我的新 Windows 7 开发机器上重新编译我的应用程序会创建一个重复上述行为的 exe。(XP编译代码和W7编译代码在W7下执行时重现同样的错误)
我在 Windows 7 64 位上使用 Delphi 7 进行开发,我正在使用 Microsoft Speech Object Library(版本 5.4)(注意:5.4 是导入类型库列表中显示的内容)。
我将 SpeechSDK51.exe 安装到我的 W7 机器上。这来自:
以下代码在 Windows 7 上生成 4 种声音的列表,即使应该只有一种声音:
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
SOToken: ISpeechObjectToken;
SOTokens: ISpeechObjectTokens;
begin
cbbVoices.Clear;
SOTokens := SpVoice1.GetVoices('', '');
for i := 0 to SOTokens.Count - 1 do begin
SOToken := SOTokens.Item(i);
cbbVoices.AddItem( SOToken.GetDescription(0), TObject(SOToken) );
SOToken._AddRef;
end;
end;
关于如何处理这个问题的任何建议?
谢谢,
肖恩