C# 允许使用语音识别引擎拼写字母

C# 允许使用语音识别引擎拼写字母,c#,speech-recognition,speech-to-text,C#,Speech Recognition,Speech To Text,我目前正在开发一个语音识别应用程序。为此,我要求允许用户拼写特定单词的字母,例如名称。我尝试使用grammarbuilder将字母表添加为选项,但它只能识别一个特定的字母 下面是我的代码 public static class GrammarManager{ public static GrammarBuilder getAlphabet() { Settings.CultureInfo = "en-GB";

我目前正在开发一个语音识别应用程序。为此,我要求允许用户拼写特定单词的字母,例如名称。我尝试使用grammarbuilder将字母表添加为选项,但它只能识别一个特定的字母

下面是我的代码

    public static class GrammarManager{
            public static GrammarBuilder getAlphabet()
            {
                Settings.CultureInfo = "en-GB";

                GrammarBuilder dictaphoneGB = new GrammarBuilder();
                dictaphoneGB.Culture = new System.Globalization.CultureInfo(Settings.CultureInfo);
                dictaphoneGB.Append(new Choices("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"));

                return dictaphoneGB;
            }
    }

public class SpeechEngine{
        static System.Speech.Recognition.SpeechRecognitionEngine recognizer = null;
        private void initializeEmulator()
        {
            GrammarBuilder builder = new GrammarBuilder();
            builder.AppendDictation();

            recognizer = new System.Speech.Recognition.SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-GB"));
            recognizer.RequestRecognizerUpdate();
            recognizer.LoadGrammar(new Grammar(GrammarManager.getAlphabet()));
            recognizer.SpeechRecognized += recognizer_SpeechRecognized;
        }

        public void startEmulatorRecognition(string word)
        {
            recognizer.EmulateRecognizeAsync(word);
        }
}
我通过启动一个特定的字符串parametr来调用startEmulateRecognition()方法。现在,当我将诸如“A”、“G”或“B”之类的值传递给特定的方法时,它会被识别。但当我通过“ABC”或“ABC”或“gogogle”之类的单词时,它们就不会被识别

如果有人能给我推荐一种方法来实现这一点,允许我识别拼写中的单词,如“gogogle”等,我将不胜感激


提前谢谢

您需要为重复使用另一个GrammarBuilder和构造函数来构造与重复序列匹配的语法:

private void lettterGrammar() {
    GrammarBuilder letterGb = new GrammarBuilder();
    Choices letterChoices = new Choices("A", "B", "C", "D);
    GrammarBuilder speellingGb = new GrammarBuilder(
                 (GrammarBuilder)letterChoices, 1, 50);
    Grammar grammar = new Grammar(spellingGb);
}