0

私は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を使用した精度が低い理由を誰かが知っているなら、私は助けを求めるためにここにいますか?

ありがとう!!!!

4

1 に答える 1

0

SpeechLib.dllは、ネイティブCOMインターフェイス(SAPI)用のCOM相互運用ライブラリです。SpeechRecognitionEngineは、使いやすい.NETクラスラッパーです。どちらもまったく同じ認識エンジンにアクセスします。

録音に何らかの問題がある可能性があります。通常、クリッピング(大きすぎる)やノイズが多すぎる(小さすぎる)などの音量の問題。AudioSignalProblemOccurredイベントを実装して、いくつかの基本的な診断を取得します。

于 2010-08-29T13:30:02.163 に答える