Grammar 构造函数

定义

初始化 Grammar 类的新实例。

重载

Grammar()

初始化 Grammar 类的新实例。

Grammar(SrgsDocument, String, Uri, Object[])

初始化来自 Grammar 的实例的 SrgsDocument 类的新实例,并指定成为语法入口的规则的名称及一个基 URI 来解析相对引用。

Grammar(Stream, String, Uri, Object[])

初始化 Grammar 类的新实例 Stream 并指定根规则和基 URI 来解析相对引用。

Grammar(SrgsDocument, String, Uri)

SrgsDocument对象初始化类的新实例Grammar,指定根规则,并定义基统一资源标识符 (URI) 解析相对规则引用。

Grammar(SrgsDocument, String, Object[])

初始化来自 Grammar 的实例的 SrgsDocument 类的新实例,并指定成为语法入口点的规则的名称。

Grammar(Stream, String, Uri)

初始化来自流的 Grammar 类的新实例,指定根规则并定义一个基统一资源字符识别(URI)来解析相对规则引用。

Grammar(Stream, String, Object[])

Grammar 和指定根规则中来初始化 Stream 类的新实例。

Grammar(String, String, Object[])

初始化来自包含语法定义的文件的 Grammar 类的新实例并指定成为语法入口的规则的名称。

Grammar(SrgsDocument, String)

SrgsDocument对象初始化类的新实例Grammar,并指定根规则。

Grammar(Stream, String)

Grammar 和指定根规则中来初始化 Stream 类的新实例。

Grammar(String)

从文件中初始化 Grammar 类的新实例。

Grammar(SrgsDocument)

从一个 Grammar 对象初始化 SrgsDocument 类的新实例。

Grammar(String, String)

初始化 Grammar 类的新实例并指定根规则。

Grammar(GrammarBuilder)

Grammar 对象初始化 GrammarBuilder 类的新实例。

Grammar(Stream)

Grammar 初始化 Stream 类的新实例。

注解

可以使用 Grammar 构造函数 GrammarGrammarBuilderSrgsDocument 对象创建实例,或者从包含受支持格式的语法说明的文件或 Stream 文件中创建实例。 支持的格式包括:

接受其参数中的 XML 格式语法文件的语法构造函数将 XML 语法编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中Compile一种方法提前编译语法,减少从 XML 格式语法构造Grammar对象所需的时间。

语音识别语法可以定义根规则。 若要创建一个 Grammar 对象,该对象指定要用作其根规则的规则,请使用接受参数的 ruleName 构造函数。

若要创建一个 Grammar 对象,该对象指定要解析相对规则引用的基 URI,请使用采用参数的 baseUri 构造函数。

Grammar()

初始化 Grammar 类的新实例。

protected:
 Grammar();
protected Grammar ();
Protected Sub New ()

适用于

Grammar(SrgsDocument, String, Uri, Object[])

初始化来自 Grammar 的实例的 SrgsDocument 类的新实例,并指定成为语法入口的规则的名称及一个基 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);
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引用,或

parameters
Object[]

通过入口点或创建的根规则的属性指定设置为指定的 OnInit 参数要传递至的 Grammar 初始化处理程序。 此参数可以为 null。

例外

  • 包含无效值的任何参数。

  • srgsDocument 不包含 SrgsDocument 指定的规则 ruleName 的指定中。

  • 数组参数的内容与初始化处理程序的任何规则的参数不匹配。

  • 语法具有无法由语法的默认基或baseUri提供的 URI Uri 解决的相对规则引用。

注解

还可以指定初始化处理程序的参数。

适用于

Grammar(Stream, String, Uri, Object[])

初始化 Grammar 类的新实例 Stream 并指定根规则和基 URI 来解析相对引用。

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);
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())

参数

stream
Stream

连接到包含语法规范的输入 / 输出对象(包括文件、VisualStudio 资源和 DLL)的 Stream

ruleName
String

用作语音识别语法的入口点的规则标识符,或以使用语法说明的默认根规则 null

baseUri
Uri

使用的基 URI 解决所有在语法描述中的任何相关规则 null引用,或

parameters
Object[]

通过入口点或创建的根规则的属性指定设置为指定的 OnInit 参数要传递至的 Grammar 初始化处理程序。 此参数可以为 null。

