REVISTA
JUVENTUD Y CIENCIA SOLIDARIA:
En el camino de la investigación
Prototipo de asistente virtual en
phyton
Diego Patricio Rivera Guachichulca
Diego Patricio Rivera Guachichulca
,
nací el 4 de diciembre del 2004, tengo 16
años. Soy estudiante de la Unidad Educativa
Técnico Salesiano, actualmente pertenezco
al grupo del 2E2. Soy un apasionado por el
desarrollo web, me gustan los videojuegos
y siempre me ha interesado el mundo de la
programación.
Resumen
El siguiente artículo trata sobre un asistente virtual
para personas con discapacidad y para el aumento de
efectividad en el trabajo.
El primer prototipo tenía varios fallos y solo abría
páginas web y algunas aplicaciones, la cantidad era
muy limitada.
Además de que no solía reconocer muy bien los coman-
dos y las instrucciones.
Teniendo eso en cuenta presento la mejora de ese asis-
tente con la diferencia de que este tiene una estructura
superior y la implementación de funciones para que
tenga un rendimiento más aceptable, el mismo está
realizado en el lenguaje de programación Python, tiene
varias bibliotecas y dulos que facilitaron su desarro-
llo y ayudan a que sea más eficiente.
Dichas bibliotecas y dulos son de libre acceso lo que
hace que cualquier persona pueda utilizarlas, además
de que tienen documentación en la página oficial de
Python lo que ayudará a tener una idea de cómo fun-
ciona cada uno. En dichas documentaciones hay un
ejemplo para asegurar el buen uso del dulo o la
biblioteca.
36
En el camino de la investigación 37
El objetivo de este asistente es el mismo que el anterior
y también fue desarrollado en un IDE de Microsoft
(Visual Studio Code) que es muy similar al entorno
de desarrollo Visual Studio utilizado para el anterior
asistente. La razón para cambiar a Visual Studio Code
es porque al trabajar con Python en ese IDE es muy
cómodo lo que facilita el desarrollo del asistente.
Palabras clave: IDE, Python, función, PIP, CMD
Explicación del tema
El lenguaje de programación Python es considerado
uno de los mejores y utilizado en varios campos: desa-
rrollo web, machine laearning, análisis de datos, pro-
gramación orientada a objetos y muchos más.
Pero en esta ocasión se emplea para realizar un
asistente virtual junto al CMD para instalar las bi-
bliotecas; los dulos no hay necesidad de instalarlos
ya que vienen junto a Python.
El proceso es abrir el CMD
Figura 1. CMD de Windows
Fuente: Autor
Y buscar la biblioteca en la página de Python para
que nos el PIP.
Figura 2.
Página de Python para obtener el instalador de
la Biblioteca
Fuente: Autor
Eso pegamos en el CMD para que se nos instale la
Biblioteca.
Figura 3.
CMD de Windows después de instalar una bi-
blioteca
Fuente: Autor
Lo siguiente es instalar los dulos y bibliotecas
necesarias; es de recordar que las bibliotecas se instalan
aparte y están marcadas en la imagen con un #pip.
Figura 4.
IDE Visual Studio Code, digo con las bi-
bliotecas necesarias
Fuente: Autor
Luego se definen todas las variables que se va a
usar, además de eso se habilita el parlante para que
el asistente responda con la voz predeterminada de
Windows.
Eso definirá el booleano para iniciar el asistente y
mantenerlo activo.
Figura 5. Variables del digo
Fuente: Autor
Ya se tiene los modelos, bibliotecas y variables
necesarias del asistente, lo siguiente será definir las
funciones para acortar líneas de digo, para que se
vuelva más eficiente.
En este caso se usan tres funciones; una para que
el asistente nos responda, otra para que nos salude
cada vez que lo activemos y la tercera que es la más
importante será para recibir órdenes.
38 Juventud y Ciencia Solidaria
Primera función
Esta será la función para que el asistente pueda hablar,
se debe definir la función.
Figura 6. Se define la primera función
Fuente: Autor
Y según la tabulación se tiene que poner los si-
guientes atributos a la variable de parlante para que
funcione.
Figura 7. Parlante ya funcionando
Fuente: Autor
Cada vez que se llame a esta función, el parlante
se reproducirá con la voz predeterminada de Windows
el texto recibido.
Segunda función
Además de lo ya hecho anteriormente, se establece
un valor a la variable hora, con la instrucción date-
time.datetime.now().hour. Python tomará la hora y le
pondrá ese valor, luego se p ondrá que imprima la hora
en pantalla para comprobar que sirve.
Figura 8. Segunda función
Fuente: Autor
Figura 9. Hora que nos da el asistente
Fuente: Autor
Figura 10. Hora del computador
Fuente: Autor
A continuación, se definen condicionales para que
dependiendo de la hora el asistente salude por el nom-
bre dado.
Figura 11. Saludo con usuario
Fuente: Autor
Tercera función
Además de definir la función, también se define que
tome el audio del micrófono y pueda tomar las instruc-
ciones dadas; se pide que imprima en pantalla para
asegurar que esté recibiendo órdenes y probar que está
funcionando.
Figura 12. Tercera función con el micrófono definido
Fuente: Autor
Después de esto usaremos un try para asegurar
que el asistente reciba las órdenes; si el asistente no
logra reconocer ninguna instrucción se lo tomará como
error y lo notificará, esto se realiza para garantizar
que su funcionamiento sea correcto. En caso de que la
instrucción se entienda retornará lo que entendió.
Figura 13.
Try para que asegurar que se reciba instruc-
ciones
Fuente: Autor
Figura 14. Asistente no reconoció ninguna instrucción
Fuente: Autor
En el camino de la investigación 39
Estructura principal del asistente
Después de definir todas las funciones se empieza con
el asistente, para programar que salude; además de
eso, se usará el booleano en True para indicar que se
quiere que se mantenga activo.
Figura 15. Inicio de la estructura del asistente
Fuente: Autor
Después de esto se hará que el asistente sea capaz
de buscar personas en Wikipedia usando la biblioteca.
Para esto se comprueba que la palabra Wikipedia
esté en la instrucción.
Figura 16.
Comprobación para buscar datos en Wikipedia
Fuente: Autor
Después de esto se escribe una línea para que se
escuche el personaje que queremos buscar, se lo obtiene
de Wikipedia con la instrucción wikipedia.summary, se
le dirá que diga el resultado y lo imprima en pantalla.
Figura 17. Búsqueda en Wikipedia
Fuente: Autor
Como la biblioteca de Wikipedia está en inglés el
resultado se obtendrá en ese idioma.
Figura 18. Resultado Búsqueda
Fuente: Autor
Después se crea una instrucción para que diga la
hora exacta; se realiza lo mismo que la función de
saludo, pero con la diferencia de que se va a conseguir
los datos de las horas, minutos y segundos con la orden
tiempo=datetime.datetime.now().strftime("%H:%M:-
%S")
Figura 19. Hora
Fuente: Autor
Figura 20. Asistente da la hora
Fuente: Autor
Después se programa que recomiende música, el
asistente podrá abrir la canción en YouTube, para esto
se utilizará la biblioteca webbrowser y la instrucción
webbrowser, se usa una variable cuyo valor generará
números al azar, dependiendo abrirá una p estaña en
YouTube con la canción que corresponda a la opción
que salió.
Figura 21. Recomendación de música
Fuente: Autor
40 Juventud y Ciencia Solidaria
Figura 22. Asistente abre YouTube con la canción obtenida en la opción 6
Fuente: Autor
Al igual que se pide abrir YouTube con una canción
se puede hacer con cualquier página web, por ejemplo,
Esemtia, para esto es necesario copiar el enlace de la
página y ponerlo en la instrucción webbrowser.
Figura 23. Esemtia en la instrucción webbrowser
Fuente: Autor
Figura 24. Asistente abre Esemtia
Fuente: Autor
Figura 25. Asistente abre Esemtia
Fuente: Autor
Pero no solo puede hacer eso, sino que también
puede abrir cualquier archivo, lo único que necesita-
mos es usar el dulo os y la ruta, la instrucción
necesaria es os.startfile.
Figura 26. Asistente debe abrir la carpeta de soporte técnico
Fuente: Autor
En el camino de la investigación 41
Conclusiones
Este asistente puede cumplir su objetivo principal, pero
aún le falta mucho, por ejemplo, abrir aplicaciones y
una interfaz gráfica para que sea más fácil usarlo;
hasta el momento su desarrollo muestra superioridad
al asistente anterior ya que se tarda menos en recibir
órdenes, es más preciso, y cuenta con instrucciones
extra, además de que a diferencia del anterior este
necesita reconocer una palabra en vez de una oración
completa y tampoco requiere guardar las palabras que
se desean capturar, mientras que el otro asistente si lo
necesitaba, y eso reducía considerablemente su eficacia
y rendimiento.
Se esp era que en un futuro cuando la estructura
principal del asistente esté terminada se le pueda imple-
mentar machine learning (inteligencia artificial) para
que no sea necesario reconocer la misma palabra clave,
sino que vaya aprendiendo por solo todas las pala-
bras para pedir una instrucción y las diferencie para
que su eficacia sea mucho mayor a la de la actual.
Referencias
[1] Python, Instalation, 2020. Obtenido de short-
url.at/kpFN3
[2] Python, SpeechRecognition 3.8.1., 2020. Obtenido
de shorturl.at/chwxV
[3] Python, Wikipedia, 2020. Obtenido de short-
url.at/yBEO3
[4] Python, pycopy-webbrowser 0.0.0, 2020. Obtenido
de shorturl.at/hjAL3
[5] Python, pywhatkit 3.9, 2020. Obtenido de short-
url.at/bfASU
[6] Python, Miscellaneous operating system interfaces,
2020. Obtenido de shorturl.at/bqPY0
[7] Python, Basic date and time types, 2020. Obtenido
de shorturl.at/gnyQ2