2016-06-09 35 views
1

工作时试图实现VoiceCommands,我用这一套:UWP语音指令集不能与多个短语

<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“搜索{}搜索”,它正确返回正确的结果。但是为了实现这个功能,我需要在一个命令中使用2个(甚至3个)短语。

看来UWP只识别最后一个短语。我是否正确或应该可以在ListenFor元素中使用多个短语?

更新2016年6月13日:

我创建了一个repro

Cortana Bug repro screenshot

+1

我不能重现你的问题,你能分享一个样本吗? –

+0

@ GraceFeng-MSFT我已添加repro –

回答

2

海尔特,它看起来像你使用的是Windows内幕建设14342.您遇到的问题是由于在建14341引入了错误,这应固定在构建> = 14371.

希望帮助。

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而感到困惑。

+0

感谢您的回复。我一直在测试这个,并且只能得到最后一个元素。 –