当语法文件很大时,Grammar.Append(GrammarBuilder,Int32,Int32)无法正常工作

时间:2013-11-28 19:00:17

标签: c# speech-recognition grammar sapi

场景1: 文本文件包含5行文本。最大值= 4 如果我说,"多人游戏",它会说"多人游戏" (完美地运作)

因此,如果最大值是4,我可以说最多4个字

场景2: 文本文件包含500行文本。最大值= 4 如果我说,"多人游戏",它什么都不会说(没有用)

如果我说,"多人游戏多人游戏",它会说"多人游戏多人游戏" (完美地运作)

因此,如果我将其设置为4,那么它必须正好是4个单词。不像在Scenerio 1中,它最多可以是4个单词而不是4个单词

    private static Grammar RFC_Grammar(int lineNum, string fileName, string grammarName, int maximum)
    {
        string[] choiceArray = File.ReadAllLines("C:\\Users\\Hehe\\Desktop\\" + fileName);
        Choices choices = new Choices(choiceArray );

        GrammarBuilder choicesGrammar = new GrammarBuilder();
        choicesGrammar.Append(choices,0,maximum);

        Grammar grammar = new Grammar(choicesGrammar);
        grammar.Name = grammarName;

        return grammar;
    }

1 个答案:

答案 0 :(得分:0)

在一个选项中使用一组500个单词,您可能会遇到识别器的限制,以正确消除各种选择之间的歧义。

语音识别器不需要详细介绍,就可以将音素序列与可能的单词进行匹配。

如果序列被认为“太不可能”,则将其修剪;如果音频序列进入但不会导致足够高的置信度,则拒绝整个识别(并且生成“错误识别”事件)。

单词的传播范围越广,个人信心就越低(实际上,更窄单词的传播,那么信心可能会不合理地高,导致误报肯定)

有了这么多单词,你可能需要某种听写识别模型(可以实现,但它要复杂得多)。