c# - C# 语法和切换通配符
问题描述
我想补充一点,只要它识别出“搜索 X”,它就会搜索“X”,但我不知道如何将其添加到语法中,或者如何用我的开关做这样的事情陈述。
private void Form1_Load(object sender, EventArgs e)
{
Choices commands = new Choices();
commands.Add(new string[] { "hello", "start chrome", "search" });
GrammarBuilder gBuilder = new GrammarBuilder();
gBuilder.Append(commands);
gBuilder.Culture = new System.Globalization.CultureInfo("en-GB");
Grammar grammar = new Grammar(gBuilder);
recEngine.LoadGrammarAsync(grammar);
recEngine.SetInputToDefaultAudioDevice();
recEngine.SpeechRecognized += RecEngine_SpeechRecognized;
}
private void RecEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
switch (e.Result.Text)
{
case "hello":
synthesizer.SpeakAsync("Hello! How are you doing today?");
break;
case "start chrome":
Process.Start("http://www.google.com");
break;
case "search":
SearchChrome("search");
break;
}
}
static void SearchChrome(string searchterm)
{
Process.Start("https://www.google.com/search?q=" + searchterm);
}
所以我想添加到我的语法“Search X”和我的案例“Search X”中,它会搜索 X 是什么。
提前致谢!
解决方案
你必须做一个更复杂的语法。您选择的语法规则类型是选择一。它并不完全适合您想要捕获关键字后面的内容。要捕获以下内容,您必须使用 SemanticResultKey 规则。这里解释:https ://docs.microsoft.com/en-us/dotnet/api/system.speech.recognition.semanticresultkey?view=netframework-4.7.2
该示例与您想要的完全匹配:它从表达式“我的密码是.....”中提取密码
推荐阅读
- c# - 我可以在 webAPI 项目中运行 Azure 存储队列处理器吗?
- python - 使用python用3个月前的平均值填充0
- python - 在 Pandas Dataframe 中合并/合并时如何保留列名
- django - Django:两个模型之间的两种关系
- python - 用于短唯一内容 ID 的散列算法
- java - 将 Spring boot Angular 应用程序部署到 Tomcat 服务器
- mysql - mysql.connect 永远不会返回
- node.js - 如何使用 http POST 方法将当前用户(使用应用程序的人)、Firebase Id 令牌从 Flutter 应用程序发送到 restapi?
- mysql - 如何有效地查询 MySQL 中特定日期范围之间的行?
- reactjs - 反应管理员!如果收到 API 错误,则应重定向到登录页面