使用Microsoft.Speech构建良好的语法

时间:2014-09-08 15:30:28

标签: c# speech-recognition grammar

我在使用Microsoft.Speech构建语法时遇到了一些问题,以构建葡萄牙语语法。

我手动构建了一个语法,但还不够好。我听说我可以在System.Speech中使用听写语法来构建我的语法,但似乎它不支持葡萄牙语。

我的程序必须能够识别一些音频文件。这些音频文件的声音非常清晰(声音总是相同的)。声音包括一些字母,但我不知道如何建立一个好的语法。

有没有办法使用Microsoft.Speech以葡萄牙语建立一个字母语法?

一些样本:

private static readonly Dictionary<string, string> _lettersGrammar = new Dictionary<string, string>() 
    {             
        { "a",       "a" },
        { "bê",      "b" },
        { "cê",      "c" },
        { "dê",      "d" },
        { "é",       "e" },
        { "efe",     "f" },
        { "gê",      "g" },
        { "agá",     "h" },
        { "i",       "i" },
        { "jota",    "j" },
        { "cá",      "k" },
        { "ele",     "l" },
        { "eme",     "m" },
        { "ene",     "n" },
        { "ó",       "o" },
        { "pê",      "p" },
        { "quê",     "q" },
        { "erre",    "r" },
        { "esse",    "s" },
        { "tê",      "t" },
        { "u",       "u" },
        { "vê",      "v" },
        { "dáblio",  "w" },
        { "xis",     "x" },
        { "ípsilon", "y" },
        { "zê",      "x" }
    };

recognizer = new SpeechRecognitionEngine (new CultureInfo("pt-BR"));
recognizer.LoadGrammar (new Grammar (new GrammarBuilder (new Choices (_lettersGrammar.Keys.ToArray ()))) { Name = "Letters_Grammar" });

recognizer.SpeechRecognitionRejected += SpeechRecognitionRejected;
recognizer.SpeechRecognized          += SpeechRecognized;
recognizer.RecognizeCompleted        += RecognizeCompletedHandler;

有什么建议吗?

非常感谢你们!

1 个答案:

答案 0 :(得分:2)

我注意到的一件事是你没有设置GrammarBuilder的{​​{3}}属性。 Culture的{​​{1}}属性必须与GrammarBuilder匹配,否则您将无法获得任何认可。

Microsoft.Speech识别引擎不支持听写,因此不能选择。

您提供的语法与一个字母匹配。如果您想要重复,则需要添加中间Culture