как распознавать английские предложения с помощью SAPI5.4 на китайской Windows7

Я использую китайскую Windows 7 с распознаванием речи, работающим нормально, если я использую грамматику для распознавания английских предложений, созданных с помощью объекта Choice. Но объект SpeechRecognitionEngine может возникать только SpeechDetectedEventArgs и не возникает объект Грамматика построен с объектом SrgsDocement. Это мой фрагмент проекта.

    SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine ( System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN"));
            SrgsDocument srgsdoc = new SrgsDocument(./commongreetingGrammar.grxml");
            recognizer.MaxAlternates = 5;
            recognizer.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);
            recognizer.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(recognizer_SpeechDetected);
            recognizer.RecognizeCompleted += new EventHandler<RecognizeCompletedEventArgs>(recognizer_RecognizeCompleted);
            recognizer.LoadGrammar(new Grammar(srgsdoc));

            recognizer.SetInputToDefaultAudioDevice();
            recognizer.RecognizeAsync (RecognizeMode .Multiple);
        }
        catch (Exception ex)
        { Console.WriteLine(ex.Message); }
        Console.ReadKey();
    }

    static void recognizer_SpeechDetected(object sender, SpeechDetectedEventArgs e)
    {
        Console.WriteLine("Detect that someone is speeching");
    }

    static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
    {
        if (e.Error == null)
            Console.WriteLine("complete to load grammar ");
        else
            Console.WriteLine("Fail to load grammar");
    }

    static void recognizer_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
    {
        if (e.Result.Semantics["step"].Value.ToString() == "A1")
        {
            Console.WriteLine("A start to speak:{0}", e.Result.Text);
        }
    }

И есть файл с именем commongreetingGrammar.grxml, который создает объект SrgsDocement с именем srgsdoc (извините за добавление изображения файла .grxml вместо простого текста файла .grxml).

![enter image description here][1]

person user2149605    schedule 08.03.2013    source источник


Ответы (1)


Боюсь, я не совсем ясно изложил свою проблему. Я пытаюсь распознавать английские предложения, используя класс SpeechRecognitionEngine, который является частью SAPI5.4, в китайской Windows7, на которой установлен Microsoft Speech Recognizer 8.0 для Windows (китайский упрощенный - PRC). Используя объект класса Grammar, созданный с помощью объекта класса Choice, объект класса SpeechRecognitionEngine, загруженный грамматикой, может распознавать некоторые простые английские предложения, например, «Как дела», «да», «бросить». Однако, используя объект класса Grammar, созданный с помощью объекта SrgsDocement, созданного с помощью файла .grxml, объект SpeechRecognitionEngine, загруженный грамматикой, не может распознавать некоторые простые английские предложения и может обнаруживать только аудиоввод. Фрагменты кода, как показано ниже.

К счастью, сегодня я нашел решение проблемы. Проблема в том, что я не установил языковой пакет для английского языка и неправильно сконструировал объект Grammar, из-за чего объект SpeechRecognitionEngine не смог распознать английские предложения. Подробности решения я разместил в CodeProject.

person user2149605    schedule 10.03.2013