xml  code

----------------------------------------------------

<Page

x:Class="MyApp.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:local="using:MyApp"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable="d"

Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

<StackPanel>

<Button Content="开始说话" Click="OnClick"/>

<TextBlock TextWrapping="Wrap" FontSize="20">

<Run>

请说出:把颜色改为[红色]

</Run>

<LineBreak/>

<Run>或者:把颜色设置为[红色]</Run>

<LineBreak/>

<Run>

[红色]必须是以下值中的一个:红色、白色、蓝色、绿色

</Run>

</TextBlock>

<TextBlock Name="tbRes" FontSize="24" TextWrapping="Wrap" Foreground="LightGreen"/>

</StackPanel>

</Page>

C#  code

-----------------------------------------------------------------------------------------------------------------------------------

public sealed partial class MainPage : Page

{

public MainPage()

{

this.InitializeComponent();

this.NavigationCacheMode = NavigationCacheMode.Required;

}

/// <summary>

/// Invoked when this page is about to be displayed in a Frame.

/// </summary>

/// <param name="e">Event data that describes how this page was reached.

/// This parameter is typically used to configure the page.</param>

protected override void OnNavigatedTo(NavigationEventArgs e)

{

// TODO: Prepare page for display here.

// TODO: If your application contains multiple pages, ensure that you are

// handling the hardware Back button by registering for the

// Windows.Phone.UI.Input.HardwareButtons.BackPressed event.

// If you are using the NavigationHelper provided by some templates,

// this event is handled for you.

}

private async void OnClick(object sender, RoutedEventArgs e)

{

Button btn = sender as Button;

btn.IsEnabled = false;

using (SpeechRecognizer recognizer = new SpeechRecognizer())

{

try

{

// 加载语法文件

StorageFile sgrsFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///sgrs.xml"));

// 创建识别约束

SpeechRecognitionGrammarFileConstraint grammarfileConstraint = new SpeechRecognitionGrammarFileConstraint(sgrsFile);

// 加入到约束集合中

recognizer.Constraints.Add(grammarfileConstraint);

// 编译约束

SpeechRecognitionCompilationResult compilationResult = await recognizer.CompileConstraintsAsync();

if (compilationResult.Status == SpeechRecognitionResultStatus.Success)

{

// 开始识别

SpeechRecognitionResult result = await recognizer.RecognizeAsync();

if(result.Status == SpeechRecognitionResultStatus.Success)

{

tbRes.Text = string.Format("识别结果:{0}。", result.Text);

}

}

}

catch (Exception ex)

{

System.Diagnostics.Debug.WriteLine(ex.Message);

}

}

btn.IsEnabled = true;

}

}

约束文件   sgr.xml

-----------------------------------------------------------------------------------

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

<grammar xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0" version="1.0" xml:lang="zh-cn" root="color">

<rule id="color">

<item repeat="0-1">把</item>

<item>颜色</item>

<one-of>

<item>设置为</item>

<item>改为</item>

</one-of>

<one-of>

<item>红色</item>

<item>白色</item>

<item>绿色</item>

<item>蓝色</item>

</one-of>

</rule>

</grammar>

uwp 自定义语音识别规则的更多相关文章

  1. [uwp]自定义图形裁切控件

    开始之前,先上一张美图.图中的花叫什么,我已经忘了,或者说从来就不知道,总之谓之曰“野花”.只记得花很美,很香,春夏时节,漫山遍野全是她.这大概是七八年前的记忆了,不过她依旧会很准时的在山上沐浴春光, ...

  2. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  3. struts2 自定义校验规则

    自定义校验规则:(了解) 在Struts2自定义校验规则: 1.实现一个Validator 接口. 2.一般开发中继承ValidatorSupport 或者 FieldValidatorSupport ...

  4. yii2中自定义验证规则rules

    作者:白狼 出处:www.manks.top/article/yii2_custom_rules 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追 ...

  5. CI 框架中的自定义路由规则

    在 CI 框架中,一个 URL 和它对应的控制器中的类以及类中的方法是一一对应的,如: www.test.com/user/info/zhaoyingnan 其中 user 对应的就是控制器中的 us ...

  6. easyui的validatebox重写自定义验证规则的几个实例

    validatebox已经实现的几个规则: 验证规则是根据使用需求和验证类型属性来定义的,这些规则已经实现(easyui API): email:匹配E-Mail的正则表达式规则. url:匹配URL ...

  7. 自定义 Lint 规则简介

    上个月,笔者在巴黎 Droidcon 的 BarCamp 研讨会上聆听了 Matthew Compton 关于编写自己的 Lint 规则的讲话.深受启发之后,笔者想就此话题做进一步的探索. 定义 如果 ...

  8. 在ubuntu16.04中安装apache2+modsecurity以及自定义WAF规则详解

    一.Modsecurity规则语法示例 SecRule是ModSecurity主要的指令,用于创建安全规则.其基本语法如下: SecRule VARIABLES OPERATOR [ACTIONS] ...

  9. Scarpy 起始url 自定义代理 自定义去重规则

    - start_urls - 内部原理 """ scrapy引擎来爬虫中去起始的URL: 1. 调用start_requests并获取返回值 2. v = iter(返回 ...

随机推荐

  1. [刘阳Java]_MyBatis_其他方式来实现多表查询的操作_第9讲

    MyBatis其他方式来实现多表查询的操作 利用Java中的集合框架(List,Map) 其中List存储多个查询返回的记录 Map查询返回字段,同时记录表中一条数据 <?xml version ...

  2. CF1330B题解

    题意: 给定一个长为 \(n\) 序列 \(a\) ,问是否能分成两个排列,并输出方案 (排列:从 \(1-n\) 中选取不同的 \(n\) 个元素组成的序列) 思路: 观察数据范围可以猜出,这题 \ ...

  3. python编程面试题

    # 实现需求为 注册.登录.查看昵称的功能 # def userN(): #     username = input("请输入账号: \n") #     password =  ...

  4. CF404D-DP【成就达成】

    CF404D-DP 正经的东西 题意 给定一个字符串,只包含'0','1','2','*','?'五种字符,其中'?'可被替换为其他任何一种,求使序列符合扫雷地图定义的方案数. 一个数字字符大小表示与 ...

  5. [SHOI2014]概率充电器 题解

    注意到本题的贡献是不带权的,所以期望其实就是每个点的概率之和. 本题正着做好像不是很好做,要考虑 \(P(A+B)=P(A)+P(B)-P(A)P(B)\) 的容斥(因为这是两个条件至少满足一个,所以 ...

  6. 为什么要配置java环境变量

    Java环境变量,真的还有必要配吗? 作为年龄上堪称老鸟而技术上却是菜鸟的老菜鸟,为了祖国的编程事业,不惜拿出一个月工资,淘了一台配置稍高的二手笔记本,打算与老笔记本中的撸啊撸片彻底说再见,誓要在新机 ...

  7. odoo里面批量上传图片

    import os import base64 def base_data_product_image(self): """ odoo里批量创建产品,并上传图片 图片为b ...

  8. Python自动化测试面试题-性能篇

    目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...

  9. 第十六篇 -- QListWidget与QToolButton(功能)

    效果图: 添加的部分,就是对几个action绑定了槽函数,完成相应的功能. listWidget操作的都是item,添加一个item,删除一个item,插入一个item等等.那么只需要知道item的几 ...

  10. Spring Security OAuth2 远程命令执行漏洞(CVE-2016-4977)

    影响版本: 2.0.0-2.0.9 1.0.0-1.0.5 poc地址 https://github.com/vulhub/vulhub/blob/master/spring/CVE-2016-497 ...