0

在使用 C# 的语音识别时,我偶然发现了在创建具有选择的有效 GrammerBuilder(更具体地说,选择的选择)时遇到的障碍。

IE 考虑以下逻辑命令。

一种解决方案是将语音行的每个组合“硬编码”并将它们添加到 GrammarBuilder(即“SET LEFT COLOR RED”和“SET RIGHT CLEAR”,但是,这将很快达到 1024 的限制,尤其是在处理数字组合。

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

中间立场,似乎是最好的路径 - 选择的选择 - 就像 GrammarBuilder 上的树结构 - 但我不知道如何继续。

有什么建议么?

4

2 回答 2

0

您可以使用以下方法Choices从一组对象构建一个对象:GrammarBuilderChoices.Add

  // 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);

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

请注意,您可能希望SemanticResultValues在 的每个分支上添加ChoiceSemanticResultKeys在每个级别,Choice这样您就不必在识别后重新解析文本。

于 2013-11-11T21:41:56.047 回答
-1

向后附加语法构建器对象而不是选择对象。选择对象应仅用于最终的树选项(红色,蓝色)和(黑色,白色)。

于 2015-03-10T16:58:06.840 回答