Речь api 5.1 GetVoices Microsoft возвращает речь, которая не существует в Windows 7

Я перемещаю от XP до Windows 7 64 бита. Мое приложение, которое я скомпилировал на своей машине XP, работает правильно над XP. Однако, когда я выполняю exe на своей машине W7, список речи, возвращенной GetVoices, следующие:
Microsoft Anna
Microsoft Mary
Microsoft Mike
Демонстрационная речь TTS.

Проверка Речевого диалогового окна Свойств W7 показывает, что только Microsoft Anna загружается на машине. Проверка реестра в HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Speech/Voices подтверждает это.

Перекомпиляция моего приложения на моей новой машине разработки Windows 7 создает exe, которые копируют вышеупомянутое поведение. (Скомпилированный код XP и скомпилированный код W7 воспроизводят ту же ошибку при выполнении под W7)

Я разрабатываю в Delphi 7 в Windows 7 64 бита, и я использую Microsoft Speech Object Library (Версия 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

1
задан user327359 24 July 2010 в 17:07
поделиться

1 ответ

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

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

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

Оговорка: все это не проверено/guesswork/doc-reading....

0
ответ дан 2 September 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: