Speak (método)

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

Descripción

Habla el archivo de texto o sonido especificado para el carácter especificado.

Syntax

agent**. Caracteres ("CharacterID"). Speak** [Text], [Url]

Parte Descripción
Texto Opcional. Cadena que especifica lo que dice el carácter.
Url Opcional. Expresión de cadena que especifica la ubicación de un archivo de audio (. WAV o . Formato LWV). La ubicación se puede especificar como un archivo (incluida una especificación de ruta de acceso UNC) o una dirección URL (cuando los datos de animación de caracteres también se recuperan a través del protocolo HTTP).

 

Observaciones

Aunque los parámetros Text y Url son opcionales, se debe proporcionar uno de ellos. Para usar este método con un carácter configurado para hablar solo en su globo de palabras o con un motor de texto a voz (TTS), simplemente proporcione el parámetro Text . Incluya un espacio entre palabras para definir saltos de palabra adecuados en el globo de palabras, incluso para idiomas que no incluyan tradicionalmente espacios.

También puede incluir caracteres de barra vertical (|) en el parámetro Text para designar cadenas alternativas, de modo que el servidor elija aleatoriamente una cadena diferente cada vez que procese el método.

La compatibilidad de caracteres de la salida de TTS se define cuando el carácter se compila mediante el Editor de caracteres del Agente de Microsoft. Para generar la salida de TTS, ya debe instalarse un motor TTS compatible antes de llamar a este método. Para obtener más información, consulte Acceso a servicios de voz.

Si usa un archivo de sonido grabado (. WAV o . Salida solo de formato LWV) para el carácter, especifique la ubicación del archivo en el parámetro Url . Esta especificación de archivo puede incluir una ruta de acceso local (absoluta o relativa) o una convención de nomenclatura universal (UNC). El nombre de archivo no puede incluir caracteres no incluidos en la página de códigos de EE. UU. 1252. Sin embargo, si usa el protocolo HTTP para acceder a los datos de animación de caracteres, use el método Get para cargar la animación antes de llamar al método Speak . Vea Usar la herramienta de edición de sonido de información lingüística de Microsoft para obtener información sobre creativos. Archivos LWV.

Al usar la salida de archivo de sonido grabada, todavía puede usar el parámetro Text para especificar las palabras que aparecen en el globo de palabras del carácter. Sin embargo, si especifica un archivo de sonido mejorado lingüísticamente (. LWV) para el parámetro Url y no especifica texto para el globo de palabras, el parámetro Text usa el texto almacenado en el archivo.

También puede variar los parámetros de la salida de voz con etiquetas especiales que incluya en el parámetro Text . Para obtener más información, consulte Etiquetas de salida de voz de Microsoft Agent.

Si declara una referencia de objeto y la establece en este método, devuelve un objeto Request . Puede usarlo para sincronizar otras partes del código con la salida hablada del carácter, como en el ejemplo siguiente:

   Dim SpeakRequest as Object
...
   Set SpeakRequest = Genie.Speak ("And here it is.")
...
   Sub Agent1_RequestComplete (ByVal Request as Object)
   ' Make certain the request exists
   If SpeakRequest Not Nothing Then
      ' See if it was this request
      If Request = SpeakRequest Then
         ' Display the message box 
         Msgbox "Ta da!"
      End If
   End If
   End Sub

También puede usar un objeto Request para comprobar si hay ciertas condiciones de error. Por ejemplo, si usa el método Speak para hablar y no tiene instalado un motor TTS compatible, el servidor establece la propiedad Status del objeto Request en "failed" con su propiedad Description en "Class not registered" o "Unknown or object returned error". Para determinar si tiene instalado un motor de TTS, use la propiedad TTSModeID .

Del mismo modo, si tiene el carácter que intenta hablar un archivo de sonido y si el archivo no se ha cargado o hay un problema con el dispositivo de audio, el servidor también establece la propiedad Status del objeto Request en "failed" con un número de código de error adecuado.

También puede incluir etiquetas de voz de marcador en el texto De habla para sincronizar el código:

   Dim SpeakRequest as Object
...
   Set SpeakRequest = Genie.Speak ("And here \mrk=100\it is.")
...
   Sub Agent1_Bookmark (ByVal BookmarkID As Long)
   If BookmarkID = 100 Then
      ' Display the message box 
         Msgbox "Tada!"
      End If
   End Sub

Para más información sobre la etiqueta de voz de marcador, consulte Etiquetas de salida de voz.

El método Speak usa la última acción reproducida para determinar qué animación de habla se va a reproducir. Por ejemplo, si precedió al comando Speak con un play "GestureRight", el servidor reproducirá GestureRight y, a continuación, la animación de habla GestureRight . Si la última animación reproducida no tiene animación de habla, el Agente reproduce la animación asignada al estado de habla del personaje.

Si llamas a Speak y el canal de audio está ocupado, no se escuchará la salida de audio del carácter, pero el texto se mostrará en el globo de palabras.

La separación automática de palabras del agente en el globo de palabras interrumpe las palabras mediante caracteres de espacio en blanco (por ejemplo, Espacio o Tabulación). Sin embargo, si no es posible, puede romper una palabra para ajustarse al globo. En idiomas como japonés, chino y tailandés, donde los espacios no se usan para dividir palabras, inserte un carácter de espacio de ancho cero (0x200B) Unicode entre caracteres para definir saltos lógicos de palabras.

Nota

La propiedad Enabled del globo de palabras también debe ser True para que se muestre texto.

 

Nota

Establezca el identificador de idioma del carácter (estableciendo el LanguageID del carácter antes de usar el método Speak para asegurarse de que se muestre el texto adecuado dentro del globo de palabras.

 

Consulte también

Evento Bookmark, Evento RequestStart, Evento RequestComplete