Speech.Recognition GrammarBuilder / Choices Tree Structure

时间:2013-11-11 01:58:17

标签: c# tree speech-recognition text-to-speech

在玩C#的语音识别时,我偶然发现了一个有效的GrammerBuilder with Choices(更具体地说,Choices of Choices)的路障。

IE考虑以下逻辑命令。

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

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

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

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:-1)

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