2

我是 C# 新手,目前正在从事一个项目,该项目涉及我使用音频文件作为输入并将其写为文本。我有使用 system.speech 的代码。我从http://blog.thomascsherman.com/2009/08/getting-started-with-windows-voice-recognition/获得了这段代码 ,它可以编译,但我在运行时遇到了问题。一旦我运行它,代码就会崩溃,控制台会说“找不到输入文件”。我意识到输入文件的路径是什么,并且我知道该文件在该文件夹中。请帮我解决一下这个。我正在粘贴下面的代码。

使用系统;使用 System.IO;使用 System.Speech;使用 System.Speech.Recognition;使用 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!");
}


}
4

1 回答 1

0

首先,尝试设置一个绝对路径(即@"C:/my/file/is/here/hello.wav")来确定是路径问题还是其他问题。

另请注意,发布和调试版本有不同的文件夹,有时可能会令人困惑。确保该文件确实位于正确的文件夹中(要测试这是否是问题所在,首先将 hello.wav 放在 Release 和 Debug 文件夹中)。

于 2011-01-12T10:09:03.427 回答