2010-07-08 3 views
2

개발중인 .NET 응용 프로그램에서 사용할 수 있도록 Windows XP 64 비트 OS에 Scansoft 음성 (Jennifer) 32 비트를 새로 설치했습니다.SpeechSynthesizer가 설치된 모든 음성을 수신하지 못합니다

List<string> allInstalledVoices = new SpeechSynthesizer().GetInstalledVoices(); 

나는 단 하나의 목소리, 기본 Microsoft 안나 음성을 반환받을 :

문제

내가이 메서드를 호출 할 때이다. 음성 응용 프로그램에 다른 텍스트로 설치된 음성을 모두 볼 수 있습니다.

답변

3

문제점이 무엇인지 발견했습니다. Visual Studio 2008을 사용하여 "Any CPU"로 프로젝트를 컴파일하면 문제가 발생합니다. 그러나 x86으로 변경하면 문제가 더 이상 나타나지 않습니다.

+1

Ah. 이것이 64 비트라고 언급하지 않았습니다. –

+0

에릭, 죄송합니다. 이 문제를 재현 해 봤나? – Attilah

+1

그 자체로 _ 문제는 아닙니다. 그것은 Win64와 .NET의 부산물입니다. 64 비트 OS에서는 64 비트 응용 프로그램으로, 32 비트 OS에서는 32 비트 응용 프로그램으로 실행됩니다 (정의 기준). 그러나 64 비트 응용 프로그램에 32 비트 DLL을로드 할 수는 없습니다. 모든 Microsoft TTS 엔진은 64 비트와 32 비트 버전으로 출시되지만 Scansoft 엔진은 32 비트 버전으로 만 제공됩니다. 따라서 64 비트 응용 프로그램에서는 Scansoft 엔진이 아닌 Microsoft TTS 엔진 만로드 할 수 있습니다. 따라서 .NET 응용 프로그램을 32 비트 전용으로 표시하면 두 엔진을 모두로드 할 수 있으며 모든 음성이 표시됩니다. –

2

나는 이것을 확인하는 데 어려움을 겪고 있지만 Scansoft의 Jennifer 음성은 SAPI 4.0 준수 음성이라고 믿습니다. Managed Speech API는 SAPI 5.1 준수 음성에서만 작동합니다.

관련 문제