Note

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

Microsoft Speech Platform

ISpRecoGrammar::LoadCmdFromProprietaryGrammar

ISpRecoGrammar::LoadCmdFromProprietaryGrammar loads a proprietary grammar.

<pre IsFakePre="true" xmlns="http://www.w3.org/1999/xhtml"> <strong>HRESULT LoadCmdFromProprietaryGrammar(</strong> <strong> REFGUID</strong> <em>rguidParam</em>, <strong> LPCWSTR</strong> *<em>pszStringParam</em>, <strong> const void</strong> *<em>pvDataParam</em>, <strong> ULONG</strong> <em>cbDataSize</em>, <a runat="server" href="jj127470(v=msdn.10).md"><strong>SPLOADOPTIONS</strong></a> <em>Options</em> <strong>);</strong> </pre>

Parameters

  • rguidParam
    [in] Unique identifier of the grammar. The GUID will be used by the application and the speech recognition (SR) engine to uniquely identify the SR engine for verifying support.
  • pszStringParam
    [in, string] The null-terminated string command. The string can be used by the application and the SR engine to specify which part of a grammar to utilize.
  • pvDataParam
    [in] Additional information for the process. The Speech Platform will handle the marshaling of the data to the SR engine.
  • cbDataSize
    [in] The size, in bytes, of pvDataParam. The Speech Platform will handle the marshaling of the data to the SR engine.
  • Options
    [in] Flag of type SPLOADOPTIONS indicating whether the file should be loaded statically or dynamically. This value must be SPLO_STATIC.

Return Values

Value Description
S_OK Function completed successfully.
E_INVALIDARG pszStringParam or pvDataParam is invalid or bad. Alternatively, Options is not SPLO_STATIC.
FAILED(hr) Appropriate error message.

Remarks

We recommend against using proprietary grammars. Instead, use XML grammars that conform to the Speech Recognition Grammar Specification (SRGS) Version 1.0 for speech recognition. Applications can use ::LoadCmdFromProprietaryGrammar when using a proprietary grammar format that the SR engine supports. If the current SR engine does not support the proprietary grammar format (specified using rguidParam and pszStringParam), the SR engine may return E_NOTIMPL.

When an application calls ::LoadCmdFromProprietaryGrammar, the currently loaded CFG or proprietary will be unloaded.

Example

`

// Declare local identifiers:
HRESULT                      hr = S_OK;
CComPtr<ISpRecoGrammar>      cpRecoGrammar;
CComPtr<ISpRecoContext>      cpRecoContext;
ULONGLONG                    ullGramId = 1;
GUID                         rguidParam;

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

if (SUCCEEDED(hr)) { // Load a proprietary grammar. hr = cpRecoGrammar->LoadCmdFromProprietaryGrammar(rguidParam, L"Rule1", NULL, NULL, SPLO_STATIC); }

if (SUCCEEDED(hr)) { // Do stuff here. }

`