2011-01-12 2 views
2

저는 C#을 처음 사용하며 오디오 파일을 입력으로 사용하여 텍스트로 쓰는 프로젝트와 관련하여 현재 작업 중입니다. system.speech를 사용하는 코드가 있습니다. http://blog.thomascsherman.com/2009/08/getting-started-with-windows-voice-recognition/ 에서이 코드를 얻었지만 컴파일 할 때 런타임에 문제가 있습니다. 실행하자마자 코드가 충돌하고 콘솔에 "입력 파일을 찾을 수 없습니다"라고 표시됩니다. 입력 파일의 경로가 무엇인지 깨달았습니다. 파일이 해당 폴더에 있다는 것을 알고 있습니다. 이걸 도와주세요. 아래 코드를 붙여 넣습니다.SetInputToWaveFile

using System; using System.IO; using System.Speech; using System.Speech.Recognition; using System.Speech.AudioFormat;

공용 클래스 안녕하세요 (@ 즉 "C : /my/file/is/here/hello.wav") 절대 경로를 설정하려고 시작하려면 {

public static void Main() 
{ 
    Hello hello= new Hello(); 
     hello.doStuff(); 


} 



private void doStuff() 
{ 
    SpeechRecognitionEngine sre = new SpeechRecognitionEngine(); 
    sre.SpeechHypothesized += new EventHandler<SpeechHypothesizedEventArgs>(sre_SpeechHypothesized); 
    sre.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized); 
    sre.RecognizeCompleted += new EventHandler<RecognizeCompletedEventArgs>(sre_RecognizeCompleted); 
    sre.AudioSignalProblemOccurred += new EventHandler<AudioSignalProblemOccurredEventArgs>(sre_AudioSignalProblemOccurred); 
    sre.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(sre_SpeechDetected); 
    sre.SpeechRecognitionRejected += new EventHandler<SpeechRecognitionRejectedEventArgs>(sre_SpeechRecognitionRejected); 



    DictationGrammar dg = new DictationGrammar(); 
    sre.LoadGrammar(dg); 


    sre.SetInputToWaveFile("hello.wav"); 
    sre.EndSilenceTimeout = new TimeSpan(0, 0, 2); 


    sre.RecognizeAsync(); 
} 

void sre_SpeechHypothesized(object sender, SpeechHypothesizedEventArgs e) 
{ 
    Console.WriteLine(e.Result.Text); 
} 
void sre_AudioSignalProblemOccurred(object sender, AudioSignalProblemOccurredEventArgs e) 
{ 
    Console.WriteLine(e.AudioSignalProblem.ToString()); 
} 

void sre_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e) 
{ 
Console.WriteLine("Rejected!"); 
} 

void sre_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e) 
{ 
Console.WriteLine("Recognition Complete!"); 
} 

void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
{ 
Console.WriteLine(e.Result.Text); 
} 

void sre_SpeechDetected(object sender, SpeechDetectedEventArgs e) 
{ 
Console.WriteLine("Speech Detected!"); 
} 


} 

답변

0

가 있는지 결정하기 위해 경로가 문제이거나 다른 것입니다.

릴리스 및 디버그 빌드에 다른 폴더가 있으며 때때로 혼동 될 수 있습니다. 파일 이 실제로이 올바른 폴더에 있는지 확인하십시오 (문제가있는 경우 테스트하려면 hello.wav를 시작하려면 릴리스 및 디버그 폴더에 넣으십시오).

+0

안녕하세요, 노력했지만 작동하지 않습니다 "경로의 일부를 찾을 수 없습니다"C :/Users/Owner/Documents/Visual Studio 2010/Projects/Learning/bin/Release/hello .wav ""도와주세요. – Divs

+0

파일을 릴리스 및 디버그 모두에 복사하고 절대 경로가없는 * (* "hello.wav") 프로그램을 실행하는 경우에도 동일한 오류가 발생합니까? –

+0

예. 정확히 같은 오류가 발생합니다. 이유가 무엇인지 알지 못합니다. – Divs