0

我正在使用 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 个单词时,我在语音识别器录制事件中没有受到任何影响。

请有人可以帮助我实现这一目标吗?

4

1 回答 1

2

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

然而,更有可能的是,对于命令和控制语法来说,10,000 个单词实在是太多了。更好的选择是使用DictationGrammar, 而不是命令和控制语法。将单词添加到词典以确保听写引擎能够识别单词,然后将识别结果与您的单词表进行匹配。

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

于 2013-07-24T17:00:54.313 回答