ISpLexicon::GetPronunciations (SAPI 5.4)

Microsoft Speech API 5.4

ISpLexicon::GetPronunciations

ISpLexicon::GetPronunciations gets pronunciations and parts of speech for a word.

  
    HRESULT GetPronunciations(
   LPCWSTR                  *pszWord,
   LANGID                    LangID,
   DWORD                     dwFlags,
   SPWORDPRONUNCIATIONLIST  *pWordPronunciationList
);

Parameters

  • pszWord
    [in] Pointer to a null-terminated text string as a search keyword. Length must be equal to less than SP_MAX_WORD_LENGTH.
  • LangID
    [in] The language ID of the word. May be zero to indicate that the word can be of any LANGID.
  • dwFlags
    [in] Bitwise flags of type SPLEXICONTYPE indicating that the lexicons searched for this word.
  • pWordPronunciationList
    [in, out] Pointer to SPWORDPRONUNCIATIONLIST structure in which the pronunciations and parts of speech are returned.

Return values

Value
S_OK
SP_WORD_EXISTS_WITHOUT_PRONUNCIATION
E_POINTER
E_INVALIDARG
E_OUTOFMEMORY
SPERR_UNINITIALIZED
SPERR_NOT_IN_LEX
FAILED(hr)

Remarks

The application must create a zero-initialized SPWORDPRONUNCIATIONLIST structure before calling GetPronunciations, using functions such as ZeroMemory or memset to do so. GetPronunciations creates a linked list of word pronunciations that start at the location pointed to by the pvBuffer member of SPWORDPRONUNCIATIONLIST. As long as the SPWORDPRONUNCIATIONLIST structure is still being used, the pvBuffer buffer should not be freed, because GetPronunciations reuses the buffer for reasons of efficiency, and reallocates storage when necessary.

When this structure is no longer needed, free the memory pointed to by pvBuffer by a call to CoTaskMemFree.

Example

The following example is a code fragment demonstrating the use of GetPronunciations.

  
// Declare local identifiers:
HRESULT                      hr = S_OK;
CComPtr<ISpLexicon>          cpLexicon;
SPWORDPRONUNCIATIONLIST      *pwordpronlist;
SPWORDPRONUNCIATION          *pwordpron;

memset(pwordpronlist, 0, sizeof(pwordpronlist));

hr = cpLexicon->GetPronunciations(L"resume", 409, eLEXTYPE_USER | eLEXTYPE_APP, pwordpronlist);

if( SUCCEEDED(hr))
{
   for (pwordpron = pwordpronlist->pFirstWordPronunciation;
      pwordpron != NULL;
      pwordpron = pwordpron->pNextWordPronunciation)
      {
         // Do something with the SPWORDPRONUNCIATION structure's
         // members (for example, ePartOfSpeech and szPronunciation).
      }
}

// Free all the buffers.
CoTaskMemFree(pwordpronlist.pvBuffer);