0

我使用 SpeechRecognizerUI 来读取用户的语音输入。我期望得到美元金额,所以 200 美元或 20.32 美元或 0.43 美元就是一个例子。但是,后端的响应总是像“20 点 32”或“20 点 32”或“零点四十五”。有没有更好的方法来巧妙地使用 API,以便我可以得到“200、20.32、0.45”?谢谢!

4

2 回答 2

2

您可以尝试查看替代项,但除此之外,我看不到任何方法可以控制听写语法中的文本规范化。

于 2013-10-08T17:02:24.843 回答
1

您可以将自己的语法加载到 SpeechRecognizer,如下所述:为 Windows Phone 8 添加、加载和预加载语法

在您的情况下,SRGS 语法将很有用。

您应该像这样创建语法(我从 Microsoft Speech示例中得到这个):

<grammar version="1.0" xml:lang="en-US" mode="voice" root="amount"
xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0">

<rule id="amount">
  <item repeat="1-3">
    <ruleref uri="#number"/>
  </item>

  <item repeat="0-1">
    <ruleref uri="#dot"/>
  <item>

  <item repeat="0-2">
    <ruleref uri="#number"/>
  </item>
</rule>

<rule id="dot">
  <one-of>
    <item> point <tag> out = "." ; </tag> </item>
    <item> dot <tag> out = "." ; </tag> </item>
  </one-of>  
</rule>

<rule id="number">
  <one-of>
    <item> one <tag> out = 1; </tag> </item>
    <item> two <tag> out = 2; </tag> </item>
    <item> three <tag> out = 3; </tag> </item>
    <item> four <tag> out = 4; </tag> </item>
    <item> five <tag> out = 5; </tag> </item>
    <item> six <tag> out = 6; </tag> </item>
    <item> seven <tag> out = 7; </tag> </item>
    <item> eight <tag> out = 8; </tag> </item>
    <item> nine <tag> out = 9; </tag> </item>
    <item> ten <tag> out = 10; </tag> </item>
  </one-of>
</rule>

</grammar>
于 2013-10-10T10:36:40.380 回答