UWP - 语音识别 - 无法引用外部语法文件
UWP - Speech Recognition - Can't reference an external grammar file
我正在构建具有语音识别功能的 UWP 应用程序。我想从另一个 -root- 文件中引用一个外部语法文件。
这是根语法文件(名为 RootGrammar.xml
)的代码:
<?xml version="1.0" encoding="utf-8"?>
<grammar version="1.0" xml:lang="en-us"
root="topLevel"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0"
mode="voice">
<rule id="topLevel">
<item>Hello</item>
<ruleref uri="words.xml"/>
</rule>
</grammar>
而外部语法文件(名为words.xml
)是:
<?xml version="1.0" encoding="utf-8"?>
<grammar version="1.0" xml:lang="en-us" root="words"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0"
mode="voice">
<rule id="words" scope="public">
<one-of>
<item>world</item>
<item>universe</item>
<item>galaxy</item>
</one-of>
</rule>
</grammar>
这两个文件位于同一个文件夹中(名为 Grammar
),该文件夹位于解决方案的顶层。
我为根语法文件中的 URI 属性尝试了很多值,例如:
uri= "/words.xml"
uri= "\words.xml"
uri = "../words.xml"
uri = "..\words.xml"
uri = "ms-appx:///Grammar///words.xml"
我还尝试将外部文件重命名为 words.grxml
,还尝试明确标识 uri 中的规则(即 uri = "/words.xml#words"
),但所有这些都导致了 GrammarCompilationFailure
。
您需要将文件设置为 Content 文件。 Select Solution Explorer 和 Properties window 中的文件设置 Build Action到内容.
那么,正确的 URI 应该是:
ms-appx:///Grammar/words.xml
只有词根是三个正斜杠(///
),那么你就用单斜杠(/
)。
这是设计使然。检查文件路径引用时,唯一支持的 URI 方案是 file://
、http://
和 https://
。目前,唯一的解决办法可能是没有外部参考文件。您还可以在 WPDev UserVoice 上提交 功能请求。
我正在构建具有语音识别功能的 UWP 应用程序。我想从另一个 -root- 文件中引用一个外部语法文件。
这是根语法文件(名为 RootGrammar.xml
)的代码:
<?xml version="1.0" encoding="utf-8"?>
<grammar version="1.0" xml:lang="en-us"
root="topLevel"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0"
mode="voice">
<rule id="topLevel">
<item>Hello</item>
<ruleref uri="words.xml"/>
</rule>
</grammar>
而外部语法文件(名为words.xml
)是:
<?xml version="1.0" encoding="utf-8"?>
<grammar version="1.0" xml:lang="en-us" root="words"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0"
mode="voice">
<rule id="words" scope="public">
<one-of>
<item>world</item>
<item>universe</item>
<item>galaxy</item>
</one-of>
</rule>
</grammar>
这两个文件位于同一个文件夹中(名为 Grammar
),该文件夹位于解决方案的顶层。
我为根语法文件中的 URI 属性尝试了很多值,例如:
uri= "/words.xml"
uri= "\words.xml"
uri = "../words.xml"
uri = "..\words.xml"
uri = "ms-appx:///Grammar///words.xml"
我还尝试将外部文件重命名为 words.grxml
,还尝试明确标识 uri 中的规则(即 uri = "/words.xml#words"
),但所有这些都导致了 GrammarCompilationFailure
。
您需要将文件设置为 Content 文件。 Select Solution Explorer 和 Properties window 中的文件设置 Build Action到内容.
那么,正确的 URI 应该是:
ms-appx:///Grammar/words.xml
只有词根是三个正斜杠(///
),那么你就用单斜杠(/
)。
这是设计使然。检查文件路径引用时,唯一支持的 URI 方案是 file://
、http://
和 https://
。目前,唯一的解决办法可能是没有外部参考文件。您还可以在 WPDev UserVoice 上提交 功能请求。