如何在 C# 中修改 Cortana 语音激活命令 (XML)?

Posted

技术标签:

【中文标题】如何在 C# 中修改 Cortana 语音激活命令 (XML)?【英文标题】:How to modify Cortana Voice Activation commands (XML) in C#? 【发布时间】:2015-02-24 13:35:57 【问题描述】:

我目前已将 Cortana 实施到我的 Silverlight 应用程序中。语音命令存储在 CortanaCommands.xml 中,代码如下:

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

<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.1">
<CommandSet xml:lang="en-US">
<CommandPrefix>Dr. Bailey</CommandPrefix>
<Example> Open app to take dictation </Example>

<Command Name="Text">
  <Example> Is it going to rain? </Example>
  <ListenFor> [create] dictation </ListenFor>
  <Feedback> "" </Feedback>
  <Navigate Target="/Views/CortanaText.xaml" />
</Command>

<PhraseTopic Label="dictation" Scenario="Dictation">
  <Subject> Cal 123 </Subject>
</PhraseTopic>
</CommandSet>
</VoiceCommands>"

在此示例中,如果用户部署 Cortana 并说“Bailey 博士,会下雨吗?”,然后应用导航到 CortanaText.xaml。这是硬编码到 XML 中的,我希望用户能够自定义他们的命令前缀和命令。

通过使用 2 个文本框,我在 C# 中编写了一个包含整个 XML 的字符串,但插入了包含新命令前缀和命令的文本框中的选项。此字符串称为 cortanaXMLstring。用新字符串覆盖 CortanaCommands.xml 中现有代码的最佳方法是什么?我认为这比修改现有 XML 的 2 个不同区域更容易。我还认为可以删除 CortanaCommands.xml(使用 c# 代码),然后通过简单地插入字符串重新创建 XML,因为字符串包含 XML 所需的所有文本?或者,关于如何修改 XML 中的这两个字段,还有其他建议吗?它是命令前缀和命令示例。感谢您提供的任何帮助!

【问题讨论】:

【参考方案1】:

所以我们在一段时间后解决了这个问题。

首先,我们将 XML 文件加载到独立存储中,并使用

从独立存储中加载 VCD 文件
await VoiceCommandService.InstallCommandSetsFromFileAsync(new Uri("ms-appdata:///local/CortanaCommands.xml", UriKind.RelativeOrAbsolute));

而不是

ms-appx:///CortanaCommands.xml.

"ms-appdata:///local/CortanaCommands.xml"

是从独立存储文件夹而不是从 XAP 文件加载的内容。

然后我们用代码完全重写了xml文件

&lt;CommandPrefix&gt;&lt;ListenFor&gt;

来自两个文本框的用户输入。我们将其加载到流中并使用

document.Root.RemoveAll();

从 CortanaCommands.xml 中删除旧的 xml 信息,并使用我们的新数据将流重写为 xml 并重新加载

VoiceCommandService.InstallCommandSetsFromFileAsync(new Uri("ms-appdata:///local/CortanaCommands.xml", UriKind.RelativeOrAbsolute));

做所有允许用户添加自定义命令前缀和短语来启动我们想要启动的页面的操作。这可用于更改 xml 文件中的任何内容,并将 VCD 完全重写为用户喜欢的内容。

我应该提到,出于我们的目的,我们不需要短语主题,因为我们只使用一个导航命令。我们删除了该短语主题,因为它无论如何都是可选的,并将监听器中的 [create] dictation 更改为“会下雨吗”

【讨论】:

以上是关于如何在 C# 中修改 Cortana 语音激活命令 (XML)?的主要内容,如果未能解决你的问题,请参考以下文章

如何成功激活Win10正式专业版系统

windows10中微软小娜cortana如何彻底卸载删除?

使用 Cortana 语音助手和 Arduino 声音控制 RGB Led 灯!

从Windows 10中删除Cortana已较此前更加容易

如何在 C# 中使用 SpInprocRecoContext 识别语音事件?

小娜走了,微软小冰又来了,语音助手到底有没有用