Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/05/2005, 22:34
aragan2005
 
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