通过


Grammar 构造函数

定义

初始化 Grammar 类的新实例。

重载

名称 说明
Grammar()

初始化 Grammar 类的新实例。

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

从 实例初始化类的新实例GrammarSrgsDocument,并指定要作为语法入口点的规则的名称和用于解析相对引用的基 URI。

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

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

Grammar(SrgsDocument, String, Uri)

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

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

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构造函数从或GrammarBuilderSrgsDocument对象或文件或包含受支持格式的语法说明的文件创建GrammarStream实例。 支持的格式包括:

接受其参数中的 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

parameters
Object[]

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

例外

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

  • 指定 SrgsDocumentsrgsDocument 不包含在 ruleName..

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

  • 语法具有相对规则引用,不能由语法的默认基 Uri 规则或提供的 baseUriURI 解析。

注解

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

重要

将此类型的实例用于不受信任的数据是一种安全风险。 仅将此对象与受信任的数据一起使用。 有关详细信息,请参阅验证所有输入

适用于

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

Source:
Grammar.cs
Source:
Grammar.cs
Source:
Grammar.cs
Source:
Grammar.cs

初始化类的新实例 Grammar a 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);
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

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

ruleName
String

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

baseUri
Uri

用于解析语法说明中任何相对规则引用的基 URI,或 null

parameters
Object[]

要传递给要创建的入口点或根规则Grammar的属性指定的OnInit初始化处理程序的参数。 此参数可能为 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 不包含根规则。

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[])

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 语法说明的默认根规则。

parameters
Object[]

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

例外

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

  • 指定的 SrgsDocumentsrgsDocument 不包含由 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 说明不定义根规则。

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 格式的语法文件编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一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

从某个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);
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

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

ruleName
String

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

parameters
Object[]

要传递给要创建的入口点或根规则Grammar的属性指定的OnInit初始化处理程序的参数。 此参数可能为 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 语法说明的默认根规则。

parameters
Object[]

要传递给要创建的入口点或根规则Grammar的属性指定的OnInit初始化处理程序的参数。 此参数可能为 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 不包含根规则。

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

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

另请参阅

适用于

Grammar(Stream, String)

Source:
Grammar.cs
Source:
Grammar.cs
Source:
Grammar.cs
Source:
Grammar.cs

从某个Grammar类初始化一个新实例Stream并指定根规则。

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 说明不定义根规则。

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 格式的语法文件编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一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 包含空字符串(“”),或文件描述不包含根规则的语法。

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 格式的语法文件编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一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 不包含根规则。

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)

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 说明不定义根规则。

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 格式的语法文件编译为二进制格式,以优化它们以供语音识别引擎加载和使用。 可以使用其中一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

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

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

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

另请参阅

适用于