我正在使用Microsoft Speech SDK来实现使用语音识别的软件。
我使用非常正常的语法为识别引擎提供信息,但是当启动引擎并说出正确的内容时,它会识别我所说的内容,但返回的Result对象的置信度值为-1。
此外,结果中包含的所有SemanticValue对象也具有-1置信度。
我无法在相关的MSDN页面中找到这种结果的含义,实际上只是写了典型的置信度值应介于0和1之间。
-1值是什么意思?它与语法有关吗?
编辑:其他信息:
答案 0 :(得分:2)
在SAPI中,SREngineConfidence试图将来自供应商特定语音引擎的短语置信度传递给独立于引擎的SAPI客户端。 SREngineConfidence在“Microsoft Speech SDK版本5.1 SR引擎供应商移植指南”中描述了一些有趣的行为
http://msdn.microsoft.com/en-us/library/ee431799(v=VS.85).aspx#_Toc503606917说:
可信度得分 要包含的信息 识别结果。在每个短语上 元素有两个信心 引擎可以设置的字段。这些 有信心(三级) 字段和SREngineConfidence (浮点)字段。如果发动机 没有明确设置任何这些 值,SAPI将尝试生产 合理的默认值。它 将产生信心值 平均每个的水平 短语或财产中的单词,和 它将设置SREngineConfidence 值为-1.0。
后来说:
如果未使用此字段,则为 引擎将此置信度设置为-1.0。
可能为您提供一些见解的另一个资源是http://gotspeech.net/forums/thread/3613.aspx。一篇帖子说:
原则上,SREngineConfidence 得分是介于0.0和1.0之间的值 {更高的价值意味着更高 置信度}。但旧版本的 像5.1这样的SR引擎并不尊重这一点 合约,我不认为 这个值真的可以用来 那些引擎。只有Hi,Medium, 在另一个信心中得分低 字段可用。
如果我没记错的话,你需要更多 最近版本的SR引擎就像 Microsoft附带的版本 获得Office 2003或Vista 有意义的数字 SREngineConfidence字段。
编辑:
我认为System.Speech.Recognition实际上是围绕SAPI的.net包装器(参见http://msdn.microsoft.com/en-us/magazine/cc163663.aspx)。我怀疑上面引用的描述置信度为-1的评论可能仍然适用于使用System.Speech。我猜你所看到的-1是同一个问题。
我的理解是XP没有识别器。 Microsoft Office的版本附带了它。所以,我不确定你真正运行的识别器引擎。你安装了Office 2003吗?或者你有像Dragon这样的第三方引擎吗?
你说你安装了识别器5.1。上面的GotSpeech.NET链接说:
但旧版本的SR引擎 像5.1不尊重这份合同 确切地说,我并不认为这个价值 可以真正用于那些引擎。
我建议尝试以下方法:
还要补充一件。以下是从wav文件中识别的简短示例:
SpeechRecognitionEngine myRecognizer = new SpeechRecognitionEngine();
Grammar myGrammar = CreatePizzaGrammar(); // uses GrammarBuilder to create a pizza ordering grammar
myRecognizer.LoadGrammar(myGrammar);
myRecognizer.SetInputToWaveFile("LargeCheese.wav"); // recording of ordering a pizza
RecognitionResult result = myRecognizer.Recognize();
string s = result.Text;
float confidence = result.Confidence;