2011-01-12 36 views
2

我是c#的新手,目前正在開發一個涉及到使用音頻文件作爲輸入並將其寫爲文本的項目。我有使用system.speech的代碼。我從http://blog.thomascsherman.com/2009/08/getting-started-with-windows-voice-recognition/ 得到這個代碼,它編譯,但我在運行時遇到麻煩。只要我運行它,代碼崩潰,並且控制檯顯示「輸入文件未找到」。我意識到輸入文件的路徑是什麼,我知道該文件在該文件夾中。請幫我解決一下這個。我正在粘貼下面的代碼。SetInputToWaveFile

using System;使用System.IO的 ;使用System.Speech的 ; using System.Speech.Recognition; using System.Speech.AudioFormat;

公共類您好 {

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

首先,嘗試設置一個絕對路徑(即@ 「C:/my/file/is/here/hello.wav」),以確定它的這就是問題或其他問題。

另請注意,Release和Debug版本有不同的文件夾,有時可能會造成混淆。確保文件確實位於正確的文件夾中(爲了測試是否有問題,請將hello.wav放在Release和Debug文件夾中以開頭)。

+0

嗨,我試過,但它不工作它給出了同樣的錯誤「無法找到路徑的一部分」C:/用戶/所有者/文件/ Visual Studio 2010 /項目/學習/ bin /釋放/你好.wav「」請幫忙。 – Divs 2011-01-12 10:15:56