Я перехожу с XP на Windows 7 64 бит. Мое приложение, которое я скомпилировал на своем компьютере с XP, правильно работает на XP. Однако когда я запускаю exe на своем компьютере с W7, список голосов, возвращаемых GetVoices, выглядит следующим образом:
Microsoft Анна
Microsoft Mary
Майкрософт Майк
Образец TTS Voice.
Проверка диалогового окна свойств речи W7 показывает, что на компьютере загружена только Microsoft Anna. Проверка реестра в HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Speech / Voices подтверждает это.
Перекомпиляция моего приложения на моем новом компьютере для разработки под Windows 7 создает исполняемый файл, который дублирует вышеуказанное поведение (Скомпилированный код XP и скомпилированный код W7 воспроизводят ту же ошибку при выполнении под W7)
Я занимаюсь разработкой в Delphi 7 в 64-разрядной версии Windows 7 и использую библиотеку объектов речи Microsoft (версия 5.4) (примечание: 5.4 - это то, что отображается в списке библиотеки типов импорта).
Я установил SpeechSDK51.exe на мой компьютер W7. Это пришло от:
http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&DisplayLang=en
Следующий код создает список из 4 голосов в Windows 7, хотя голос должен быть только один:
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;
Есть предложения по решению этой проблемы?
спасибо,
shawnh