IAgentCommand::SetVoice

[Microsoft Agent está en desuso a partir de Windows 7 y puede no estar disponible en versiones posteriores de Windows.]

HRESULT SetVoice(
   BSTR bszVoice  // voice text setting for Command
);

Establece la propiedad Voice para un comando.

  • Devuelve S _ OK para indicar que la operación se ha realizado correctamente.

bszVoice

BSTR que especifica el texto de la propiedad Voice de un comando.

Un comando debe tener su propiedad Voice y la propiedad Enabled establecidas para que sean accesibles por voz. También debe tener su propiedad VoiceCaption establecida para que aparezca en la ventana Comandos de voz. (Para la compatibilidad con versiones anteriores, si no hay VoiceCaption, se usa la opción Título).

La expresión BSTR que proporcione puede incluir caracteres de corchete ( ) para indicar palabras opcionales y caracteres de barra [ ] vertical ( ) para | indicar cadenas alternativas. Las alternativas deben incluirse entre paréntesis. Por ejemplo, "(hello there hi)" indica al motor de voz que acepte [ ] | "hello", "hello there" o "hi" para el comando. No olvide incluir los espacios adecuados entre el texto entre corchetes o paréntesis y el texto que no está entre corchetes ni paréntesis.

Puede usar el operador star ( ) para especificar cero o más instancias de las palabras incluidas en el grupo o el operador más (+) para especificar una o varias * instancias. Por ejemplo, el siguiente resultado es una gramática que admite "try this", "please try this" y "please please try this", with unlimited iterations of "please":

   "please* try this"

El siguiente formato de gramática excluye "try this" porque el operador + define al menos una instancia de "please":

   "please+ try this"

Los operadores de repetición siguen las reglas normales de precedencia y se aplican al elemento de texto inmediatamente anterior. Por ejemplo, la siguiente gramática da como resultado "Nueva York" y "Nueva York", pero no "Nueva York Nueva York":

   "New York+"

Por lo tanto, normalmente querrá usar estos operadores con los caracteres de agrupación. Por ejemplo, la siguiente gramática incluye "Nueva York" y "Nueva York Nueva York":

   "(New York)+"

Los operadores de repetición son útiles cuando se desea crear una gramática que incluya una secuencia repetida, como un número de teléfono o una especificación de una lista de elementos:

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

Aunque los operadores también se pueden usar con los corchetes (un carácter de agrupación opcional), esto puede reducir la eficacia del procesamiento del Agente de la gramática.

También puede usar puntos suspensivos (...) para admitir la detención de palabras, es decir, decir al motor de reconocimiento de voz que ignore las palabras que se pronuncian en esta posición en la frase (a veces denominadas palabras no utilizados). Por lo tanto, el motor de voz solo reconoce palabras específicas en la cadena, independientemente de cuando se habla con palabras o frases adyacentes. Por ejemplo, si establece esta propiedad en " [ ... ] check mail ... " el motor de reconocimiento de voz coincidirá con frases como [ ] "please check mail" o "check mail please" con este comando. Los puntos suspensivos se pueden usar en cualquier lugar dentro de una cadena. Sin embargo, tenga cuidado con esta técnica, ya que la configuración de voz con puntos suspensivos puede aumentar el potencial de coincidencias no deseadas.

Al definir las palabras y la gramática del comando, asegúrese siempre de incluir al menos una palabra necesaria; es decir, evite proporcionar solo palabras opcionales. Además, asegúrese de que la palabra solo incluye palabras y letras pronunciables. En el caso de los números, es mejor escribir la palabra en lugar de usar la representación numérica. Además, omita los signos de puntuación o símbolos. Por ejemplo, en lugar de # "1 pizza de 1 USD", use "la pizza número uno diez dólares". Incluir caracteres no pronunciables o símbolos para un comando puede hacer que el motor de voz no pueda compilar la gramática de todos los comandos. Por último, haga que el parámetro de voz sea lo más distinto posible de otros comandos de voz que defina. Cuanto mayor sea la similitud entre la gramática de voz para los comandos, más probable es que el motor de voz realice un error de reconocimiento. También puede usar las puntuaciones de confianza para distinguir mejor entre dos comandos que pueden tener una gramática de voz similar o similar.

Al establecer la propiedad Voz de un comando, se habilitan automáticamente los servicios de voz del Agente, lo que hace que la clave de escucha y la sugerencia de escucha estén disponibles. Sin embargo, no carga el motor de reconocimiento de voz.

Nota

Las características gramaticales disponibles pueden depender del motor de reconocimiento de voz. Es posible que quiera consultar con el proveedor del motor para determinar qué opciones de gramática se admiten. Use IAgentCharacterEx::SRModeID para especificar un motor.

Consulte también

IAgentCommand::GetVoice, IAgentCommand::SetCaption, IAgentCommand::SetEnabled, IAgentCommands::Add, IAgentCommands::Insert