私はC#.netライブラリSystem.Speechを使用してASRアプリを実装しています(ところで、SAPIのより基本的で低レベルの実装のように見えるSpeechLib.dllについての投稿を見ました。同じ?)。私たちの主な目的は、サーバー/クライアントASRシステムとして実装することです。クライアントでユーザーの音声を録音し、オーディオストリーム全体をインターネット経由でサーバーに転送し、サーバーがASRジョブを処理して結果をクライアントに返します。
また、音声入力としてローカルマイクを使用している同様のアプリを作成しましたが、非常にうまく機能しました。
私のオリジンアプリ:
SpeechRecgonitionEngine sr = new SpeechRecgonitionEngine();
sr.SetInputToDefaultDevice();
sr.RecognizeAsync();
このように、入力にはマイクを使用しましたが、結果の精度はかなり良好です。
そして、ここに問題があります。次に、新しいタスクに移ります。このタスクでは、認識入力をWavFile(またはTCP / IPソケット接続を介したaudioStream)に設定する必要があります。したがって、コードを次のように変更しただけです。
SpeechRecgonitionEngine sr = new SpeechRecgonitionEngine();
sr.SetInputToWaveFile(@"D:\input.wav");
sr.RecognizeAsync();
結果は不十分になります。マイク入力アプリの同じ文法に基づいて、いくつかのウェーブスニペットをいくつかのファイルに個別に事前に録音し、これらのファイルをASR入力として設定します。ただし、検出できる(SpeechDectectedEventによって処理される)ファイルは一部のみであり、十分に認識できる(SpeechRecognizedEventによって処理される)ファイルはごくわずかです。マイク入力アプリと同じフレーズを録音します。
精度は低いですが、一部のファイルは正しく認識できます。これは、コードに論理エラーがないことを示しています。しかし、レコグナイザーのいくつかのパラメーターを設定するなど、使用する前にいくつかの仕事を逃していると思いました。
それで、wavfile-inputを使用した精度が低い理由を誰かが知っているなら、私は助けを求めるためにここにいますか?
ありがとう!!!!