Speech macro diccionario lo que hace es buscar en una pagina el significado de una palabra, sin embargo no es sólo un comando de petición y respuesta sino que consulta si la palabra a buscar es la correcta o no.
Además, guarda un txt en una carpeta específica para que la próxima vez que se consulte por una misma palabra, esta no sea buscada en internet sino que en ese txt guardado.
El siguiente es el macro detallando algunas partes. (Sólo deben quitar el texto seguido de las //, copiar a un txt y luego a un macro, ya que es posible se copie con un formato que no reconocerá el macro).
El macro
Etiquetas de inicio
<?xml version=”1.0″ encoding=”UTF-16″?> <speechMacros>
Pregunta y guarda el valor de la pregunta
<command> <listenFor>[Chris] que significa […]</listenFor> //El comando para consultar a nuestro asistente ([Chris] contiene el nombre que pongamos en <rule name=”Chris”> por la palabra representada por […]) <waitFor seconds=”0.2″/> //Esperamos 0.2 segundos <setState name=”p_quesign” value=”{[…]}”/> //Guardamos el valor […] con el nombre p_quesign para reutilizarlo mas adelante <setState name=”quesign” value=”activa” /> //Confirmamos que el comando de pregunta esta activo <speak>¿Desea el significado de {[p_quesign]} ?</speak> //El asistente consulta si la palabra guardada es la que deseamos busque su significado </command>
Ejecuta el vbscript para buscar la palabra consultada
<command> <stateIsSet name="quesign" value="activa" /> //Utilizamos un “if”. Si la pregunta está activa, haremos lo que sigue <listenFor>[Correct]</listenFor> //Si confirmamos o decimos que es correcto (según <rule name=”Correct”>) <speak>Un momento señor</speak> <waitFor seconds=”1″/> <script language="VBScript"> //Trabajará un vbscript que buscará la palabra y la guardará en un txt para luego reproducirla (de texto a voz) <![CDATA[ Dim fso Set fso = CreateObject("Scripting.FileSystemObject") If (fso.FileExists("RUTA_DONDE_SE_GUARDARA_EL_ARCHIVO\{[p_quesign]}.txt")) Then EstadoDeArchivo = True Else EstadoDeArchivo = False End If If EstadoDeArchivo = False then Dim objFSO, IE Dim objOtF Proceso = Command.ResolveProperties("{[p_quesign]}") On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") Set IE = CreateObject("InternetExplorer.Application") Set WshShell = CreateObject("WScript.Shell") IE.Navigate "http://www.wordreference.com/definicion/" & Proceso IE.Visible = False Do While IE.Busy Application.wait(2.0) Loop For Each text In IE.Document.getElementsByTagName("ol") With objFSO.OpenTextFile("RUTA_DONDE_SE_GUARDARA_EL_ARCHIVO\{[p_quesign]}.txt", 8, True) .WriteLine text.innerText End With Next IE.Quit line = "RUTA_DONDE_SE_GUARDARA_EL_ARCHIVO\{[p_quesign]}.txt" txt = fso.OpenTextFile(line, 1).ReadAll txt.writeline txt txt.Close Application.Speak("" & txt ) Else line = "RUTA_DONDE_SE_GUARDARA_EL_ARCHIVO\{[p_quesign]}.txt" txt = fso.OpenTextFile(line, 1).ReadAll Application.Speak("" & txt ) Application.wait(1.5) Application.Speak("Lectura finalizada") end if ]]> </script> <setState name="p_quesign" /> //Reseteamos la palabra buscada (queda en nada) <setState name="quesign" /> //Desactivamos el comando </command>
Verifica la palabra a buscar
<command> <stateIsSet name="quesign" value="activa" /> //Si el comando está activo y decimos <listenFor>No […]</listenFor> //No y luego la palabra <setState name="p_quesign" value="{[…]}"/> //Guardará la nueva palabra <setState name="quesign" value="activa" /> //Activará el nuevo comando <speak>¿Desea el significado de {[p_quesign]}?</speak> //Preguntará si es la palabra correcta </command>
Cancelar lectura
<command> <stateIsSet name="quesign" value="activa" /> <listenFor>[Stop] lectura</listenFor> //Con este comando cancelamos la lectura <listenFor>No</listenFor> <setTextFeedback>Lectura cancelada</setTextFeedback> <setState name="p_quesign" /> <setState name="quesign" /> <speak speakFlags="2">Lectura cancelada</speak> <waitFor seconds="1"/> </command>
Regla para háblame
<rule name="Hablame"> <list> <p>hablame</p> <p>habla</p> <p>cuentame</p> <p>dime que sabes</p> <p>qué sabes</p> </list> </rule>
Regla para quienes
<rule name="Quienes"> <list> <p>quien es</p> <p>sabes que es</p> <p>que es</p> <p>sabes quien es</p> <p>que puedes decirme de</p> <p>que me puedes decir de</p> </list> </rule>
Regla para de
<rule name="De"> <list> <p>de</p> <p>sobre</p> </list> </rule>
Regla para stop
<rule name="Stop"> <list> <p>cancelar</p> <p>detener</p> <p>parar</p> <p>estop</p> <p>terminar</p> <p>finalizar</p> </list> </rule>
Regla para correcto
<rule name="Correct"> <list> <p>si</p> <p>sí</p> <p>correcto</p> <p>es correcto</p> <p>así es</p> <p>afirmativo</p> </list> </rule>
Regla para chris
<rule name="Chris"> <list> <p>Christine</p> </list> </rule>
Firma RSA y cierra de etiqueta de inicio
<Signature> ACÁ VA EL CÓDIGO GENERADO DE LOS SPEECH MACROS </Signature> </speechMacros>
Como pueden ver, speech macro diccionario ayuda a crear interacción con el asistente al dar la posibilidad de guardar palabras o comandos hasta que sean solicitados nuevamente. Por ejemplo: Si creamos un macro en el que el asistente consulte nuestro nombre, podemos guardarlo hasta que le preguntemos si lo recuerda.
Pueden descargar el macro de ESTE LINK.
Si lo descargan, no olviden cambiar la firma RSA del final y la ruta donde guardará el txt. También deben activar IExplore, ya que utiliza ese navegador en segundo plano para realizar la búsqueda de la palabra.
¡Apoya mi página para que pueda seguir publicando más contenido interesante!
Tu donación es crucial para mantenerla activa y continuar compartiendo artículos de calidad.
¡Gracias por tu apoyo continuo!
hola, se puede configurar para que se busque en otro diccionario online ?
Hola. Se puede cambiando esta página -> http://www.wordreference.com/definicion/ del código y poniendo la de resultados de tu preferencia.
Saludos.