0

microsoft.speech を使用して、自分のマシンの wave ファイルから音声を認識しています。

選択セットに単語を追加する代わりに、テキスト ファイルから単語を読み取り、その単語を文法に追加しています。

しかし、文法に 73 を超える単語を追加しようとすると、記録したファイルが認識されないことがわかりました。

これが私のコードです:

System.IO.StreamReader file = new System.IO.StreamReader(filePath);
                while ((line = file.ReadLine()) != null)
                {
                    if (line != "")
                    {
                        words.Add(line);
                        counter++;
                    }
                }

                file.Close(); 


                gb.Append(words);

                // Create the actual Grammar instance, with the words from the source audio.
                g = new Grammar(gb);

                // Load the created grammar onto the speech recognition engine.
                recognitionEngine.LoadGrammarAsync(g);



 public void recognizer_SpeechRecognizedRecording(object sender, SpeechRecognizedEventArgs e)
        {
            string text = e.Result.Text;
}

しかし、テキスト ファイルに 73 を超える単語が存在する場合、音声認識の記録イベントでヒットが発生しません。

誰かがこれを達成するのを手伝ってくれますか?

4

1 に答える 1

2

フレーズを少し並べ替えて、メソッドを使用してみることができます。Append(String, SubsetMatchingMode)特に、 はOrderedSubset、文字列の任意の線形サブセットの一致を許可します。

しかし、より可能性が高いのは、10,000 語は、コマンド & コントロールの文法にはデータ量が多すぎるということです。より良いオプションはDictationGrammar、コマンド & コントロール文法ではなく、 を使用することです。辞書に単語を追加して、ディクテーション エンジンが単語を認識できることを確認してから、認識結果を単語リストと照合します。

ただし、質問を確認すると、口述をサポートしないサーバー エンジンを使用する Microsoft.Speech 名前空間を使用しているように見えます。あなたの唯一の選択肢は最初のものです。

于 2013-07-24T17:00:54.313 に答える