Grammar Constructor (String^, String^)
Initializes a new instance of the Grammar class from a file and specifies a root rule.
Assembly: System.Speech (in System.Speech.dll)
Parameters
- path
-
Type:
System::String^
The path of the file that describes a speech recognition grammar in a supported format.
- ruleName
-
Type:
System::String^
The identifier of the rule to use as the entry point of the speech recognition grammar, or null to use the default root rule of the grammar description.
| Exception | Condition |
|---|---|
| ArgumentException | ruleName cannot be resolved or is not public, path is the empty string (""), or ruleName is null and the grammar description does not define a root rule. |
| ArgumentNullException | path is null. |
| FormatException | The file does not contain a valid description or describes a grammar that contains a rule reference that cannot be resolved. |
This constructor does not pass any parameters to the initialization handler, and the description should not define an initialization handler that requires arguments.
This constructor can create a Grammar instance from the following formats:
XML-format files that conform to the W3C Speech Recognition Grammar Specification (SRGS) Version 1.0
Grammars that have been compiled to a binary file with a .cfg file extension
This constructor compiles XML-format grammar files to a binary format to optimize them for loading and consumption by a speech recognition engine. You can reduce the amount of time required to construct a Grammar object from an XML-format grammar by compiling the grammar in advance, using one of the Compile methods.
To create a Grammar that specifies a base URI to use to resolve relative rule references, open a file stream for the file and use the Grammar constructor.
The following example loads a local SRGS file (cities.xml) from a file and specifies a rule to use as the root of the grammar. The content of the cities.xml file appears in the XML example that follows the C# example.
// 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>
Available since 3.0