WP8.1下 Cortana语音命令 VCD文件 设计

Windows Phone8.1下的Cortana,可以通过语音的方式,打开、设置应用,进行页面跳转、执行任务。

我们先要创建VCD(VoiceCommand.xml)文件

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

<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.1">
 <!--1.0下,不含PhraseTopic元素, 不能识别任意的短语;  1.1下没有此限制-->  <CommandSet xml:lang="zh-cn" Name="CommanSet1">  <!--中文-->
    <CommandPrefix>快递</CommandPrefix>  <!--程序名, 无次元素则为默认程序名(这个只是为了说话方便设定的)-->
    <Example>查快递</Example>
  <!-- 以上两个将会显示在Cortana查看更多内-->  

  <!--当上面点入后会进入到说话示例-->
    <!--命令-->

    <Command Name="Command1">      <Example>扫描条形码</Example>      <ListenFor>扫描条形码</ListenFor>      <Feedback>跳转到条形码扫描页面</Feedback>      <Navigate/>    </Command>
    <Command Name="Command2">
      <Example>查询 + {快递名称}</Example>
      <ListenFor>查询{ExpressName}</ListenFor>  
      <Feedback>查询{ExpressName}</Feedback>  
      <Navigate/>
    </Command>

    <Command Name="Command3">
      <Example>查询 + {快递名称} + {运单号}</Example>
      <ListenFor>[查询] {ExpressName} [运单][运单号] {order}</ListenFor> <!-- []表示可有可无的单词或短语 -->
      <Feedback>查询 {ExpressName} 运单号:{order}</Feedback>
      <Navigate/>
    </Command>

    <!--0个或一个-->
    <PhraseList Label="ExpressName"> <!--用大括号 {}引用  同时用于ListenFor、Feedback元素中-->
      <Item>申通快递</Item>
      <Item>圆通快递</Item>
      <Item>顺丰快递</Item>
    </PhraseList>

    <PhraseTopic Label="order" Scenario="Short Message">  <!--可识别任意语句-->
      <Subject>Order</Subject>
    </PhraseTopic>

  </CommandSet>
</VoiceCommands>

上面的VCD文件中3个语音命令功能:

Command1: 识别“快递 扫描条形码”,并跳转到扫描页面。

Command2: 识别“快递 查询{快递名称}”, 并跳转到主页面,将识别到的快递名称;      {快递名称}为申通、圆通、顺丰中一个

Command3: 识别“快递 [查询] {快递名称} [运单][运单号] {自己说的话,这里为运单号}”;      []为可有可无

这三个命令应该可以代表所有了吧。

VCD文件创建好后,就开始初始化VCD文件 主页面中:

using Windows.Media.SpeechRecognition;

protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            if (VoiceCommandManager.InstalledCommandSets.Count == 0)
            {
                StorageFile file = await Windows.ApplicationModel.Package.Current.
                    InstalledLocation.GetFileAsync("VoiceCommand.xml");
                await VoiceCommandManager.InstallCommandSetsFromStorageFileAsync(file);
            }
    }

从Cortana执行语音命令

App.cs中

protected override void OnActivated(IActivatedEventArgs args)
        {
            if (args.Kind == ActivationKind.VoiceCommand)  //应用在语音命令后激活
            {
                VoiceCommandActivatedEventArgs voiceCommandArgs = args as VoiceCommandActivatedEventArgs;
                Frame rootFrame = new Frame();

           string result = voiceCommandArgs.Result.Text;  //识别到的结果
                  if (result.Contains("运单"))                 rootFrame.Navigate(typeof(MainPage), voiceCommandArgs);//传递参数,之后在新页面接受处理
              else if (result.Contains("条形码"))
               rootFrame.Navigate(typeof(BarCodeScanPage));
               else if (result.Contains("查询"))                    rootFrame.Navigate(typeof(MainPage), voiceCommandArgs);
                Window.Current.Content = rootFrame;
                Window.Current.Activate();
            }
        }

这样就完成了,小娜真的很好用. 以后的应用应该很多都会支持语音命令吧。

时间: 2024-10-12 09:26:56

WP8.1下 Cortana语音命令 VCD文件 设计的相关文章

ubuntu系统下使用rm命令删除文件

