【问题标题】:Improve Speech Recognition, C#提高语音识别,C#
【发布时间】:2011-03-30 16:16:23
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# speech-recognition speech-to-text


    【解决方案1】:

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

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

    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);
    

    【讨论】:

    • 但我需要识别用户所说的内容。
    • @Kaan:通常对于呼叫中心语音识别,模型仅限于特定选择,即“我想要我的蛋糕”或“也吃它”,您必须构建自定义语法以允许不同的组合。如果您想坚持使用标准模型,则无法提高准确性 - 除非您要根据特定说话者(或口音)重新训练模型,这通常是不切实际甚至不可行的。
    【解决方案2】:

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

    【讨论】:

    • 你能以编程方式训练语音识别引擎吗?
    • 看起来您可以使用 SAPI。
    • @NuWin 您能否提供一些指示,说明如何使用 SAPI 以编程方式训练语音识别引擎?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多