与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个单词时,我在语音识别器录制事件中不会受到任何影响。
有人能帮我实现这一点吗?
您可以尝试使用Append(String, SubsetMatchingMode)
方法对短语进行排序;特别地,OrderedSubset
将允许匹配字符串的任何线性子集。
然而,更可能的是,对于一个命令来说,10000个单词的数据太多了;控制语法。更好的选择是使用DictationGrammar
,而不是命令&控制语法。将单词添加到词典中,以确保听写引擎能够识别单词,然后将识别结果与单词列表相匹配。
然而,在回顾您的问题时,您似乎在使用Microsoft.Speech命名空间,该命名空间使用不支持听写的服务器引擎;那么你唯一的选择就是第一个。