如何在 MS Speech 中使用 ARPA 文件?Microsoft Speech Platform 11 Recognizer 的文档暗示可以从 ARPA 文件编译语法。
我能够编译一个 ARPA 文件——例如,微软提供的小例子——使用以下命令行:
CompileGrammar.exe -In stock.arpa -InFormat ARPA
我可以在以下测试中使用生成的 CFG 文件:
using Microsoft.Speech.Recognition;
// ...
using (var engine = new SpeechRecognitionEngine(new CultureInfo("en-US")))
{
engine.LoadGrammar(new Grammar("stock.cfg"));
var result = engine.EmulateRecognize("will stock go up");
Assert.That(result, Is.Not.Null);
}
此测试通过,但请注意它使用EmulateRecognize()
. 当我切换到使用实际的音频文件时,如下所示:
using (var engine = new SpeechRecognitionEngine(new CultureInfo("en-US")))
{
engine.LoadGrammar(new Grammar("stock.cfg"));
engine.SetInputToWaveFile("go-up.wav");
var result = engine.Recognize();
}
结果始终为空,并且测试失败。
微软非常明确地声明它是受支持的,但即使是非常简单的示例似乎也不起作用。我究竟做错了什么?