我对C#和微软语音平台都比较陌生,但我正在开发一个服务器应用程序,它需要转录免费的口述。MS Speech Platform SDK看起来很完美,可以在服务器上工作,除非我在GrammarBuilder中引用了AppendDictation()方法。
我使用的是Microsoft Speech Platform SDK11,如果我定义了一个语法,该应用程序工作得很好,但是当我添加AppendDictation()时,我遇到了这个错误:
Cannot find grammar referenced by this grammar.甚至文档中的这个示例似乎也失败了:
GrammarBuilder startStop = new GrammarBuilder();
GrammarBuilder dictation = new GrammarBuilder();
dictation.AppendDictation();
startStop.Append(new SemanticResultKey("StartDictation", new SemanticResultValue("Start Dictation",true)));
startStop.Append(new SemanticResultKey("DictationInput", dictation));
startStop.Append(new SemanticResultKey("StopDictation", new SemanticResultValue("Stop Dictation", false)));
Grammar grammar=new Grammar(startStop);
grammar.Enabled=true;
grammar.Name=" Free-Text Dictation ";
_recognizer.LoadGrammar(grammar);奇怪的是,如果我将LoadGrammar改为LoadGrammarAsync,语法会加载(或者至少会调用事件处理程序),但是识别器会失败,并显示以下错误:
Error: At least one grammar must be loaded before doing a recognition.我读到过该平台的服务器版本不支持口述,但奇怪的是它附带了一个根本不能工作的方法。有没有人设法让听写语法在服务器上工作?我做错了什么?
非常感谢
发布于 2012-03-01 02:01:40
对于将来可能遇到这种情况的任何人--我已经与Microsoft来回发送了电子邮件,并最终收到了以下回复:
SAPI托管接口(Microsoft.Speech和System.Speech)构建在原生
接口之上。这些接口对于服务器引擎和桌面引擎都是相同的。
但是引擎本身负责实现口述,而服务器引擎不这样做。因此,当您加载语法时,调用将失败。
不是我想要的答案,但它确实解释了这一点。
发布于 2012-07-05 12:01:15
如果你使用System.Speech,你可以用_recognizer.LoadGrammar(new DictationGrammar());加载你的语法,它会工作的很好。识别效果还不错,但必须使用16 The波形文件或其他兼容的波形文件配置。遗憾的是,Microsoft.Speech不支持DictationGrammar()。
https://stackoverflow.com/questions/9347346
复制相似问题