与micorosft.speech一起使用10000个单词的语法

本文关键字:10000个 单词 语法 micorosft speech 一起 | 更新日期: 2023-09-27 18:24:46

我正在使用microsoft.speech来识别机器中波形文件中的语音。

我不是在选择集中添加单词,而是从文本文件中读取单词,然后将单词添加到语法中。

但我发现,当我试图在语法中添加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个单词时,我在语音识别器录制事件中不会受到任何影响。

有人能帮我实现这一点吗?

与micorosft.speech一起使用10000个单词的语法

您可以尝试使用Append(String, SubsetMatchingMode)方法对短语进行排序;特别地,OrderedSubset将允许匹配字符串的任何线性子集。

然而,更可能的是,对于一个命令来说,10000个单词的数据太多了;控制语法。更好的选择是使用DictationGrammar,而不是命令&控制语法。将单词添加到词典中,以确保听写引擎能够识别单词,然后将识别结果与单词列表相匹配。

然而,在回顾您的问题时,您似乎在使用Microsoft.Speech命名空间,该命名空间使用不支持听写的服务器引擎;那么你唯一的选择就是第一个。