Grammar 构造函数
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
初始化 Grammar 类的新实例。
重载
| 名称 | 说明 |
|---|---|
| Grammar() |
初始化 Grammar 类的新实例。 |
| Grammar(SrgsDocument, String, Uri, Object[]) |
从 实例初始化类的新实例GrammarSrgsDocument,并指定要作为语法入口点的规则的名称和用于解析相对引用的基 URI。 |
| Grammar(Stream, String, Uri, Object[]) | |
| Grammar(SrgsDocument, String, Uri) |
从Grammar对象初始化类的新实例SrgsDocument,指定根规则,并定义基统一资源标识符(URI)以解析相对规则引用。 |
| Grammar(SrgsDocument, String, Object[]) |
从 实例 Grammar 初始化类的新实例 SrgsDocument,并指定要作为语法入口点的规则的名称。 |
| Grammar(Stream, String, Uri) |
从流初始化类的新实例 Grammar ,指定根规则,并定义基本统一资源标识符(URI)以解析相对规则引用。 |
| Grammar(Stream, String, Object[]) | |
| Grammar(String, String, Object[]) |
从包含语法定义的文件中初始化类的新实例 Grammar ,并指定要作为语法入口点的规则的名称。 |
| Grammar(SrgsDocument, String) |
从Grammar对象初始化类的新实例SrgsDocument并指定根规则。 |
| Grammar(Stream, String) | |
| Grammar(String) |
从文件初始化类的新实例 Grammar 。 |
| Grammar(SrgsDocument) |
从Grammar对象初始化类的新实例SrgsDocument。 |
| Grammar(String, String) |
从文件中初始化类的新实例 Grammar 并指定根规则。 |
| Grammar(GrammarBuilder) |
从Grammar对象初始化类的新实例GrammarBuilder。 |
| Grammar(Stream) |
注解
可以使用Grammar构造函数从或GrammarBuilderSrgsDocument对象或文件或包含受支持格式的语法说明的文件创建GrammarStream实例。 支持的格式包括:
符合 W3C 语音识别语法规范 (SRGS) 版本 1.0 的 XML 格式文件
已编译为扩展名为 .cfg 的二进制文件的语法
接受其参数中的 XML 格式语法文件的语法构造函数会将 XML 语法编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一Grammar种方法,通过提前编译语法来减少从 XML 格式语法构造Compile对象所需的时间。
语音识别语法可以定义根规则。 若要创建一个 Grammar 对象,该对象指定要用作其根规则的规则,请使用接受参数的 ruleName 构造函数。
若要创建一个 Grammar 指定基 URI 来解析相对规则引用的对象,请使用采用参数的 baseUri 构造函数。
Grammar()
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
初始化 Grammar 类的新实例。
protected:
Grammar();
protected Grammar();
Protected Sub New ()
适用于
Grammar(SrgsDocument, String, Uri, Object[])
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从 实例初始化类的新实例GrammarSrgsDocument,并指定要作为语法入口点的规则的名称和用于解析相对引用的基 URI。
public:
Grammar(System::Speech::Recognition::SrgsGrammar::SrgsDocument ^ srgsDocument, System::String ^ ruleName, Uri ^ baseUri, cli::array <System::Object ^> ^ parameters);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument? srgsDocument, string? ruleName, Uri? baseUri, object[]? parameters);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument srgsDocument, string ruleName, Uri baseUri, object[] parameters);
new System.Speech.Recognition.Grammar : System.Speech.Recognition.SrgsGrammar.SrgsDocument * string * Uri * obj[] -> System.Speech.Recognition.Grammar
Public Sub New (srgsDocument As SrgsDocument, ruleName As String, baseUri As Uri, parameters As Object())
参数
- srgsDocument
- SrgsDocument
该实例 SrgsDocument 包含语音识别语法的约束。
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 语法说明的默认根规则。
- baseUri
- Uri
用于解析语法说明中任何相对规则引用的基 URI,或 null。
例外
任何参数都包含无效值。
指定 SrgsDocument 者
srgsDocument不包含在ruleName..数组参数的内容与规则的任何初始化处理程序的参数不匹配。
语法具有相对规则引用,不能由语法的默认基 Uri 规则或提供的
baseUriURI 解析。
注解
还可以指定初始化处理程序的参数。
重要
将此类型的实例用于不受信任的数据是一种安全风险。 仅将此对象与受信任的数据一起使用。 有关详细信息,请参阅验证所有输入。
适用于
Grammar(Stream, String, Uri, Object[])
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
public:
Grammar(System::IO::Stream ^ stream, System::String ^ ruleName, Uri ^ baseUri, cli::array <System::Object ^> ^ parameters);
public Grammar(System.IO.Stream stream, string? ruleName, Uri? baseUri, object[]? parameters);
public Grammar(System.IO.Stream stream, string ruleName, Uri baseUri, object[] parameters);
new System.Speech.Recognition.Grammar : System.IO.Stream * string * Uri * obj[] -> System.Speech.Recognition.Grammar
Public Sub New (stream As Stream, ruleName As String, baseUri As Uri, parameters As Object())
参数
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 语法说明的默认根规则。
- baseUri
- Uri
用于解析语法说明中任何相对规则引用的基 URI,或 null。
例外
任何参数都包含无效值。
连接到
stream不包含指定ruleName规则的语法。数组参数的内容与规则的任何初始化处理程序的参数不匹配。
语法包含一个相对规则引用,该引用不能由语法的默认基 Uri 规则或提供的
baseUriURI 解析。
注解
还可以指定初始化处理程序的参数。
重要
将此类型的实例用于不受信任的数据是一种安全风险。 仅将此对象与受信任的数据一起使用。 有关详细信息,请参阅验证所有输入。
适用于
Grammar(SrgsDocument, String, Uri)
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从Grammar对象初始化类的新实例SrgsDocument,指定根规则,并定义基统一资源标识符(URI)以解析相对规则引用。
public:
Grammar(System::Speech::Recognition::SrgsGrammar::SrgsDocument ^ srgsDocument, System::String ^ ruleName, Uri ^ baseUri);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument? srgsDocument, string? ruleName, Uri? baseUri);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument srgsDocument, string ruleName, Uri baseUri);
new System.Speech.Recognition.Grammar : System.Speech.Recognition.SrgsGrammar.SrgsDocument * string * Uri -> System.Speech.Recognition.Grammar
Public Sub New (srgsDocument As SrgsDocument, ruleName As String, baseUri As Uri)
参数
- srgsDocument
- SrgsDocument
语音识别语法的约束。
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 默认的 SrgsDocument根规则。
- baseUri
- Uri
用于解析或 中SrgsDocumentnull任何相对规则引用的基 URI。
例外
ruleName 无法解析或不是公共规则,或者 ruleNamenullsrgsDocument 不包含根规则。
srgsDocument 是 null。
srgsDocument 包含无法解析的规则引用。
示例
以下示例在包含对 cities.xml 文件的相对规则引用的一个 SrgsDocument 语音识别语法中创建一个语音识别语法,并指定用于解析规则引用的 URI。 cities.xml 文件的内容显示在 C# 示例后面的 XML 示例中。
private static Grammar CreateSrgsDocumentGrammar3()
{
// Create the SrgsDocument.
SrgsDocument document = new SrgsDocument();
// Create the Main rule and add it to the document.
SrgsRule mainRule = new SrgsRule("Main");
mainRule.Scope = SrgsRuleScope.Public;
SrgsItem item = new SrgsItem("Can I get a shuttle in");
// Create a relative URI for the cities rule.
Uri ruleUri = new Uri("cities.xml#Cities", UriKind.Relative);
item.Add(new SrgsRuleRef(ruleUri));
mainRule.Add(item);
document.Rules.Add(mainRule);
// Set the root rule.
document.Root = mainRule;
// Create the grammar.
Uri baseUri = new Uri(@"file://c:\temp\");
Grammar citiesGrammar = new Grammar(document, null, baseUri);
citiesGrammar.Name = "SrgsDocument Cities Grammar 3";
return citiesGrammar;
}
<?xml version="1.0" encoding="UTF-8" ?>
<grammar version="1.0" xml:lang="en-US"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0" root="Main">
<!-- cities.xml:
Defines an SRGS grammar for requesting a flight. This grammar includes
a Cities rule that lists the cities that can be used for departures
and destinations. -->
<rule id="Main">
<item>
I would like to fly from <ruleref uri="#Cities"/>
to <ruleref uri="#Cities"/>
</item>
</rule>
<rule id="Cities" scope="public">
<one-of>
<item>Seattle</item>
<item>Los Angeles</item>
<item>New York</item>
<item>Miami</item>
</one-of>
</rule>
</grammar>
注解
此构造函数不会将任何参数传递给初始化处理程序,并且 SrgsDocument 不应包含需要参数的初始化处理程序。
此构造函数不验证 baseUri。 但是,如果某个或SpeechRecognizer对象的方法SpeechRecognitionEngine无法解析语法说明中的所有规则引用,LoadGrammar则会引发异常。
null否则baseUri,该方法LoadGrammar使用 URI 解析无法解析的任何规则引用。 如果 baseUri 表示文件,则 LoadGrammar 该方法在尝试解析相对规则引用时同时使用指定文件和文件的目录。
重要
将此类型的实例用于不受信任的数据是一种安全风险。 仅将此对象与受信任的数据一起使用。 有关详细信息,请参阅验证所有输入。
另请参阅
- System.Speech.Recognition.SrgsGrammar
- SrgsDocument
- SpeechRecognitionEngine
- SpeechRecognizer
- 语音识别语法规范
适用于
Grammar(SrgsDocument, String, Object[])
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从 实例 Grammar 初始化类的新实例 SrgsDocument,并指定要作为语法入口点的规则的名称。
public:
Grammar(System::Speech::Recognition::SrgsGrammar::SrgsDocument ^ srgsDocument, System::String ^ ruleName, cli::array <System::Object ^> ^ parameters);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument? srgsDocument, string? ruleName, object[]? parameters);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument srgsDocument, string ruleName, object[] parameters);
new System.Speech.Recognition.Grammar : System.Speech.Recognition.SrgsGrammar.SrgsDocument * string * obj[] -> System.Speech.Recognition.Grammar
Public Sub New (srgsDocument As SrgsDocument, ruleName As String, parameters As Object())
参数
- srgsDocument
- SrgsDocument
该实例 SrgsDocument 包含语音识别语法的约束。
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 语法说明的默认根规则。
例外
任何参数都包含无效值。
指定的 SrgsDocument 者
srgsDocument不包含由ruleName. 指定的规则。数组参数的内容与规则的任何初始化处理程序的参数不匹配。
注解
还可以指定初始化处理程序的参数。
适用于
Grammar(Stream, String, Uri)
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从流初始化类的新实例 Grammar ,指定根规则,并定义基本统一资源标识符(URI)以解析相对规则引用。
public:
Grammar(System::IO::Stream ^ stream, System::String ^ ruleName, Uri ^ baseUri);
public Grammar(System.IO.Stream stream, string? ruleName, Uri? baseUri);
public Grammar(System.IO.Stream stream, string ruleName, Uri baseUri);
new System.Speech.Recognition.Grammar : System.IO.Stream * string * Uri -> System.Speech.Recognition.Grammar
Public Sub New (stream As Stream, ruleName As String, baseUri As Uri)
参数
- stream
- Stream
描述采用受支持格式的语音识别语法的流。
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 语法说明的默认根规则。
- baseUri
- Uri
用于解析语法说明中任何相对规则引用的基 URI,或 null。
例外
ruleName 无法解析或不是公共的,或者 ruleName 语法 null 说明不定义根规则。
stream 是 null。
该流不包含有效的说明或描述包含无法解析的规则引用的语法。
示例
以下示例从文件流加载本地 SRGS 文件(shuttle.xml)。 该文件包含对 cities.xml 文件中规则的相对规则引用,并指定用于解析规则引用的基本 URI。 shuttle.xml 和 cities.xml 文件的内容显示在 C# 示例后面的 XML 示例中。
private static Grammar CreateGrammarFromStream3()
{
FileInfo file = new FileInfo(@".\shuttle.xml");
Uri baseUri = new Uri(@"file://c:\temp\");
Grammar citiesGrammar = new Grammar(file.OpenRead(), null, baseUri);
citiesGrammar.Name = "Stream Cities Grammar 3";
return citiesGrammar;
}
<?xml version="1.0" encoding="UTF-8" ?>
<grammar version="1.0" xml:lang="en-US"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0" root="Main">
<!-- shuttle.xml:
Defines an SRGS grammar for asking about a shuttle service. This grammar
references a Cities rule that is defined in the cities.xml grammar. -->
<rule id="Main">
<item>
Can I get a shuttle in
<ruleref uri="cities.xml#Cities"/>
</item>
</rule>
</grammar>
<?xml version="1.0" encoding="UTF-8" ?>
<grammar version="1.0" xml:lang="en-US"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0" root="Main">
<!-- cities.xml:
Defines an SRGS grammar for requesting a flight. This grammar includes
a Cities rule that lists the cities that can be used for departures
and destinations. -->
<rule id="Main">
<item>
I would like to fly from <ruleref uri="#Cities"/>
to <ruleref uri="#Cities"/>
</item>
</rule>
<rule id="Cities" scope="public">
<one-of>
<item>Seattle</item>
<item>Los Angeles</item>
<item>New York</item>
<item>Miami</item>
</one-of>
</rule>
</grammar>
注解
此构造函数不会将任何参数传递给初始化处理程序,说明不应定义需要参数的初始化处理程序。
此构造函数可以使用以下格式创建 Grammar 实例:
符合 W3C 语音识别语法规范 (SRGS) 版本 1.0 的 XML 格式文件
已编译为扩展名为 .cfg 的二进制文件的语法
此构造函数将 XML 格式的语法文件编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一Grammar种方法,通过提前编译语法来减少从 XML 格式语法构造Compile对象所需的时间。
此构造函数不验证 baseUri。 但是,如果某个或SpeechRecognizer对象的方法SpeechRecognitionEngine无法解析语法说明中的所有规则引用,LoadGrammar则会引发异常。
null否则baseUri,该方法LoadGrammar使用 URI 解析无法解析的任何规则引用。 如果 baseUri 表示文件,则在尝试解析相对规则引用时,将使用 LoadGrammar 指定文件和文件的目录。
重要
将此类型的实例用于不受信任的数据是一种安全风险。 仅将此对象与受信任的数据一起使用。 有关详细信息,请参阅验证所有输入。
另请参阅
适用于
Grammar(Stream, String, Object[])
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
public:
Grammar(System::IO::Stream ^ stream, System::String ^ ruleName, cli::array <System::Object ^> ^ parameters);
public Grammar(System.IO.Stream stream, string? ruleName, object[]? parameters);
public Grammar(System.IO.Stream stream, string ruleName, object[] parameters);
new System.Speech.Recognition.Grammar : System.IO.Stream * string * obj[] -> System.Speech.Recognition.Grammar
Public Sub New (stream As Stream, ruleName As String, parameters As Object())
参数
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 语法说明的默认根规则。
例外
stream 连接到一个语法,该语法:
不包含在
中指定的规则 需要初始化参数与在 中指定的参数不同
parameters包含无法由语法的默认基 Uri 规则解析的相对规则引用。
注解
还可以指定初始化处理程序的参数。
适用于
Grammar(String, String, Object[])
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从包含语法定义的文件中初始化类的新实例 Grammar ,并指定要作为语法入口点的规则的名称。
public:
Grammar(System::String ^ path, System::String ^ ruleName, cli::array <System::Object ^> ^ parameters);
public Grammar(string path, string? ruleName, object[]? parameters);
public Grammar(string path, string ruleName, object[] parameters);
new System.Speech.Recognition.Grammar : string * string * obj[] -> System.Speech.Recognition.Grammar
Public Sub New (path As String, ruleName As String, parameters As Object())
参数
- path
- String
包含语法规范的文件的路径,包括 DLL。
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 语法说明的默认根规则。
例外
任何参数都包含无效值。
指定的
path文件不包含有效的语法或指定的ruleName规则。数组参数的内容与规则的任何初始化处理程序的参数不匹配。
语法具有相对规则引用,不能由语法的默认基 Uri 规则解析。
注解
重要
将此类型的实例用于不受信任的数据是一种安全风险。 仅将此对象与受信任的数据一起使用。 有关详细信息,请参阅验证所有输入。
还可以指定初始化处理程序的参数。
适用于
Grammar(SrgsDocument, String)
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从Grammar对象初始化类的新实例SrgsDocument并指定根规则。
public:
Grammar(System::Speech::Recognition::SrgsGrammar::SrgsDocument ^ srgsDocument, System::String ^ ruleName);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument? srgsDocument, string? ruleName);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument srgsDocument, string ruleName);
new System.Speech.Recognition.Grammar : System.Speech.Recognition.SrgsGrammar.SrgsDocument * string -> System.Speech.Recognition.Grammar
Public Sub New (srgsDocument As SrgsDocument, ruleName As String)
参数
- srgsDocument
- SrgsDocument
语音识别语法的约束。
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 默认的 SrgsDocument根规则。
例外
ruleName 无法解析或不是公共规则,或者 ruleNamenullsrgsDocument 不包含根规则。
srgsDocument 是 null。
srgsDocument 包含无法解析的规则引用。
示例
以下示例在实例中创建 SrgsDocument 语音识别语法,并指定要用作语法根规则的规则。 该示例从SrgsDocument实例构造一个Grammar对象,并将其加载到语音识别引擎中。
using System;
using System.Speech.Recognition;
using System.Speech.Recognition.SrgsGrammar;
namespace SampleRecognition
{
class Program
{
static void Main(string[] args)
// Initialize an in-process speech recognition engine.
{
using (SpeechRecognitionEngine recognizer =
new SpeechRecognitionEngine())
{
// Create the SrgsDocument.
SrgsDocument document = new SrgsDocument();
// Create the Cities rule and add it to the document.
SrgsRule citiesRule = new SrgsRule("Cities");
citiesRule.Scope = SrgsRuleScope.Public;
SrgsOneOf cityChoice = new SrgsOneOf();
cityChoice.Add(new SrgsItem("Seattle"));
cityChoice.Add(new SrgsItem("Los Angeles"));
cityChoice.Add(new SrgsItem("New York"));
cityChoice.Add(new SrgsItem("Miami"));
citiesRule.Add(cityChoice);
document.Rules.Add(citiesRule);
// Create the Main rule and add it to the document.
SrgsRule mainRule = new SrgsRule("Main");
mainRule.Scope = SrgsRuleScope.Public;
mainRule.Add(new SrgsItem("I would like to fly from"));
mainRule.Add(new SrgsRuleRef(citiesRule));
mainRule.Add(new SrgsItem("to"));
mainRule.Add(new SrgsRuleRef(citiesRule));
document.Rules.Add(mainRule);
// Create the Grammar object and specify which rule to use as the root.
Grammar citiesGrammar = new Grammar(document,"Main");
// Load the grammar object to the recognizer.
recognizer.LoadGrammarAsync(citiesGrammar);
// Attach a handler for the SpeechRecognized event.
recognizer.SpeechRecognized +=
new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
// Set the input to the recognizer.
recognizer.SetInputToDefaultAudioDevice();
// Start recognition.
recognizer.RecognizeAsync();
Console.WriteLine("Starting asynchronous recognition...");
// Keep the console window open.
Console.ReadLine();
}
}
// Handle the SpeechRecognized event.
static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
Console.WriteLine(" Speech recognized: " + e.Result.Text);
}
}
}
注解
此构造函数不会将任何参数传递给初始化处理程序,并且 SrgsDocument 不应包含需要参数的初始化处理程序。
若要从某个GrammarSrgsDocument对象创建对象并指定用于解析相对规则引用的基 URI,请使用Grammar构造函数。
另请参阅
- System.Speech.Recognition.SrgsGrammar
- SrgsDocument
- SpeechRecognizer
- SpeechRecognitionEngine
- 语音识别语法规范
适用于
Grammar(Stream, String)
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
public:
Grammar(System::IO::Stream ^ stream, System::String ^ ruleName);
public Grammar(System.IO.Stream stream, string? ruleName);
public Grammar(System.IO.Stream stream, string ruleName);
new System.Speech.Recognition.Grammar : System.IO.Stream * string -> System.Speech.Recognition.Grammar
Public Sub New (stream As Stream, ruleName As String)
参数
- stream
- Stream
描述采用受支持格式的语音识别语法的流。
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 语法说明的默认根规则。
例外
ruleName 无法解析或不是公共的,或者 ruleName 语法 null 说明不定义根规则。
stream 是 null。
该流不包含有效的说明或描述包含无法解析的规则引用的语法。
示例
以下示例从文件流加载本地 SRGS 文件(cities.xml),并指定要用作语法根的规则。 cities.xml 文件的内容显示在 C# 示例后面的 XML 示例中。
// Load a cities grammar from an I/O stream, use a specific
// rule as the root of the grammar, and return the new grammar.
private static Grammar CreateGrammarFromStream2()
{
FileInfo file = new FileInfo(@"c:\temp\cities.xml");
Grammar citiesGrammar = new Grammar(file.OpenRead(), "Main");
citiesGrammar.Name = "Stream Cities Grammar 2";
return citiesGrammar;
}
<?xml version="1.0" encoding="UTF-8" ?>
<grammar version="1.0" xml:lang="en-US"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0" root="Main">
<!-- cities.xml:
Defines an SRGS grammar for requesting a flight. This grammar includes
a Cities rule that lists the cities that can be used for departures
and destinations. -->
<rule id="Main">
<item>
I would like to fly from <ruleref uri="#Cities"/>
to <ruleref uri="#Cities"/>
</item>
</rule>
<rule id="Cities" scope="public">
<one-of>
<item>Seattle</item>
<item>Los Angeles</item>
<item>New York</item>
<item>Miami</item>
</one-of>
</rule>
</grammar>
注解
重要
将此类型的实例用于不受信任的数据是一种安全风险。 仅将此对象与受信任的数据一起使用。 有关详细信息,请参阅验证所有输入。
此构造函数不会将任何参数传递给初始化处理程序,说明不应定义需要参数的初始化处理程序。
此构造函数可以使用以下格式创建 Grammar 实例:
符合 W3C 语音识别语法规范 (SRGS) 版本 1.0 的 XML 格式文件
已编译为扩展名为 .cfg 的二进制文件的语法
此构造函数将 XML 格式的语法文件编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一Grammar种方法,通过提前编译语法来减少从 XML 格式语法构造Compile对象所需的时间。
若要从流创建 Grammar 并指定用于解析相对规则引用的基本 URI,请使用 Grammar 构造函数。
另请参阅
适用于
Grammar(String)
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从文件初始化类的新实例 Grammar 。
public:
Grammar(System::String ^ path);
public Grammar(string path);
new System.Speech.Recognition.Grammar : string -> System.Speech.Recognition.Grammar
Public Sub New (path As String)
参数
- path
- String
描述采用受支持格式的语音识别语法的文件的路径。
例外
path 包含空字符串(“”),或文件描述不包含根规则的语法。
path 是 null。
该文件不包含有效的说明,或描述包含无法解析的规则引用的语法。
示例
以下示例从本地 SRGS 文件加载语音识别语法以生成 Grammar 对象。 cities.xml 文件的内容显示在 C# 示例后面的 XML 示例中。
// Load a cities grammar from a local file and
// return the new grammar.
private static Grammar CreateGrammarFromFile()
{
Grammar citiesGrammar = new Grammar(@"c:\temp\cities.xml");
citiesGrammar.Name = "SRGS File Cities Grammar";
return citiesGrammar;
}
<?xml version="1.0" encoding="UTF-8" ?>
<grammar version="1.0" xml:lang="en-US"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0" root="Main">
<!-- cities.xml:
Defines an SRGS grammar for requesting a flight. This grammar includes
a Cities rule that lists the cities that can be used for departures
and destinations. -->
<rule id="Main">
<item>
I would like to fly from <ruleref uri="#Cities"/>
to <ruleref uri="#Cities"/>
</item>
</rule>
<rule id="Cities" scope="public">
<one-of>
<item>Seattle</item>
<item>Los Angeles</item>
<item>New York</item>
<item>Miami</item>
</one-of>
</rule>
</grammar>
注解
重要
将此类型的实例用于不受信任的数据是一种安全风险。 仅将此对象与受信任的数据一起使用。 有关详细信息,请参阅验证所有输入。
此构造函数不会将任何参数传递给初始化处理程序,说明不应定义需要参数的初始化处理程序。
此构造函数可以使用以下格式创建 Grammar 实例:
符合 W3C 语音识别语法规范 (SRGS) 版本 1.0 的 XML 格式文件
已编译为扩展名为 .cfg 的二进制文件的语法
此构造函数将 XML 格式的语法文件编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一Grammar种方法,通过提前编译语法来减少从 XML 格式语法构造Compile对象所需的时间。
SRGS 语法可以定义根规则。 若要从字符串创建 Grammar 对象并指定根规则,请使用 Grammar 构造函数。
若要创建一个 Grammar 对象,该对象指定用于解析相对规则引用的基本 URI,请在文件流中打开文件并使用 Grammar.Grammar 构造函数。
另请参阅
适用于
Grammar(SrgsDocument)
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从Grammar对象初始化类的新实例SrgsDocument。
public:
Grammar(System::Speech::Recognition::SrgsGrammar::SrgsDocument ^ srgsDocument);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument? srgsDocument);
public Grammar(System.Speech.Recognition.SrgsGrammar.SrgsDocument srgsDocument);
new System.Speech.Recognition.Grammar : System.Speech.Recognition.SrgsGrammar.SrgsDocument -> System.Speech.Recognition.Grammar
Public Sub New (srgsDocument As SrgsDocument)
参数
- srgsDocument
- SrgsDocument
语音识别语法的约束。
例外
srgsDocument 不包含根规则。
srgsDocument 是 null。
srgsDocument 包含无法解析的规则引用。
示例
以下示例在实例中创建 SrgsDocument 语音识别语法,该语法随后用于构造 Grammar 对象。
private static Grammar CreateSrgsDocumentGrammar()
{
// Create the SrgsDocument.
SrgsDocument document = new SrgsDocument();
// Create the Cities rule and add it to the document.
SrgsRule citiesRule = new SrgsRule("Cities");
SrgsOneOf cityChoice = new SrgsOneOf();
cityChoice.Add(new SrgsItem("Seattle"));
cityChoice.Add(new SrgsItem("Los Angeles"));
cityChoice.Add(new SrgsItem("New York"));
cityChoice.Add(new SrgsItem("Miami"));
citiesRule.Add(cityChoice);
document.Rules.Add(citiesRule);
// Create the Main rule and add it to the document.
SrgsRule mainRule = new SrgsRule("Main");
mainRule.Scope = SrgsRuleScope.Public;
SrgsItem item = new SrgsItem("I would like to fly from");
item.Add(new SrgsRuleRef(citiesRule));
item.Add(new SrgsText("to"));
item.Add(new SrgsRuleRef(citiesRule));
mainRule.Add(item);
document.Rules.Add(mainRule);
// Set the root rule.
document.Root = mainRule;
// Create the Grammar object.
Grammar citiesGrammar = new Grammar(document);
citiesGrammar.Name = "SrgsDocument Cities Grammar";
return citiesGrammar;
}
注解
此构造函数不会将任何参数传递给初始化处理程序,并且 SrgsDocument 不应包含需要参数的初始化处理程序。
A SrgsDocument 可以有根规则。 若要创建指定 Grammar 根规则的对象,请使用 Grammar 或 Grammar 构造函数。
若要从某个SrgsDocument位置创建语音识别Grammar并指定用于解析相对规则引用的基本 URI,请使用Grammar构造函数。
另请参阅
- System.Speech.Recognition.SrgsGrammar
- SrgsDocument
- SpeechRecognizer
- SpeechRecognitionEngine
- 语音识别语法规范
适用于
Grammar(String, String)
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从文件中初始化类的新实例 Grammar 并指定根规则。
public:
Grammar(System::String ^ path, System::String ^ ruleName);
public Grammar(string path, string ruleName);
new System.Speech.Recognition.Grammar : string * string -> System.Speech.Recognition.Grammar
Public Sub New (path As String, ruleName As String)
参数
- path
- String
描述采用受支持格式的语音识别语法的文件的路径。
- ruleName
- String
要用作语音识别语法入口点的规则的标识符,或使用 null 语法说明的默认根规则。
例外
ruleName 不能解析或不是公共的, path 是空字符串(“),或者 ruleName 语法 null 说明不定义根规则。
path 是 null。
该文件不包含有效的说明或描述包含无法解析的规则引用的语法。
示例
以下示例从文件中加载本地 SRGS 文件(cities.xml),并指定要用作语法根的规则。 cities.xml 文件的内容显示在 C# 示例后面的 XML 示例中。
// Load a cities grammar from a local file, use a specific
// rule as the root of the grammar, and return the new grammar.
private static Grammar CreateGrammarFromFile2()
{
Grammar citiesGrammar = new Grammar(@"c:\temp\cities.xml", "Main");
citiesGrammar.Name = "SRGS File Cities Grammar 2";
return citiesGrammar;
}
<?xml version="1.0" encoding="UTF-8" ?>
<grammar version="1.0" xml:lang="en-US"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0" root="Main">
<!-- cities.xml:
Defines an SRGS grammar for requesting a flight. This grammar includes
a Cities rule that lists the cities that can be used for departures
and destinations. -->
<rule id="Main">
<item>
I would like to fly from <ruleref uri="#Cities"/>
to <ruleref uri="#Cities"/>
</item>
</rule>
<rule id="Cities" scope="public">
<one-of>
<item>Seattle</item>
<item>Los Angeles</item>
<item>New York</item>
<item>Miami</item>
</one-of>
</rule>
</grammar>
注解
重要
将此类型的实例用于不受信任的数据是一种安全风险。 仅将此对象与受信任的数据一起使用。 有关详细信息,请参阅验证所有输入。
此构造函数不会将任何参数传递给初始化处理程序,说明不应定义需要参数的初始化处理程序。
此构造函数可以使用以下格式创建 Grammar 实例:
符合 W3C 语音识别语法规范 (SRGS) 版本 1.0 的 XML 格式文件
已编译为扩展名为 .cfg 的二进制文件的语法
此构造函数将 XML 格式的语法文件编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一Grammar种方法,通过提前编译语法来减少从 XML 格式语法构造Compile对象所需的时间。
若要创建一个 Grammar 指定用于解析相对规则引用的基本 URI,请打开文件的文件流并使用 Grammar 构造函数。
另请参阅
适用于
Grammar(GrammarBuilder)
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
从Grammar对象初始化类的新实例GrammarBuilder。
public:
Grammar(System::Speech::Recognition::GrammarBuilder ^ builder);
public Grammar(System.Speech.Recognition.GrammarBuilder builder);
new System.Speech.Recognition.Grammar : System.Speech.Recognition.GrammarBuilder -> System.Speech.Recognition.Grammar
Public Sub New (builder As GrammarBuilder)
参数
- builder
- GrammarBuilder
该实例 GrammarBuilder 包含语音识别语法的约束。
示例
以下示例使用和GrammarBuilder对象创建语音识别语法Choices。 构造Grammar函数从GrammarBuilder对象创建Grammar对象。
// Create a grammar using a GrammarBuilder and return the new grammar.
private static Grammar CreateGrammarBuilderGrammar()
{
GrammarBuilder builder = new GrammarBuilder();
Choices cityChoice = new Choices (new string[]
{"Seattle", "New York", "Miami", "Los Angeles"});
builder.Append("I would like to fly from");
builder.Append(cityChoice);
builder.Append("to");
builder.Append(cityChoice);
Grammar citiesGrammar = new Grammar(builder);
citiesGrammar.Name = "GrammarBuilder Cities Grammar";
return citiesGrammar;
}
另请参阅
适用于
Grammar(Stream)
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
- Source:
- Grammar.cs
public:
Grammar(System::IO::Stream ^ stream);
public Grammar(System.IO.Stream stream);
new System.Speech.Recognition.Grammar : System.IO.Stream -> System.Speech.Recognition.Grammar
Public Sub New (stream As Stream)
参数
- stream
- Stream
描述采用受支持格式的语音识别语法的流。
例外
stream 描述不包含根规则的语法。
stream 是 null。
该流不包含语法的有效说明,或描述包含无法解析的规则引用的语法。
示例
以下示例使用文件流从本地 SRGS 文件(cities.xml)创建语音识别语法。 cities.xml 文件的内容如下 C# 示例所示。
// Load a cities grammar from an I/O stream and
// return the new grammar.
private static Grammar CreateGrammarFromStream()
{
string fileName = @"c:\temp\cities.xml";
Grammar citiesGrammar =
new Grammar(new FileStream(fileName, FileMode.Open));
citiesGrammar.Name = "Stream Cities Grammar";
return citiesGrammar;
}
<?xml version="1.0" encoding="UTF-8" ?>
<grammar version="1.0" xml:lang="en-US"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0" root="Main">
<!-- cities.xml:
Defines an SRGS grammar for requesting a flight. This grammar includes
a Cities rule that lists the cities that can be used for departures
and destinations. -->
<rule id="Main">
<item>
I would like to fly from <ruleref uri="#Cities"/>
to <ruleref uri="#Cities"/>
</item>
</rule>
<rule id="Cities" scope="public">
<one-of>
<item>Seattle</item>
<item>Los Angeles</item>
<item>New York</item>
<item>Miami</item>
</one-of>
</rule>
</grammar>
注解
此构造函数不会将任何参数传递给初始化处理程序,说明不应定义需要参数的初始化处理程序。
此构造函数可以使用以下格式创建 Grammar 实例:
符合 W3C 语音识别语法规范 (SRGS) 版本 1.0 的 XML 格式文件
已编译为扩展名为 .cfg 的二进制文件的语法
此构造函数将 XML 格式的语法文件编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一Grammar种方法,通过提前编译语法来减少从 XML 格式语法构造Compile对象所需的时间。
SRGS 语法可以定义根规则。 若要从流创建 Grammar 对象并指定根规则,请使用 Grammar 或 Grammar 构造函数。
若要从流创建 Grammar 对象并指定用于解析相对规则引用的基 URI,请使用 Grammar 构造函数。