一 ubuntu系统下使用rm命令删除文件,如何恢复? 如果是ext3/ext4文件系统,可以使用extundelete工具恢复. $ df -hT 文件系统       类型      容量  已用  可用 已用% 挂载点 /dev/sda1    ext4      455G  366G   66G   85% / 参考文章: 1. http://longgeek.com/2012/11/25/extundelete-recovery-for-linux-ext2-ext3-ext4-rm-

Windows phone 8.1应用集成cortana语音命令

微软推出小娜已经有一段时间了,最近恰好在研究其用法,就随便写点记录一下自己的心得. 在研究时参考了@王博_Nick的博客:http://www.cnblogs.com/sonic1abc/p/3868729.html,在此先表示感谢. 闲话不多说,让我们开始吧. 要将语音命令功能添加到应用中需要三个步骤: 1. 创建语音命令定义 (VCD) 文件.这是一个 XML 文档,可以定义在激活应用时用户可说出以启动操作的所有语音命令. 首先向项目中添加一个新的VCD文件, 创建的新文件如下: 以下对各个

linux下通过cat 命令新增文件

之前编辑文件都是用vim 命令,最近看视频学到一个用cat > 进行交互输入,感觉这样更方便 [email protected]:/home/koyaku# script create_file_use_cat.txtScript started, file is create_file_use_cat.txt[email protected]:/home/koyaku# cat createfile.txtcat: createfile.txt: No such file or directo

linux下使用split命令分割文件且文件号从1开始

Linux里切割大文件的命令如下: split [OPTION] [INPUT [PREFIX]] 选项如下: -a : 指定后缀长度 -b : 每个文件多少字节 -d : 使用数字后缀而不是字母 -l : 指定每个文件的行数 2.比如我想让后缀长度为 2,即 -a 2.用数字后缀 -d.每个文件 10M,即 -b 10m.命令可以设计如下:split -a 2 -d -b 10m /var/lib/mysql/general.log nowamagic nowamagic00 nowamagi

WP8微信5.3开始内测 支持Cortana语音 两微破冰了?

WP版微信v5.3内测版昨发布了,进行了一些小幅升级,最意外的是原生支持WP8.1版Cortana语音命令操作.要知道微软的聊天机器人“小冰”在微信上存在不到4天,就被微信全面封杀退出,现在微信又内测支持Cortana语音,两微是要破冰的节奏吗? WP版微信 v5.3内测版更新日志: 1.两分钟内发出的最后一条消息可撤回 2.转账给朋友 3.零钱包 4.选多图可以一起原图发送 5.视频通话界面做优化 6.删除群聊前,如果这个群聊没保存到通讯录,会先给提示 7.打招呼和通过加好友验证的时候,可以先

【Win10 应用开发】集成语音命令

原文:[Win10 应用开发]集成语音命令 记得老周以前在写WP8应用开发的文章时,曾经写过语音命令集成的文章,后来8.1的时候“小娜”问世,但考虑到其变化不大,故老周没有补写相应的文章. 今天,老周打算补一下Win 10通用应用开发中,有关语音命令集成相关的内容.虽然还是一脉相承,大的变化没有,不过Win10 sdk在语音命令定义文件中添加了新内容,而且现在不仅能在手机应用中加入语音集成,在面向PC和板子的应用中也能如愿,因为应用程序已经通用. 同理,在开始之前,老周仍然先给大家讲个故事. 话

Win10/UWP开发—使用Cortana语音与App后台Service交互

上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比调用前台的App,调用后台任务有个有点就是App不用被启动即可为用户提供服务. 要想使用Cortana调用App后台任务,首先我们需要定义VCD文件,我们依旧使用上篇中的代码,让它支持Cortana调用后台任务. 创建后台任务 新增一个[Windows运行时组件]项目,暂时起名叫做:XiaoMiBa

linux下修改rm命令防止误删除

前言:相信很多朋友都遇到过在linux下用rm命令误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾.那么怎么防止这种情况发生呢?当然是有方法的,我们可以写一个shell脚本,改变一下rm命令的作用. 第一步: 先在home目录下创建一个叫username名字的目录(当然名字可以自定义),具体命令为:sudo mkdir username(自定义的名字) 这时候记得要用命令:sudo chmod 777 username(自定义的名字)来改变一下你的目录权限,因为在home目录下刚创建的目录是没

cp命令覆盖文件时不用按Y来确认的方法

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖.文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法: # cp aaa/* /bbb[复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录.] # cp -r aaa/* /bbb[这次依然需要按Y来确认操作,但是没有忽略子目录.] # cp -r -a aaa/*