例外

  • 包含无效值的任何参数。

  • stream 连接到不包含 ruleName 指定规则的语法。

  • 数组参数的内容与初始化处理程序的任何规则的参数不匹配。

  • 语法包含无法由语法的默认基或 baseUri提供的 URI Uri 解决的相对规则引用。

注解

还可以指定初始化处理程序的参数。

适用于

Grammar(SrgsDocument, String, Uri)

SrgsDocument对象初始化类的新实例Grammar,指定根规则,并定义基统一资源标识符 (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);
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

规则标识符作为语音识别语法的入口点,按 SrgsDocument默认根规则使用 null

baseUri
Uri

SrgsDocument或者 null中使用的基 URI 解决所有在语法描述中的任何相关规则引用,或

例外

ruleName 无法解析或非公共,或者 ruleNamenull,并且 srgsDocument 不包含根规则。

srgsDocumentnull

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 该方法在尝试解析相对规则引用时同时使用指定文件和文件的目录。

另请参阅

适用于

Grammar(SrgsDocument, String, Object[])

初始化来自 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);
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

parameters
Object[]

通过入口点或创建的根规则的属性指定设置为指定的 OnInit 参数要传递至的 Grammar 初始化处理程序。 此参数可以为 null。

例外

  • 包含无效值的任何参数。

  • srgsDocument 指定的 SrgsDocument 不包含 ruleName 指定的规则。

  • 数组参数的内容与初始化处理程序的任何规则的参数不匹配。

注解

还可以指定初始化处理程序的参数。

适用于

Grammar(Stream, String, Uri)

初始化来自流的 Grammar 类的新实例,指定根规则并定义一个基统一资源字符识别(URI)来解析相对规则引用。

