Compartilhar via


ISpLexicon

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Essa interface é usado para acessar lexicons, que contêm informações sobre palavras que podem ser reconhecidas ou faladas. A interface fornece uma maneira uniforme para aplicativos e mecanismos para acessar o léxico usuário, aplicativo léxico e lexicons mecanismo particular. Ele é usado de forma diferente por aplicativo e mecanismo desenvolvedores.

SpLexicon é o padrão do SAPI léxico classe que implementa o ISpLexicon interface. Quando um objeto é criado, ele contém o léxico usuário e todos os lexicons aplicativo registrados no sistema.

Quando a implementar

A seguinte lista mostra que as classes implementar essa interface:

  • SpLexicon (implementa ISpContainerLexicon, que é derivado de ISpLexicon)
  • SpCompressedLexicon
  • SpUncompressedLexicon

Métodos

Método Description

AddPronunciation

Adiciona pronúncia e partes da fala de uma palavra para o usuário léxico.

GetGeneration

Obtém o identificador de geração para uma palavra.

GetGenerationChange

Obtém uma lista de palavras que foram alterados entre o atual e uma geração especificada.

GetWords

Obtém uma lista de todas as palavras no léxico.

GetPronunciations

Obtém pronúncias e partes da fala para uma palavra.

RemovePronunciation

Remove uma palavra léxico de usuário.

Remarks

Informações ISpLexicon para desenvolvedores aplicativo

Mecanismos podem adicionar seus lexicons particulares através de ISpContainerLexicon interface. No entanto, se um aplicativo usa ISpContainerLexicon Para adicionar um léxico para um ISpLexicon objeto, o léxico não será usado pelo mecanismo.

Seu aplicativo pode usar ISpLexicon::GetPronunciations Para pronúncias get de lexicons o usuário e aplicativo:

hr = cpLexicon->GetPronunciation(... eLEXTYPE_USER ...);
hr = cpLexicon->GetPronunciation(... eLEXTYPE_APP ...); 
hr = cpLexicon->GetPronunciation(... eLEXTYPE_USER | eLEXTYPE_APP ...);

Seu aplicativo também pode adicionar um léxico aplicativo para o sistema e removê-la mais tarde. Quando um léxico aplicativo é adicionado para o sistema, ele é compartilhado por todos os aplicativos. Qualquer SpLexicon objeto criado posteriormente será automaticamente carregar o aplicativo léxico. Lexicons aplicativo irão substituir mecanismo particular lexicons.

Para adicionar um léxico aplicativo, deixe a implementar objeto COM o ISpLexicon e MapVirtualKey. ISpObjectWithToken Interfaces e registrar o léxico conforme ilustrado no seguinte exemplo:

hr = SpCreateNewTokenEx(SPCAT_APPLEXICONS, pszLangIndependentName,
&CLSID_YourLexicon, pszLangIndependentName, langid, pszLangDependentName,
&cpToken, &cpDataKeyAttribs);
// hr = cpDataKeyAttribs->SetStringValue(name1, value1); // optional.  Can be
used to find your lexicon later
// hr = cpDataKeyAttribs->SetStringValue(name2, value2); // optional
// ...

Seu aplicativo também pode usar o SAPI-fornecido SpUncompressedLexicon classe (CLSID_SpUnCompressedLexicon) para implementar o léxico aplicativo como segue. Observe que a classe SpCompressedLexicon (CLSID_SpCompressedLexicon destina-se de fornecedores mecanismo.

hr = SpCreateNewTokenEx(SPCAT_APPLEXICONS, pszLangIndependentName,
&CLSID_SpUnCompressedLexicon, pszLangIndependentName, langid,
pszLangDependentName, &cpToken, &cpDataKeyAttribs);
// hr = cpDataKeyAttribs->SetStringValue(name1, value1); // optional.  Can be
used to find your lexicon later
// hr = cpDataKeyAttribs->SetStringValue(name2, value2); // optional
// ...
hr = SpCreateObjectFromToken(cpToken, &cpAppLexicon);
cpAppLexicon->AddPronunciation(...);
cpAppLexicon->AddPronunciation(...);
cpAppLexicon.Release();  // the CLSID_SpUnCompressedLexicon object will be read-only after this point

Para remover um léxico aplicativo a partir de sistema, seu aplicativo deve:

  1. Localize o léxico com o SpFindBestToken função.
  2. Chamar ISpObjectToken::Remove (passando NULL) para remover o léxico do sistema.

Informações ISpLexicon para desenvolvedores mecanismo

Um mecanismo pode usar o ISpLexicon interface para adicionar ou remover palavras do léxico de usuário. No entanto, o desenvolvedor mecanismo não irá usar geralmente ISpLexicon::AddPronunciation e MapVirtualKey. ISpLexicon::RemovePronunciation Para adicionar ou remover palavras do usuário lexicons.

Quando o mecanismo implementa lexicons particulares através de ISpLexicon interface, chamar somente será SAPI ISpLexicon::GetPronunciations e MapVirtualKey. ISpLexicon::GetWords Sobre o léxico particular. Lexicons particulares podem ser modificadas por implementar a AddPronunciation ou ISpTTSEngine::Speak. RemovePronunciation Métodos para preencher lexicons.

Se o mecanismo caches pronúncias do usuário ou aplicativo lexicons, ele precisará chamar ISpLexicon::GetGeneration periodicamente para determinar se a pronúncia foi modificada por um aplicativo. Para eficiência otimizada, um mecanismo deve manter sincronização com os lexicons usuário e aplicativo. Testar a conformidade SAPI 5.0 pode verificar capacidade de um mecanismo para detecção alterações nos lexicons de usuário ou aplicativo.

Quando a chamar para GetGeneration Recupera um maior número de geração daquele recuperada pela chamar anterior, o mecanismo deve chamar ISpLexicon::GetGenerationChange ou ISpTTSEngine::Speak. GetWords a atualização de armazenar em cache.

O mecanismo pode adicionar lexicons particular para o ISpContainerLexicon interface. Como alternativa o mecanismo pode usar um personalizado método para implementar um léxico particular. No entanto, para garantir consistente comportamento entre todos os aplicativos, mecanismos sempre deve usar as pronúncias de lexicons de usuário e aplicativo.

CComPtr<ISpContainerLexicon> cpLexicon;
// load user lexicon and all application lexicons registered in the system
automatically
hr = cpLexicon.CoCreateInstance(CLSID_SpLexicon);  
// create your private lexicons implementing ISpLexicon, (for example, pMyLex1,
pMyLex2)
hr = cpLexicon->AddLexicon(pMyLex1, eLEXTYPE_PRIVATE1);
hr = cpLexicon->AddLexicon(pMyLex2, eLEXTYPE_PRIVATE2);
...

Os mecanismos podem acessar lexicons conforme o seguinte exemplo:

hr = cpLexicon->GetPronunciations(... eLEXTYPE_USER ...);
hr = cpLexicon->GetPronunciations(... eLEXTYPE_APP ...); 
hr = cpLexicon->GetPronunciations(... eLEXTYPE_USER | eLEXTYPE_APP | eLEXTYPE_PRIVATE1 | eLEXTYPE_PRIVATE2 ...);

Requisitos

Header sapi.h, sapi.idl
Library sapilib.lib
Windows Embedded CE Windows CE .NET 4.1 and later

See Also

Reference

SAPI Interfaces