【问题标题】:SpeechRecognitionEngine grammar with wildcard带通配符的 SpeechRecognitionEngine 语法
【发布时间】:2014-03-15 23:10:47
【问题描述】:

我们想为语法使用一个 XML 文件,列出我们系统的所有命令,

但是,其中一个命令将是 “查找用户 xxxxxx”,其中 xxxxx 将是唯一编号。

如果语法 xml 文件中有办法创建此“通配符/搜索项”

【问题讨论】:

  • 您必须为您的用户存储中的每个用户唯一编号生成命令。
  • 不幸的是,这是不可能的,因为这些可以随时添加/删除。还有其他方法可以实现吗?
  • 您必须跟踪添加/删除并纠正您的语法。
  • 即使可能有数百个数千个?
  • 这只是 cmets 不是确切的答案,但我认为这是唯一的方法。

标签: c# .net speech-recognition grammar


【解决方案1】:

尝试在您的 grxml 文件中结合使用两个规则。

接受单个数字的第一条规则:

  <rule id="SmallNum" scope="public">
    <one-of>
      <item>One</item>
      <item>Two</item>
      <item>Three</item>
      <item>Four</item>
      <item>Five</item>
      <item>Six</item>
      <item>Seven</item>
      <item>Eight</item>
      <item>Nine</item>
      <item>Zero</item>
    </one-of>
  </rule>

从指定数量的号码建立帐号的第二条规则:

  <rule id="AccountNumber" scope="public">
    <item repeat="0-1">AccountNumber</item>
    <item   repeat="3">
      <ruleref uri="#SmallNum"/>
    </item>
  </rule>

【讨论】:

    【解决方案2】:

    你的要求是可能的......有多种方法可以做到这一点......

    更好的方法是使用机器学习方法编写某种智能,但我怀疑你不想走这么远,所以我建议“教授”数字听写并使用 SpeechHypothesized 事件(我在另一篇文章中对此发表评论,因为我怀疑你会需要它)来组合单词。

    对你也有好处:

    http://msdn.microsoft.com/en-us/library/ms873284.aspx(建立知识)

    http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognitionengine.speechhypothesized(v=vs.110).aspx

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多