bool CreateNumberJSGF(string rulename, CMUSphinx_GrammarDict cgd) { List<string> digit_single = new List<string>(); digit_single.Add("one"); digit_single.Add("two"); digit_single.Add("three"); digit_single.Add("four"); digit_single.Add("five"); digit_single.Add("six"); digit_single.Add("seven"); digit_single.Add("eight"); digit_single.Add("nine"); List<string> digit_tens = new List<string>(); digit_tens.Add("twenty"); digit_tens.Add("thirty"); digit_tens.Add("fourty"); digit_tens.Add("fifty"); digit_tens.Add("sixty"); List<string> digit_special = new List<string>(); digit_special.Add("zero"); digit_special.Add("ten"); digit_special.Add("eleven"); digit_special.Add("twelve"); digit_special.Add("thirteen"); digit_special.Add("fourteen"); digit_special.Add("fifteen"); digit_special.Add("sixteen"); digit_special.Add("seventeen"); digit_special.Add("eighteen"); digit_special.Add("nineteen"); StringBuilder bld_twodigit = new StringBuilder(); cgd.JSGFRuleStart("<"+rulename+"_twodigit>", bld_twodigit); cgd.JSGFRuleAddChoicesStart(bld_twodigit, digit_tens); cgd.JSGFRuleAddChoicesEnd(bld_twodigit); cgd.JSGFRuleAddChoicesStart(bld_twodigit, digit_single); cgd.JSGFRuleAddChoicesEnd(bld_twodigit); cgd.JSGFRuleEnd("<"+rulename + "_twodigit>", bld_twodigit); StringBuilder bld_onedigit = new StringBuilder(); cgd.JSGFRuleStart("<"+rulename + "_onedigit>", bld_onedigit); cgd.JSGFRuleAddChoicesStart(bld_onedigit, digit_single); cgd.JSGFRuleAddChoicesMore(bld_onedigit, digit_tens); cgd.JSGFRuleAddChoicesMore(bld_onedigit, digit_special); cgd.JSGFRuleAddChoicesEnd(bld_onedigit); cgd.JSGFRuleEnd("<"+rulename + "_onedigit>", bld_onedigit); StringBuilder bld = new StringBuilder(); cgd.JSGFRuleStart("<"+rulename+">", bld); cgd.JSGFRuleAddChoicesStart(bld, new List<string>(new string[] { "<"+rulename + "_onedigit>", "<"+rulename + "_twodigit>" })); cgd.JSGFRuleAddChoicesEnd(bld); cgd.JSGFRuleEnd("<"+rulename+">", bld); return true; }