public:
 Grammar(System::IO::Stream ^ stream, System::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 无法解析或非公共,或者 ruleNamenull,并且语法说明不定义根规则。

streamnull

流不包含有效的说明,也不描述包含一个规则引用无法解析的语法。

示例

以下示例从文件流加载本地 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 实例:

此构造函数将 XML 格式的语法文件编译为二进制格式,以优化它们以加载和使用语音识别引擎。 可以使用其中Compile一种方法,通过提前编译语法来减少从 XML 格式语法构造Grammar对象所需的时间。

此构造函数不验证 baseUri。 但是,如果某个或SpeechRecognizer对象的方法SpeechRecognitionEngine无法解析语法说明中的所有规则引用,LoadGrammar则引发异常。 null否则baseUri,该方法LoadGrammar使用 URI 解析无法解析的任何规则引用。 如果 baseUri 表示文件,则在 LoadGrammar 尝试解析相对规则引用时,将使用指定文件和文件的目录。

另请参阅

适用于

Grammar(Stream, String, Object[])

Grammar 和指定根规则中来初始化 Stream 类的新实例。

public:
 Grammar(System::IO::Stream ^ stream, System::String ^ ruleName, cli::array <System::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())

参数

stream
Stream

连接到包含语法规范的输入 / 输出对象(包括文件、VisualStudio 资源和 DLL)的 Stream

ruleName
String

用作语音识别语法的入口点的规则标识符,或以使用语法说明的默认根规则 null

parameters
Object[]

通过入口点或创建的根规则的属性指定设置为指定的 OnInit 参数要传递至的 Grammar 初始化处理程序。 此参数可以为 null。

例外

stream 连接到该语法:

  • 不包含 ruleName 中指定的规则

  • 需要与 parameters 中指定的那些不同的初始化参数

  • 包含无法由语法的默认基 Uri 规则解析的相对规则引用。

注解

还可以指定初始化处理程序的参数。

适用于

Grammar(String, String, Object[])

初始化来自包含语法定义的文件的 Grammar 类的新实例并指定成为语法入口的规则的名称。

public:
 Grammar(System::String ^ path, System::String ^ ruleName, cli::array <System::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

parameters
Object[]

通过入口点或创建的根规则的属性指定设置为指定的 OnInit 参数要传递至的 Grammar 初始化处理程序。 此参数可以为 null。

例外

  • 包含无效值的任何参数。

  • path 指定的文件不包含在 ruleName 有效语法或规则指定的。

  • 数组参数的内容与初始化处理程序的任何规则的参数不匹配。

  • 语法具有无法由语法的默认基 Uri 规则解决的相对规则引用。

注解

还可以指定初始化处理程序的参数。

适用于

Grammar(SrgsDocument, String)

SrgsDocument对象初始化类的新实例Grammar,并指定根规则。

public:
 Grammar(System::Speech::Recognition::SrgsGrammar::SrgsDocument ^ srgsDocument, System::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

规则标识符作为语音识别语法的入口点,按 SrgsDocument默认根规则使用 null

例外

ruleName 无法解析或非公共,或者 ruleNamenull,并且 srgsDocument 不包含根规则。

srgsDocumentnull

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 不应包含需要参数的初始化处理程序。

若要从某个SrgsDocument对象创建Grammar对象并指定用于解析相对规则引用的基 URI,请使用Grammar构造函数。

另请参阅

适用于

Grammar(Stream, String)

Grammar 和指定根规则中来初始化 Stream 类的新实例。

public:
 Grammar(System::IO::Stream ^ stream, System::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 无法解析或非公共,或者 ruleNamenull,并且语法说明不定义根规则。

streamnull

流不包含有效的说明,也不描述包含一个规则引用无法解析的语法。

示例

以下示例从文件流加载本地 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 实例:

此构造函数将 XML 格式语法文件编译为二进制格式,以优化这些文件以供语音识别引擎加载和使用。 可以使用其中Compile一种方法提前编译语法,减少从 XML 格式语法构造Grammar对象所需的时间。

若要从流创建一个 Grammar 并指定用于解析相对规则引用的基 URI,请使用 Grammar 构造函数。

另请参阅

适用于

Grammar(String)

从文件中初始化 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 包含了空字符串 (""),或该文件对不包含根规则的语法进行了介绍。

pathnull

文件不包含有效的说明,也不描述包含一个规则引用无法解析的语法。

示例

以下示例从本地 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 实例:

此构造函数将 XML 格式语法文件编译为二进制格式,以优化这些文件以供语音识别引擎加载和使用。 可以使用其中Compile一种方法提前编译语法,减少从 XML 格式语法构造Grammar对象所需的时间。

SRGS 语法可以定义根规则。 若要从字符串创建 Grammar 对象并指定根规则,请使用 Grammar 构造函数。

若要创建一个 Grammar 对象,该对象指定要用于解析相对规则引用的基 URI,请在文件流中打开文件并使用 Grammar.Grammar 构造函数。

另请参阅

适用于

Grammar(SrgsDocument)

从一个 Grammar 对象初始化 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 不包含根规则。

srgsDocumentnull

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 根规则的对象,请使用 GrammarGrammar 构造函数。

若要从SrgsDocument中创建语音识别Grammar,并指定用于解析相对规则引用的基本 URI,请使用Grammar构造函数。

另请参阅

适用于

Grammar(String, String)

初始化 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 为空字符串 (""),或者 ruleNamenull,并且语法说明不定义根规则。

pathnull

文件不包含有效的说明,也不描述包含一个规则引用无法解析的语法。

示例

以下示例从文件中加载本地 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 实例:

此构造函数将 XML 格式的语法文件编译为二进制格式,以优化它们以加载和使用语音识别引擎。 可以使用其中Compile一种方法,通过提前编译语法来减少从 XML 格式语法构造Grammar对象所需的时间。

若要创建一个 Grammar 指定用于解析相对规则引用的基本 URI,请打开文件流并使用 Grammar 构造函数。

另请参阅

适用于

Grammar(GrammarBuilder)

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 的实例。

示例

以下示例使用 ChoicesGrammarBuilder 对象创建语音识别语法。 构造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)

Grammar 初始化 Stream 类的新实例。

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 描述未包含根规则的语法。

streamnull

流不包含有效的语法说明,也不描述包含一个规则引用无法解析的语法。

示例

以下示例使用文件流从本地 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 实例:

此构造函数将 XML 格式语法文件编译为二进制格式,以优化这些文件以供语音识别引擎加载和使用。 可以使用其中Compile一种方法提前编译语法,减少从 XML 格式语法构造Grammar对象所需的时间。

SRGS 语法可以定义根规则。 若要从流创建 Grammar 对象并指定根规则,请使用 GrammarGrammar 构造函数。

若要从流创建 Grammar 对象并指定用于解析相对规则引用的基 URI,请使用 Grammar 构造函数。

另请参阅

适用于