2009-06-08 4 views

답변

11

다음 C# 코드는 .Net 프레임 워크의 System.Speech 네임 스페이스를 사용합니다. Visual Studio에서 자동으로 참조하지 않기 때문에 네임 스페이스를 사용하기 전에이를 참조해야합니다.

 SpeechSynthesizer ss = new SpeechSynthesizer(); 
     ss.Volume = 100; 
     ss.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult); 
     ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav"); 
     ss.Speak("Hello World"); 

이 내용이 유용하고 도움이되기를 바랍니다. 이 같은

+0

안녕하세요, 전에 System.Speech를 사용하여 추가 한 경우에도 System.Speech를 내 프로젝트에서 사용할 수 없기 때문에 일부 DLL을 가져와야합니다. – Tarik

+0

@Mackenzie : 이것은 COM보다 익숙하지 않은 .net 네이티브 클래스를 사용하기 때문에 제보다 나은 대답입니다. –

+1

@atarikg : System.Speech 어셈블리를 참조하십시오. –

3

이것은 잠시 후 재생되므로주의해야합니다. 나를 위해 잘 일했다. SpFileStream (IDisposable을 구현하지 않으므로 try/finally)은 상대 경로의 절대 경로를 선호한다는 것을 알았습니다. 기음#.

SpFileStream fs = null; 
    try 
    { 
     SpVoice voice = new SpVoice(); 
     fs = new SpFileStream(); 
     fs.Open(@"c:\hello.wav", SpeechStreamFileMode.SSFMCreateForWrite, false); 
     voice.AudioOutputStream = fs; 
     voice.Speak("Hello world.", SpeechVoiceSpeakFlags.SVSFDefault); 
    } 
    finally 
    { 
     if (fs != null) 
     { 
      fs.Close(); 
     } 
    } 
+1

감사합니다. – Tarik

4

그리고이 출력 형식을 변경하는 방법에 대한 발견했습니다, 우리는 코드 뭔가 : 아주 간단하고 이해의

SpeechAudioFormatInfo info = new SpeechAudioFormatInfo(6, AudioBitsPerSample.Sixteen, AudioChannel.Mono); 

//Same code comes here 

ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav",info); 

.

쿨 .net

관련 문제