Windows phone 8 Voice Command 语音命令浅析

Windows phone 8 这个新平台带给我们的惊喜还是很多的,其中内建支持中文语音命令,这点让人印象深刻.

我们可以通过编码为WP8程序添加语音交互的功能.比如场景如下:

拿人人客户端举例:用户可以任意界面长按home,然后对着手机说:"人人 发状态"那么这种场景下如果微博内部进行了处理,便可以相应并进入状态发布页面。如此是很棒的用户体验。那么我们要如何处理呢?

下面我们来模拟下这个场景(事实上人人客户端确实支持语音命令:-))

实现   

1、配置语音控制文件

   

需要配置如下xml文件: 

<?xml version="1.0" encoding="utf-8"?>

   

<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.0">

<CommandSet xml:lang="zh-cn">

<CommandPrefix>人人</CommandPrefix>

<Example> 人人 发状态 </Example>

   

<Command Name="Navigate">

<Example> 人人 发状态 </Example>

<ListenFor> {Action} </ListenFor>

<Feedback> 正在 {Action}... </Feedback>

<Navigate Target="/Views/EditPage.xaml?Type=2&amp;from=voiceCommand"/>

</Command>

 

<PhraseList Label="Action">

<Item> 发状态 </Item>

<Item> 状态 </Item>

</PhraseList>

</CommandSet>

</VoiceCommands>  

我们分别看下文件中的结点对应的含义:

首先xml:lang这里由于我们要识别中文命令,那么需要将语言设置为zh-cn

   

CommandPrefix:命令的前缀 语音命令由前缀和具体命令组成

Example: 命令的例子,这个将出现在如下界面表示能识别的语音的例子

Command:一个command标签代表一个识别的命令

ListenFor:这个里面使用了{Action} Action在后面的PhraseList里面有定义,表明要识别

的命令为下面之一

FeedBack:这个是用户说完话之后系统说给用户的一段话

Navigate Target 故名思议,就是识别命令后要导航的程序内的目的地址(注意下由于我们的配置文件是xml类型所以当导航参数多的时候需要对&进行转义)

ParaseList:前面提到的要识别的命令,我们可以在其中加入任何想识别的文字比如<Item>走你</Item>

   

对这个文件的简单解释就到这里,这种配置文件的结构,我们在客户端内,只需要将VoiceCommand的处理方式和Second Tile保持一致即可

   

2、添加此文件到工程中(这步简单不用说了)

3、在客户端内添加初始化命令的代码

await VoiceCommandService.InstallCommandSetsFromFileAsync(new Uri("ms-appx:///Voice.xml",UriKind.Absolute));

此处有一点需要注意,这里需要使用上面格式的绝对路径,否则报错,具体原因是因为Uri类型问题(有兴趣的朋友可以自己找下先关文档)

   

另附上msdn对此处的文档:

http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/jj206959(v=vs.105).aspx

   

如此我们便轻松添加语音控制到我们的程序,对于更高的业务需求本文没有涉及,只是让大家简单的了解下windows phone 8 的语音控制

如有问题欢迎与我留言交流,或者加入QQ群:182659848

   

   

   

posted @ 2013-01-24 11:16  孤狼晖  阅读(2000)  评论(2编辑  收藏  举报