lanying56123 发表于 2015-5-22 11:55:22

Windows phone 8 Voice Command 语音命令浅析

  Windows phone 8 这个新平台带给我们的惊喜还是很多的,其中内建支持中文语音命令,这点让人印象深刻.
  我们可以通过编码为WP8程序添加语音交互的功能.比如场景如下:
  拿人人客户端举例:用户可以任意界面长按home,然后对着手机说:"人人 发状态"那么这种场景下如果微博内部进行了处理,便可以相应并进入状态发布页面。如此是很棒的用户体验。那么我们要如何处理呢?
  下面我们来模拟下这个场景(事实上人人客户端确实支持语音命令:-))
  实现   
  1、配置语音控制文件
  
  需要配置如下xml文件:







人人
人人 发状态


人人 发状态
{Action}
正在 {Action}...




发状态
状态



  我们分别看下文件中的结点对应的含义:
  首先xml:lang这里由于我们要识别中文命令,那么需要将语言设置为zh-cn
  
  CommandPrefix:命令的前缀 语音命令由前缀和具体命令组成
  Example: 命令的例子,这个将出现在如下界面表示能识别的语音的例子
  Command:一个command标签代表一个识别的命令
  ListenFor:这个里面使用了{Action} Action在后面的PhraseList里面有定义,表明要识别
  的命令为下面之一
  FeedBack:这个是用户说完话之后系统说给用户的一段话
  Navigate Target 故名思议,就是识别命令后要导航的程序内的目的地址(注意下由于我们的配置文件是xml类型所以当导航参数多的时候需要对&进行转义)
  ParaseList:前面提到的要识别的命令,我们可以在其中加入任何想识别的文字比如走你
  
  对这个文件的简单解释就到这里,这种配置文件的结构,我们在客户端内,只需要将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
  
  
  
页: [1]
查看完整版本: Windows phone 8 Voice Command 语音命令浅析