проблема в распознавании чисел в system.speech?

речь, и я добавил grmmar, который обнаруживает только такие числа

            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 для этого?

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


person Bhuvan    schedule 27.06.2011    source источник
comment
Распознавание речи не работает в шумной обстановке. Уменьшите шум или потерпите неудачу.   -  person spender    schedule 27.06.2011
comment
хорошо .. я предполагаю, что я уменьшил шум ... будет ли он правильно отображать числа? Как насчет индикатора выполнения, когда пользователь говорит? возможно ли реализовать индикатор выполнения?   -  person Bhuvan    schedule 27.06.2011
comment
Какой индикатор выполнения вы имели в виду?   -  person BrokenGlass    schedule 27.06.2011
comment
индикатор прогресса в том смысле, что мне просто нужен аудиометр, когда пользователь говорит, что я вижу в диктофоне   -  person Bhuvan    schedule 27.06.2011


Ответы (1)


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

  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);
person Oz Radiano    schedule 01.07.2011
comment
Красиво и просто. Почему вы ставите приоритет на грамматику? Будет ли это что-то делать, если в движке загружена только одна грамматика? - person Drew Noakes; 07.03.2015
comment
Пожалуйста, поэкспериментируйте с этой функцией и дайте нам знать в другом комментарии. Я написал это решение очень давно, и я действительно не помню... - person Oz Radiano; 19.03.2015