2009-11-06 2 views
3

나는 음성 합성을 포함하는 프로그램을 만들고있다. 몇 주 전에, 나는 소개를 썼다.System.Speech 음성 합성기의 이상한 문제

using (SpeechSynthesizer s = new SpeechSynthesizer()) 
    { 
     s.SetOutputToWaveFile("file.wav"); 
     s.Speak(textBox1.Text); 
    } 

프로그램. 그것은 잘 작동했습니다. 필자는 과제 목록에서 "연구 결과 합성"을 건너 뛰고 프로젝트의 다른 부분으로 넘어갔습니다.

이제 실제 프로그램을 작성하고 동일한 기본 코드 블록을 사용하려고합니다. 그러나 이제는 s.SetOutputToWaveFile 호출에서 실패합니다. 다음 메시지와 함께 PlatformNotSupportedException을 throw합니다. "시스템에 음성이 설치되어 있지 않거나 현재 보안 설정에서 사용할 수있는 음성이 없습니다."

저는 32 비트 비스타에 있습니다. 내가 알 수있는 한, 두 프로그램 모두 동일한 컴파일러 설정을 가지고 있습니다. 이것은 Winforms 응용 프로그램이며 ASP.Net 또는 부분적으로 신뢰할 수있는 응용 프로그램이 아닙니다. 저는 Visual Studio의 또 다른 인스턴스에서 원래 프로그램을 뽑았지만 여전히 잘 작동합니다.

아이디어가 있으십니까?

편집, 11/9/09 :

내가 현상금을 추가하고, 지금도 그냥이 프로그램했습니다

static void Main(string[] args) 
{ 
    using (SpeechSynthesizer ss = new SpeechSynthesizer()) 
    { 
     ss.Speak("Hello There"); 
    } 
} 

이 실패합니다. 나는 내가 설정할 필요가있는 허가 또는 뭔가가 있다고 생각하지만, 나는 그것을 발견 할 수 없다. 내 다른 프로그램 -이 새로운 프로그램과 똑같은 초기 프로그램은 여전히 ​​작동합니다.

+0

s.SetOutputToDefaultAudioDevice()와 같은 결과는 무엇입니까? 동일한 문제가 발생합니까? – Rooke

+0

s.Anything()도 같은 예외를 throw합니다. 디버거 조사 식 창에서보기에는 모든 속성에 대해 동일한 PlatformNotSupportedException 오류가 표시됩니다. –

답변

3

당신은 WinDiff과 비교할 수 있습니다. 둘 다 .csproj 파일과 그들이 참조에 대해 동일한 것들을 사용하는지보세요?

다른 하나는 시스템 파일을 사용하는 반면 다른 하나는 자신의 하위 디렉토리에있는 로컬 파일을 사용합니까?

+0

작업 프로그램은 System.Speech를 가리키는 반면 비 작동 프로그램은 Microsoft.Speech를 나타냅니다. 그들은 완전히 다른 참조를했습니다! 보안 차이점을 찾기 위해 .csproj 파일을 이미 비교 했으므로 다른 참조가 전혀 필요하지 않았습니다. –

+0

위대한 요점은, 나는 실제로 같은 문제, 감사 Fredou와 붙어 있었고 ... – Ali