C# 语音识别语法生成器/选择树结构

C# 语音识别语法生成器/选择树结构,c#,tree,speech-recognition,text-to-speech,C#,Tree,Speech Recognition,Text To Speech,在玩弄C#的语音识别时,我在创建一个有效的语法生成器时遇到了一个障碍,该生成器具有多种选择(更具体地说,是选择的选择) IE考虑以下逻辑命令 一种解决方案是“硬编码”语音行的每个组合,并将它们添加到GrammarBuilder中(即“设置为左红色”和“设置为右清晰”),然而,这将很快超过1024的限制,尤其是在处理数字组合时 另一种解决方案是将所有“列”附加为“选项”(并在“识别”时过滤掉不正确的路径),但这似乎是处理器负担沉重且不必要的 中间地带似乎是最好的选择——有选择的选择——就像Gra

在玩弄C#的语音识别时,我在创建一个有效的语法生成器时遇到了一个障碍,该生成器具有多种选择(更具体地说,是选择的选择)

IE考虑以下逻辑命令

一种解决方案是“硬编码”语音行的每个组合,并将它们添加到GrammarBuilder中(即“设置为左红色”和“设置为右清晰”),然而,这将很快超过1024的限制,尤其是在处理数字组合时

另一种解决方案是将所有“列”附加为“选项”(并在“识别”时过滤掉不正确的路径),但这似乎是处理器负担沉重且不必要的

中间地带似乎是最好的选择——有选择的选择——就像GrammarBuilder上的树结构——但我不确定如何继续


有什么建议吗?

您可以使用以下方法从一组
GrammarBuilder
对象构建
Choices
对象:

这使您可以轻松构建选择树


请注意,您可能希望添加
选项的每个分支以及
选项的每个级别,以便在识别后不必重新分析文本。

向后添加grammarbuilder对象,而不是choices对象。choices对象应仅用于最后的树选项(红色、蓝色)&(黑色,白色)。

我认为您可能需要包含更多关于您正在使用的语音识别库如何工作的信息。
  // Create alternatives for female names and add a phrase.
  GrammarBuilder females = new Choices(new string[] { "Anne", "Mary" });
  females.Append("on her");

  // Create alternatives for male names and add a phrase.
  GrammarBuilder males = new Choices(new string[] { "James", "Sam" });
  males.Append("on his");

  // Create a Choices object that contains an array of alternative
  // GrammarBuilder objects.
  Choices people = new Choices();
  people.Add(new Choices(new GrammarBuilder[] {females, males}));

  // Create a Choices object that contains a set of alternative phone types.
  Choices phoneType = new Choices();
  phoneType.Add(new string[] { "cell", "home", "work" });

  // Construct the phrase.
  GrammarBuilder gb = new GrammarBuilder();
  gb.Append("call");
  gb.Append(people);
  gb.Append(phoneType);
  gb.Append(new GrammarBuilder("phone"), 0, 1);