проблема с распознаванием чисел в system.speech? - PullRequest
2 голосов
/ 27 июня 2011

речь, и я добавил грамматику, которая обнаруживает только такие числа, как это

            SpeechRecognitionEngine RecognitionEngine = new SpeechRecognitionEngine(new CultureInfo("en-US", true));

            // Created Grammar For only Numbers 1 to 10
            var NumberChoice = new Choices();
            for (var i = 0; i <= 10; i++)
            {
                NumberChoice.Add(i.ToString());
            }
            var NumGrammarBuilder = new GrammarBuilder(NumberChoice);
            var NumGrammar = new Grammar(NumGrammarBuilder);
            RecognitionEngine.LoadGrammar(NumGrammar);

            RecognitionEngine.SetInputToDefaultAudioDevice();
            RecognitionResult Result = RecognitionEngine.Recognize();

            txt_vtc.Text = Result.Text;

Но когда я говорю, выходные данные меняются несколько раз, когда я говорю два, он получает восемь, и самое худшее, когда явключите мой вентилятор и говорите, его не узнают даже при слабом звукетак это полезно для обычного клиента?Когда клиент говорит «пин», он должен захватить пин-код и сохранить его в текстовом файле ... это полезно для меня ..

более чем достаточно, если он распознает от 1 до 10 правильно для меня?Кто-нибудь может мне помочь в этом сценарии.я могу показать индикатор выполнения или любой индикатор, когда пользователь говорит?Могу ли я использовать английский - культура Великобритании для распознавания речи?У нас есть сторонние dll для этого?

С уважением, Бхуван

1 Ответ

2 голосов
/ 01 июля 2011

вы можете попробовать этот пример кода, чтобы преодолеть вашу проблему

  SpeechRecognitionEngine rec = new SpeechRecognitionEngine();
  var c = new Choices();
  for (var i = 0; i <= 100; i++)
      c.Add(i.ToString());
  var gb = new GrammarBuilder(c);
  var g = new Grammar(gb);
  g.Priority = 127;
  rec.SetInputToDefaultAudioDevice();

  rec.LoadGrammar(g);
  rec.RecognizeAsync(RecognizeMode.Multiple);
...