0

ユーザーが話すことができるアプリケーションと単語があり、彼が話した単語の正確さのパーセンテージが与えられます。つまり、エンジンが単語をどれだけ明確に認識したかです。

これはすべて正常に機能しますが、辞書として認識エンジンに与える辞書にどの単語を追加する必要があるかというジレンマがあります。

ケースペンに「p」で始まる単語を指定すると、ペンダント、ペントなどの単語がすべて辞書に追加されます。その場合、認識された単語を「ペン」として取得していません。

代わりに、「ペンダント」などの他の単語を常に取得します

しかし、「pe」、「pen」などの限られた単語のみを辞書に追加すると、同じ録音ファイルに対して、認識された単語は「Pen」のみになりました。

それは明らかに、私たちが辞書に与える単語に依存することを意味します.

私はクライアントに同じことを伝えました.しかし、彼らが望んでいるのは、与えられた入力単語に対しても間違った単語を話すことができるということです.

私はこの問題のためにできることをしましたが、私のクライアントは宇宙とは別の何かを必要としています。

コード :

public OdllSpeechProcessor(string culture, string speechContent , string filePath)
        {
            try
            {
                int counter = 0;
                string line;
                cultureInfo         = new CultureInfo(culture);
                recognitionEngine   = new SpeechRecognitionEngine(cultureInfo);
                words               = new Choices();
                gb                  = new GrammarBuilder();
                gb.Culture          = cultureInfo;
                rndAccuracy         = new Random();

                System.IO.StreamReader file = new System.IO.StreamReader(filePath);
                while ((line = file.ReadLine()) != null)
                {
                    if (line != "")
                    {
                        for (int i = 0; i < srcContent.Length; i++)
                        {
                            if (line.StartsWith(subsetWords, true, cultureInfo))
                            {
                                if (count >= line.Length)
                                {
                                    words.Add(line);
                                    counter++;
                                }
                            }
                        }
                    }
                }


                file.Close(); 

                // Adding words to the grammar builder.              
                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);

ここでこれに対する解決策を持っている専門家はいますか?どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

0

コマンド文法 (つまり、一連の選択肢) を使用しています。コマンド文法を使用すると、エンジンは一致を見つけるために最善を尽くしますが、これは簡単に誤検知を引き起こす可能性があります (これまで見てきたように)。この質問への回答で概説したように、口述文法、特に発音文法を調査することをお勧めします。私が概説したソリューションでは、C# では使用できない (または少なくともSystem.Speech.Recognition.

于 2013-09-12T03:37:11.023 に答える