Microsoft speech api 5.1 GetVoices возвращает голоса, которых нет в Windows 7 - PullRequest
1 голос
/ 24 июля 2010

Я перехожу с 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

Ответы [ 2 ]

2 голосов
/ 18 сентября 2010

Microsoft Anna - единственный ваш 64-битный голос другие - 32-битные двигатели. Ваша система может использовать только 64-битный движок (Анна), поэтому на панели можно выбрать только этот. Но остальные также установлены. Если вы откроете этот файл: /%Windows%/SystemWOW64/Speech/SpeechUX/sapi.cpl, вы увидите диалоговое окно, похожее на диалоговое окно для панели управления, но теперь вы сможете выбрать любой из этих голосов в качестве стандартного голоса. .

0 голосов
/ 25 июля 2010

Пока не подтверждено, но я думаю, что Microsoft Sam, Microsoft Mike и Microsoft Mary не работают в Windows Vista и более поздних версиях.

Полагаю, вы могли бы установить их с SDK 5.1, чтобы они отправлялись обратно при запросе голосов, но, возможно, они не совместимы с механизмом 5.4, их нельзя использовать.

Возможно, вы захотите отфильтровать GetVoices с атрибутом EngineProperties, чтобы ограничить возвращаемое значение.

Отказ от ответственности: все это не проверено / догадки / чтение документов ....

...