6

我使用 System.Speech 库来识别语音,但它通常识别的非常不同。

SpeechRecognizer_rec = new SpeechRecognizer();
DictationGrammar grammar = new DictationGrammar();

grammar.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(grammar_SpeechRecognized);
_rec.LoadGrammar(grammar);

如何提高识别率?它与语法类有关系吗?

4

3 回答 3

8

您必须限制语音识别引擎使用的模型(基本上是从语音输入到允许的英文文本输出的映射)以获得高置信度输出。你的模型越小,你的结果通常就越好,因为识别器选择错误的机会更少,即两个相似发音词之间的错误词。

这个简化的例子 ie 只能识别从一到三的数字:

SpeechRecognizer rec = new SpeechRecognizer();
Choices c = new Choices();

c.Add("one");
c.Add("two");
c.Add("three");

var gb = new GrammarBuilder(c);
var g = new Grammar(gb);
rec.LoadGrammar(g);
于 2011-03-30T16:25:00.353 回答
6

如果您有能力要求用户进行培训,那肯定会给您带来更好的结果。我自己用过(而且我有口音),它显着提高了我的应用程序识别的准确性。至少您可以自己尝试(控制面板、语音识别、训练您的计算机以更好地理解您)。确实,训练或减少模型(或者当然是在安静的地方使用更好的麦克风的应用程序)是提高结果准确性的唯一方法。

于 2011-03-30T18:55:51.293 回答
3

DictationGrammar 产生了某种奇怪的结果,我尝试了 SpeechRecognitionEngine 的不同属性,但几乎没有成功。试用:SpeechRecognitionEngine.BabbleTimeOut 但请先阅读有关用法以防止错误。

于 2015-10-05T10:05:48.247 回答