Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Control Voice Command

Estas en el tema de Control Voice Command en el foro de Visual Basic clásico en Foros del Web. Hola! Quería información sobre el control Voice Command. He buscado en la librería MSDN, pero lo único que encuentro es acerca del control TextToSpeech. Lo ...
  #1 (permalink)  
Antiguo 12/04/2005, 02:10
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 20 años, 10 meses
Puntos: 0
Pregunta Control Voice Command

Hola!
Quería información sobre el control Voice Command. He buscado en la librería MSDN, pero lo único que encuentro es acerca del control TextToSpeech. Lo que quiero hacer es controlar funciones del PC mediante la voz, y creo que para ello me serviría el control Voice Command, pero no tengo ni idea de por dónde empezar a utilizarlo. Alguien sabe cómo funciona?
Muchas gracias a todos!
  #2 (permalink)  
Antiguo 06/05/2005, 18:32
 
Fecha de Ingreso: abril-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 0
Yo estoy buscando la misma informacion, no tengo mucho y requiero aprender a controlar estos componentes... estoy dandome golpes con visual y no llego a nada, yo me especializo mas en ASP, y lo que me interesa es integrar la voz con el manejo de los controles de outlook express para enviar y recibir correos...

si llego a saber algo lo colocare en el foro...
saludos
Er_Duque
  #3 (permalink)  
Antiguo 09/05/2005, 01:14
 
Fecha de Ingreso: julio-2003
Ubicación: Donostia-San Sebastián
Mensajes: 129
Antigüedad: 20 años, 10 meses
Puntos: 0
Hola Er_Duque!
Yo seguí trabajando con este control, y la verdad es que no he conseguido mucha información sobre el tema, pero más o menos he conseguido hacer lo que me interesaba. Para conseguir que escuche hace falta instalarle unos controles que hay que descargarse por Internet, y son gratuitos. Pero hay que tener cuidado y descargarse los del idioma que te interese, porque si no luego hay muchos problemas para desinsatalarlos!!! Esto es muy importante! Hay varios sitios desde donde te los puedes descargar, pero aquí te pongo la página oficial de microsoft:
http://www.microsoft.com/msagent/downloads/user.asp
Ahí puedes elegir el idioma que desees.
Con esos controles tienes que configurar el micrófono y los auriculares o altavoces, para que tu voice command te entienda.
Normalemente el voice command se utiliza con un TextToSpeech, pero tampoco es extrictamente necesario, lo que ocurre es que cuando hablas al ordenador, a veces es recomendable que te conteste para saber qué es lo que te ha entendido.
Yo he trabajado con dos eventos del voice command:

Para controlar si entra sonido:

Private Sub DirectSR1_PhraseFinish(ByVal flags As Long, ByVal beginhi As Long, ByVal beginlo As Long, ByVal endhi As Long, ByVal endlo As Long, ByVal Phrase As String, ByVal parsed As String, ByVal results As Long)
Private Sub DirectSR1_PhraseFinish(ByVal flags As Long, ByVal beginhi As Long, ByVal beginlo As Long, ByVal endhi As Long, ByVal endlo As Long, ByVal Phrase As String, ByVal parsed As String, ByVal results As Long)
Select Case Phrase
Case Is = MINOMBRE
TTS1.Speak "Hola " + MINOMBRE
Case Is = "año"
TTS1.Speak Year(Date)
End Select
End Sub

TTS1 será un control TextToSpeech, que te contestará según lo que le hayas dicho, así comprovarás si te entiende lo que le dices.

Con el siguiente evento controlaré el volumen del sonido que entra:
Private Sub DirectSR1_VUMeter(ByVal beginhi As Long, ByVal beginlo As Long, ByVal level As Long)

en la variable "level" irá el volumen del sonido. A partir de 50000 es un volumen de sonido normal. Esto puede servir para ejecutar eventos cuando haya un sonido fuerte, por ejemplo.

Espero que esto te sirva por lo menos para empezar con algo.
  #4 (permalink)  
Antiguo 10/05/2005, 22:34
 
