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 に答える