如何从 C# 中的 SRGS .grxml 文件中读取语义标签?

Posted

技术标签:

【中文标题】如何从 C# 中的 SRGS .grxml 文件中读取语义标签?【英文标题】:How do I read the semantic tags from an SRGS .grxml file in C#? 【发布时间】:2012-10-21 11:56:00 【问题描述】:

假设我从下面的语法中得到了这个简单的部分:

<rule id="WhoAreYou" scope="private">
 <one-of>
  <item>who</item>
  <item>what</item>
 </one-of>
  <item>
    are
    you
  </item>
 <tag>1000</tag>
</rule>

如何从标签中适当地返回“1000”?我正在使用 System.Speech 库,并尝试将此值返回给使用 SpeechRecognizedEventArgs 的方法。

【问题讨论】:

【参考方案1】:

如果字符串中有 xml 的那部分,则可以将字符串解析为 LINQ to XML XDocument 和 XDocument.Parse(string),并使用它来获取值。阅读 LINQ to XML here :)

【讨论】:

Josh 不是指标签元素之间的实际值(即值 1000);他指的是 VoiceXML 浏览器作为语音输入的结果返回的内容。这个问题的措辞不是很好。这与其说是一个 C#/XML 问题,不如说是使用哪个影子变量来获得他想要的结果。【参考方案2】:

其实我只是想通了。我正在使用 e.Result.Semantics.Value.ToString() ,它返回的文本与所说的完全相同。我意识到我已经设置了 tag-format="semantics-ms/1.0" 时将其设置为 tag-format="semantics/1.0" 解释了标签应该如此。

【讨论】:

以上是关于如何从 C# 中的 SRGS .grxml 文件中读取语义标签?的主要内容,如果未能解决你的问题,请参考以下文章

如何提高 UWP 语音识别框架的准确率?

如何从 C# 中的文本文件中删除一行?

如何从 C# 中的文件中获取元数据? [复制]

如何从 C# 中的文件路径中去除引号和命令行参数?

如何从 Xamarin MacOS 开发中的另一个 C# 文件更新 ViewController.cs 中的“标签”?

如何从 C# 读取 VB.NET 项目中的“app.config”文件