在 system.speech 中识别数字的问题?

Posted

技术标签:

【中文标题】在 system.speech 中识别数字的问题?【英文标题】:problem in recognition of numbers in system.speech? 【发布时间】:2011-06-27 12:56:12 【问题描述】:

speech and i 添加了 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;

但是当我说话时,输出有时会变得不同,当我说 2 时会变成 8,最糟糕的是当我打开风扇说话时,即使是很小的声音也无法识别。那么这对普通客户有用吗?当客户说密码时,它必须捕获密码并将其保存在文本文件中..这对我有用吗..

如果它对我来说正确识别 1 到 10 就足够了?任何人都可以在这种情况下帮助我。 当用户说话时,我可以显示进度条或任何仪表吗? 我可以在我的语音识别中使用英语 - 英国文化吗? 我们有任何第三方 dll 吗?

问候 布万

【问题讨论】:

语音识别在嘈杂的环境中失败。减少噪音或失败。 好的..我假设我减少了噪音......它会正确显示数字吗?用户说话时的进度条怎么样?这样可以实现进度条吗? 你心目中的进度条是什么样的? 【参考方案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);

【讨论】:

漂亮而简单。为什么要在语法上设置优先级?如果引擎中只加载了一种语法,它会做任何事情吗? 请使用此功能,并在另一条评论中告诉我们。我写了这个解决方案很长时间,我真的不记得了......

以上是关于在 system.speech 中识别数字的问题?的主要内容,如果未能解决你的问题,请参考以下文章

System.speech 应用程序的系统要求

C#中的System.Speech命名空间初探

禁用内置语音识别命令?

system.speech api 是不是支持以 c++ 语言进行开发?

如何在 Unity 中使用 System.Speech?

C#的winform程序,引用了system.speech.dll,在本地win7,32机器正常运行,64位就报错