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