Fecha de Ingreso: mayo-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Hemos de reconocer que este es un tema vital para el desarrollo de futuras aplicaciones. Por esta razón es un campo en el que se está investigando e innovando continuamente. Para realizar esta tarea necesitamos crear una aplicación con soporte DDE, este tipo de aplicaciones son capaces de establecer una comunicación directa con otra aplicación y así poder transferir datos mediante los cuales se pueda tomar una decisión u otra. Visual Basic para trabajar con la arquitectura DDE cuenta con varias instrucciones, utilizaremos alguna de ellas para mandar los comandos de voz a los demás programas. Necesitaremos también controlar el estado de lo que hable el usuario, esto lo conseguimos con la API de Windows Speech que nos facilitará actuar según la pronunciación de determinadas frases. Para simular una pulsación de tecla como si la hubiese pulsado el usuario utilizaremos la función SENDKEYS. Si su aplicación recibe comandos hablados tendrá que proporcionar a la aplicación destino las teclas necesarias según la frase que se halla dicho por el micrófono. Si por ejemplo lo que queremos es que arranque la función Archivo de un documento Word cuando el usuario pronuncie Archivo tendríamos que mandar la pulsación de las teclas ALT+A. para llevar a cabo nuestro propósito. La sintaxis sería: SendKeys string[, wait] En esta función nos encontramos como argumento String en el que especificamos las pulsaciones de las teclas que se van a enviar. El siguiente argumento es Wait, este nos indica el modo de espera. Si es False devolveremos el control al procedimiento y si es True procesa las teclas antes de devolver el control al procedimiento. Es aconsejable que le eche un vistazo a la documentación sobre esta función ya que le ayudará bastante a desarrollar su aplicación de voz. Nosotros no se la explicamos con toda profundidad ya que puede obtener la información de la ayuda de Visual Basic 6.0 sin mayor problema. Antes de nada tendremos que agregar a nuestro proyecto las referencias siguientes: VoiceCommand 1.0 Type library, VoiceText 1.0 Type library, Dictctl OLE Control Module. Una vez hecho esto empezaremos con el desarrollo de nuestro código. Para desarrollar nuestro proyecto agregaremos al proyecto un formulario, este se encargará de informar sobre el estado del propio reconocimiento de voz. Por otra parte tendremos también un módulo para definir las variables y módulos de clase. Creamos dos objetos, uno para gestionar los comandos hablados por el usuario "comandos de voz" y otro para definir los comandos que se pueden decir a este último lo llamaremos "menú de voz". La función para el reconocimiento de voz es esta: Function CommandOther(pszCommand As String, pszApp As String, pszState As String) ' El valor de la variable pszCommand es o cuando no se ' Reconoce el comando hablado. If Len(pszCommand) = 0 Then Form1.Text1.Text = "REPITA, POR FAVOR" End If End Function Gestionaremos entonces las palabras reconocidas mediante la siguiente función: Function CommandRecognize(pszCommand As String, dwID As Long) Es entonces cuando asignamos la cadena de caracteres que creamos oportuna: Form1.Text1.Text = pszCommand Preguntamos por dicha cadena que corresponde a los comandos reconocidos: ' Preguntamos por el comando reconocido If pszCommand = "Nuevo" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(n)", True End If If pszCommand = "Abrir" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(a)", True End If If pszCommand = "Cerrar" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(c)", True End If If pszCommand = "Guardar" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(g)", True End If If pszCommand = "Guardar como" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(u)", True End If If pszCommand = "Versiones" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(e)", True End If If pszCommand = "Configurar página" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(r)", True End If If pszCommand = "Vista preliminar" Then ' esta variable contiene el programa con el ' que vamos a trabajar. AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(m)", True End If If pszCommand = "Imprimir" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(i)", True End If If pszCommand = "Enviar a" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(v)", True End If If pszCommand = "Propiedades" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(p)", True End If If pszCommand = "Salir" Then AppActivate "Microsoft Word" ' Se envía la secuencia de teclas pulsadas SendKeys "%(a)+(s)", True End If Definimos el menú edición y sus opciones: If pszCommand = "Deshacer" Then AppActivate "Microsoft Word" SendKeys "%(e)+(d)", True End If If pszCommand = "Repetir" Then AppActivate "Microsoft Word" SendKeys "%(e)+(r)", True End If If pszCommand = "Cortar" Then AppActivate "Microsoft Word" SendKeys "%(e)+(t)", True End If If pszCommand = "Copiar" Then AppActivate "Microsoft Word" SendKeys "%(e)+(c)", True End If If pszCommand = "Pegar" Then AppActivate "Microsoft Word" SendKeys "%(e)+(p)", True End If If pszCommand = "Pegado especial" Then AppActivate "Microsoft Word" SendKeys "%(e)+(e)", True End If If pszCommand = "Pegar como hipervínculo" Then AppActivate "Microsoft Word" SendKeys "%(e)+(m)", True End If If pszCommand = "Borrar" Then AppActivate "Microsoft Word" SendKeys "%(e)+(a)", True End If If pszCommand = "Seleccionar todo" Then AppActivate "Microsoft Word" SendKeys "%(e)+(s)", True End If If pszCommand = "Buscar" Then AppActivate "Microsoft Word" SendKeys "%(e)+(v)", True End If If pszCommand = "Reemplazar" Then AppActivate "Microsoft Word" SendKeys "%(e)+(z)", True End If If pszCommand = "Ir a" Then AppActivate "Microsoft Word" SendKeys "%(e)+(i)", True End If If pszCommand = "Vínculos" Then AppActivate "Microsoft Word" SendKeys "%(e)+(v)", True End If If pszCommand = "Objeto" Then AppActivate "Microsoft Word" SendKeys "%(e)+(o)", True End If End Function Registramos la aplicación en el engine de reconocimiento (esto es fundamental) aún que se puede hacer al cargar el formulario hemos preferido ponerlo en un botón. Private Sub Command1_Click() 'Creamos el objeto Set VCmd = Nothing Set VCmd = CreateObject("Speech.VoiceCommand") 'Registramos la aplicación Call VCmd.Register("") 'Definimos la función callback establecida en el módulo de clase VCmd.Callback = "comandos.VCmdSink" 'Creamos un menú de voz para poder agregarle los comandos que reconocer: Set vmenu = VCmd.MenuCreate("Comandos de voz", "prueba", 0, "español", vcmdmc_CREATE_ALWAYS) 'Activamos el micrófono para poder recibir los comandos audibles del usuario: VCmd.Awake = True 'Introducimos los comandos del menú de Word (Archivo y Edición) en el menú de voz creado: Call vmenu.Add(1, "Nuevo", "general", "prueba") Call vmenu.Add(2, "Abrir", "general", "prueba") Call vmenu.Add(3, "Cerrar", "general", "prueba") Call vmenu.Add(4, "Guardar", "general", "prueba") Call vmenu.Add(5, "Guardar como", "general", "prueba") Call vmenu.Add(6, "Versiones", "general", "prueba") Call vmenu.Add(7, "Configurar página", "general", "prueba") Call vmenu.Add(8, "Vista preliminar", "general", "prueba") Call vmenu.Add(9, "Imprimir", "general", "prueba") Call vmenu.Add(10, "Enviar a", "general", "prueba") Call vmenu.Add(11, "Propiedades", "general", "prueba") Call vmenu.Add(12, "Salir", "general", "prueba") Call vmenu.Add(13, "Deshacer", "general", "prueba") Call vmenu.Add(14, "Repetir", "general", "prueba") Call vmenu.Add(15, "Cortar", "general", "prueba") Call vmenu.Add(16, "Copiar", "general", "prueba") Call vmenu.Add(17, "Pegar", "general", "prueba") Call vmenu.Add(18, "Pegado especial", "general", "prueba") Call vmenu.Add(19, "Pegar como hipervínculo", "general", "prueba") Call vmenu.Add(20, "Borrar", "general", "prueba") Call vmenu.Add(21, "Seleccionar todo", "general", "prueba") Call vmenu.Add(22, "Buscar", "general", "prueba") Call vmenu.Add(23, "Reemplazar", "general", "prueba") Call vmenu.Add(24, "Ir a", "general", "prueba") Call vmenu.Add(25, "Vínculos", "general", "prueba") Call vmenu.Add(26, "Objeto", "general", "prueba") 'Y por último activamos el menú: vmenu.Active = True End Sub Creamos un botón para cerrar el formulario: Private Sub Command2_Click() End End Sub Y ya sólo recordar que hay que eliminar los objetos API como de voz y menú de voz Private Sub Form_Unload(Cancel As Integer) Set VCmd = Nothing Set vmenu = Nothing End End Sub Espero que este pequeño ejemplo le halla servido para hacerse una idea de cómo funciona el reconocimiento de voz, en este caso está hecho para hacer funcionar las opciones del Word pero de la misma forma puede lanzar consultas SQL como usted comentaba. tomado de PC world
  #5 (permalink)  
Antiguo 16/05/2005, 15:03
 
Fecha de Ingreso: abril-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 0
Gracias por la info aigama y aragan, realmente lo que tenemos aqui es algo fundamental para iniciar cualquier investigacion... espero solventar varias cosas y que lleguen a solventarlas ustedes tambien...

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:48.