Partilhar via


IAgentCommands::SetVoice

[O Microsoft Agent foi preterido a partir do Windows 7 e pode não estar disponível em versões subsequentes do Windows.]

HRESULT SetVoice(
   BSTR bszVoice  // the Voice setting for Command collection
);

Define a propriedade Voice text para umCommand .

  • Retorna S_OK para indicar que a operação foi bem-sucedida.

bszVoice

Um BSTR que especifica o valor para a propriedade Voice text de uma coleçãoCommands.

Uma coleçãoComandosdeve ter sua propriedade Voice text definida para ser acessível por voz. Ele também deve ter sua propriedade VoiceCaption ou Caption definida para aparecer na janela Comandos de voz e sua propriedade Visible definida como True apareça no menu pop-up do personagem.

A expressão BSTR fornecida pode incluir caracteres entre colchetes ([ ]) para indicar palavras opcionais e caracteres de barra vertical (|) para indicar cadeias de caracteres alternativas. Os suplentes devem ser colocados entre parênteses. Por exemplo, "(olá [lá] | hi)" diz ao mecanismo de fala para aceitar "olá", "olá lá" ou "oi" para o comando. Lembre-se de incluir espaços apropriados entre as palavras que você incluir entre colchetes ou parênteses, bem como outro texto. Lembre-se de incluir espaços apropriados entre o texto entre colchetes ou parênteses e o texto que não está entre colchetes ou parênteses.

Você pode usar o operador estrela (*) para especificar zero ou mais ocorrências das palavras incluídas no grupo ou o operador mais (+) para especificar uma ou mais instâncias. Por exemplo, o seguinte resulta em uma gramática que suporta "try this", "please try this" e "please please try this", com iterações ilimitadas de "please":

   "please* try this"

O seguinte formato gramatical exclui "try this" porque o operador + define pelo menos uma instância de "please":

   "please+ try this"

Os operadores de repetição seguem regras normais de precedência e aplicam-se ao item de texto imediatamente anterior. Por exemplo, a seguinte gramática resulta em "New York" e "New York York", mas não em "New York New York":

   "New York+"

Portanto, você normalmente deseja usar esses operadores com os caracteres de agrupamento. Por exemplo, a gramática a seguir inclui "New York" e "New York New York":

   "(New York)+"

Os operadores de repetição são úteis quando você deseja compor uma gramática que inclua uma sequência repetida, como um número de telefone ou a especificação de uma lista de itens:

   "call (one|two|three|four|five|six|seven|eight|nine|zero|oh)*"
   "I'd like (cheese|pepperoni|pineapple|canadian bacon|mushrooms|and)+"

Embora os operadores também possam ser usados com colchetes (um caractere de agrupamento opcional), isso pode reduzir a eficiência do processamento da gramática pelo Agent.

Você também pode usar uma reticência (...) para apoiar de deteção de palavras, ou seja, dizer ao mecanismo de reconhecimento de fala para ignorar palavras faladas nessa posição na frase (às vezes chamada de lixo palavras). Quando você usa reticências, o mecanismo de fala reconhece apenas palavras específicas na cadeia de caracteres, independentemente de quando faladas com palavras ou frases adjacentes. Por exemplo, se você definir essa propriedade como "[...] check mail [...]" o mecanismo de reconhecimento de fala fará a correspondência de frases como "please check mail" ou "check mail please" para este comando. As elipses podem ser usadas em qualquer lugar dentro de uma corda. No entanto, tenha cuidado ao usar esta técnica, pois as configurações de voz com elipses podem aumentar o potencial de correspondências indesejadas.

Ao definir as palavras e a gramática do seu comando, inclua pelo menos uma palavra que seja necessária; ou seja, evite fornecer apenas palavras opcionais. Além disso, certifique-se de que a palavra inclui apenas palavras e letras pronunciáveis. Para números, é melhor soletrar a palavra em vez de usar uma representação ambígua. Por exemplo, "345" não é uma boa forma gramatical. Da mesma forma, em vez de "IEEE", use "I triple E". Além disso, omita qualquer pontuação ou símbolos. Por exemplo, em vez de "a pizza #1 $10!", use "a pizza número um dez dólares". A inclusão de caracteres ou símbolos não pronunciáveis para um comando pode fazer com que o mecanismo de fala não consiga compilar a gramática de todos os seus comandos. Por fim, torne seu parâmetro de voz o mais distinto possível de outros comandos de voz que você definir. Quanto maior a semelhança entre a gramática de voz para comandos, maior a probabilidade de o mecanismo de fala cometer um erro de reconhecimento. Você também pode usar as pontuações de confiança para distinguir melhor entre dois comandos que podem ter gramática de voz semelhante ou similar.

Você pode incluir em sua gramática palavras na forma de "texto\pronúncia", onde "texto" é o texto exibido e "pronúncia" é o texto que esclarece a pronúncia. Por exemplo, a gramática, "1st\first", seria reconhecida quando o usuário disser "first", mas o evento Command retornará o texto "1st\first". Você também pode usar IPA (Alfabeto Fonético Internacional) para especificar uma pronúncia iniciando a pronúncia com um caractere de sinal de libra ("#"), em seguida, o texto que representa a pronúncia IPA.

Para mecanismos de reconhecimento de fala japoneses, você pode definir a gramática na forma "kana\kanji", reduzindo as pronúncias alternativas e aumentando a precisão. (A ordem é invertida para compatibilidade com versões anteriores.) Isto é particularmente importante para a pronúncia de nomes próprios em Kanji. No entanto, você pode simplesmente passar em "kanji", sem o Kana, caso em que o motor deve ouvir todas as pronúncias aceitáveis para o Kanji. Você também pode passar apenas Kana.

Exceto para erros usando os caracteres de formatação de agrupamento ou repetição, o Microsoft Agent não relatará erros em sua gramática, a menos que o próprio mecanismo relate o erro. Se você passar texto em sua gramática que o mecanismo não consegue compilar, mas o mecanismo não manipula e retorna como um erro, o Agente não pode relatar o erro. Portanto, o aplicativo cliente deve ter cuidado ao definir a gramática para a propriedade Voice.

Observação

Os recursos gramaticais disponíveis podem depender do mecanismo de reconhecimento de fala. Você pode querer verificar com o fornecedor do mecanismo para determinar quais opções gramaticais são suportadas. Use o SRModeID para usar um mecanismo específico.

 

A operação dessa propriedade depende do estado do estado de reconhecimento de fala do servidor do Microsoft Agent. Por exemplo, se o reconhecimento de voz estiver desativado ou não instalado, esta função não terá efeito imediato. No entanto, se o reconhecimento de fala estiver habilitado durante uma sessão, o comando ficará acessível quando seu aplicativo cliente estiver ativo de entrada.

Ver também

IAgentCommands::GetVoice, IAgentCommands::SetCaption, IAgentCommands::SetVisible