zoukankan      html  css  js  c++  java
  • 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

       

       

       

  • 相关阅读:
    程序员第一定律:关于技能与收入
    Android——全屏显示的两种方式
    Android与JavaScript方法相互调用
    IT职场人生:找谁占卜
    Linux 2.6.23开始使用CFS(complete fair schedule),线程Priority不再有效
    如何查看一份linux kernel source的版本?
    tar解包的时候如何exclude一些目录
    rsync通过SSH来同步两台机器上的内容
    ArchLinux下配置TPLink WN550G PCI网卡为无线AP
    配置Linux下的时间服务器,让一批机器和一台机器时间同步
  • 原文地址:https://www.cnblogs.com/tianhonghui/p/2874551.html
Copyright © 2011-2022 走看看