在尝试实现VoiceCommands时,我使用了这个集合:
<Command Name="searchCommand">
<Example>Search for UWP on Bing </Example>
<ListenFor RequireAppName="BeforeOrAfterPhrase"> search for {search} on {service} </ListenFor>
<Feedback>Searching for {search} on {service}</Feedback>
<Navigate />
</Command>
我添加了这些短语(服务在代码中动态更新,这一切都正常):
<PhraseList Label="service">
<!-- Dynamic -->
</PhraseList>
<PhraseTopic Label="search" Scenario="Search">
<!-- Dynamic -->
</PhraseTopic>
现在,当我使用此命令时,API似乎只识别最后短语。因此,如果我使用3个短语,则只会识别最后一个短语。
Command: 'Search for UWP on Bing'
Shows up as: 'Searching for {search} on Bing'
TextSpoken value: 'Search for UWP on Bing' (so the voice to text is working correctly)
当我在ListenFor
中使用“搜索{search}”时,它会正确返回正确的结果。但是对于这个功能,我正在实现我在一个命令中需要2个(甚至3个)短语。
似乎UWP只识别最后一个短语。我是否正确或是否可以在ListenFor
元素中使用多个短语?
2016年6月13日更新:
我创建了repro:
答案 0 :(得分:2)
Geert,看起来你正在使用Windows Insider build 14342.你看到的问题是由于build 14341中引入了一个错误,应该在build&gt; = 14371中修复。
希望有所帮助。
答案 1 :(得分:0)
没有UWP识别ListenFor
中的多个短语我猜你需要多个ListenFor
<Command Name="searchCommand">
<Example>Search for UWP on Bing </Example>
<ListenFor RequireAppName="BeforeOrAfterPhrase"> search for {search} on {service} </ListenFor>
<ListenFor RequireAppName="BeforeOrAfterPhrase">search for {search}</ListenFor>
<ListenFor RequireAppName="BeforeOrAfterPhrase">search for on {service}</ListenFor>
<Feedback>Searching for {search} on {service}</Feedback>
<Navigate />
</Command>
通过这种方式,您可以覆盖所有组合。我猜Cortana因为只有一个ListenFor而感到困惑。