Share via


Note

Please see Azure Cognitive Services for Speech documentation for the latest supported speech solutions.

Microsoft Speech Platform

ISpRecoContext::CreateGrammar

ISpRecoContext::CreateGrammar creates an SpRecoGrammar object.

<pre IsFakePre="true" xmlns="http://www.w3.org/1999/xhtml"> <strong>HRESULT CreateGrammar(</strong> <strong> ULONGLONG</strong> <em>ullGrammarId</em>, <a runat="server" href="jj127756(v=msdn.10).md"><strong>ISpRecoGrammar</strong></a> **<em>ppGrammar</em> <strong>);</strong> </pre>

Parameters

  • ullGrammarId
    [in] Specifies the grammar identifier. The identifier is used by the application and is not required. This identifier is associated with all result objects from the grammar (see SPPHRASE.ullGrammarID).
  • ppGrammar
    [out] Address of a pointer which receives the ISpRecoGrammar object. The application must call IUnknown::Release on the object when finished using it.

Return Values

Value Description
S_OK Function completed successfully.
E_POINTER ppGrammar is invalid.
E_OUTOFMEMORY Not enough system memory to create a grammar object.
SPERR_SR_ENGINE_EXCEPTION An exception was thrown by the SR engine.
FAILED(hr) Appropriate error message.

Example

The following code snippet illustrates the use of ISpRecoContext::CreateGrammar.

`

// Declare local identifiers:
HRESULT	                   hr = S_OK;
CComPtr<ISpRecoContext>    cpRecoContext;
CComPtr<ISpRecoResult>     cpRecoResult;
CComPtr<ISpRecoGrammar>    cpRecoGrammar;
ULONGLONG                  ullGramId = 1;
SPPHRASE                   *pPhrase;
const WCHAR                *MY_CFG_FILENAME = L"Foo.cfg";    // Dummy file name.

// Create a grammar object. hr = cpRecoContext->CreateGrammar(ullGramId, &cpRecoGrammar;);

if (SUCCEEDED(hr)) { // Load a cfg from a file (constant points to dummy file name). hr = cpRecoGrammar->LoadCmdFromFile(MY_CFG_FILENAME, SPLO_STATIC); }

if (SUCCEEDED(hr)) { // Activate the top-level rules. hr = cpRecoGrammar->SetRuleState(NULL, NULL, SPRS_ACTIVE); }

if (SUCCEEDED(hr)) { // Get a recognition. // ... }

// Get the recognized phrase from the recognition result object. hr = cpRecoResult->GetPhrase(&pPhrase;);

if (SUCCEEDED(hr)) { // Check the grammar id of the recognition result. _ASSERT(GRAM_ID == pPhrase->ullGrammarID);

// Release system resources. ::CoTaskMemFree(&pPhrase;);

}

`