在玩C#的语音识别时,我偶然发现了一个有效的GrammerBuilder with Choices(更具体地说,Choices of Choices)的路障。
IE考虑以下逻辑命令。
一种解决方案是“硬编码”语音线的每个组合并将它们添加到GrammarBuilder(即“SET LEFT COLOR RED”和“SET RIGHT CLEAR”,但是,这将很快超出1024的限制,尤其是在处理数字组合时。
另一种解决方案是将所有“列”附加为“选择”(并在“识别”时过滤掉不正确的路径,但这似乎是处理器繁重且不必要。
中间地带,似乎是最佳路径 - 选择选择 - 就像GrammarBuilder上的树状结构 - 但我不知道如何继续。
有什么建议吗?
答案 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
的每个级别Choice
和SemanticResultValues
的每个分支上添加SemanticResultKeys
,这样您就不必重新分析识别后的文字。
答案 1 :(得分:-1)
向后添加语法构建器对象而不是选择对象。选择对象应仅用于最终树选项(红色,蓝色)和& (黑色,白色)。