Skip to content

Commit 8f98b36

Browse files
committed
Initial commit
0 parents  commit 8f98b36

10 files changed

+176
-0
lines changed

__pycache__/salida.cpython-38.pyc

1.36 MB
Binary file not shown.

__pycache__/salida.cpython-39.pyc

1.36 MB
Binary file not shown.

__pycache__/sara.cpython-39.pyc

2.48 KB
Binary file not shown.
2.76 KB
Binary file not shown.
2.5 KB
Binary file not shown.
2.69 KB
Binary file not shown.

gui_app.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import PySimpleGUI as sg
2+
import salida as op
3+
import virtual_assistant_app as asistente
4+
5+
sg.theme('Dark Black')
6+
7+
# Imagen de un microfono en formato base64
8+
mic = b'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'
9+
10+
# Columnas que construyen la interfaz
11+
layout = [
12+
[sg.Button('Cancel')],
13+
[sg.Image(data= op.Circle2, key='_IMAGE_')], # gif animado
14+
[],
15+
[sg.Button(
16+
'',
17+
image_data= mic, # Carga la imagen del microfono en el boton
18+
button_color= (sg.theme_background_color(), sg.theme_background_color()), # Elimina el color negro de fondo del gif
19+
border_width=0,
20+
key='_MIC_'
21+
)
22+
]
23+
]
24+
25+
window = sg.Window(
26+
title= '',
27+
layout= layout,
28+
no_titlebar= True,
29+
grab_anywhere= True,
30+
transparent_color= '#000000' # Transparenta el color de fondo de la ventana
31+
)
32+
33+
while True:
34+
event, values = window.read(timeout=10)
35+
36+
if event == '_MIC_':
37+
asistente.run()
38+
elif event == sg.WINDOW_CLOSED or event == 'Cancel':
39+
break
40+
window.Element('_IMAGE_').UpdateAnimation(op.Circle2, time_between_frames=50)
41+
42+
window.close()

images/Circle2.gif

1.02 MB
Loading

salida.py

Lines changed: 2 additions & 0 deletions
Large diffs are not rendered by default.

virtual_assistant_app.py

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import speech_recognition as speech
4+
import pyttsx3
5+
import pywhatkit
6+
import datetime as time
7+
import wikipedia
8+
import chistesESP as chistes
9+
import random
10+
11+
# Nombre del asistente
12+
name='nombre'# TODO: Debes ingresar el nombre de tu asistente aqui
13+
14+
# Permite reconocer la voz
15+
listener = speech.Recognizer()
16+
17+
engine = pyttsx3.init()
18+
19+
"""RATE DEL ASISTENTE"""
20+
rate = engine.getProperty('rate')
21+
engine.setProperty('rate', 150)
22+
23+
"""VOZ DEL ASISTENTE"""
24+
voice_engine = engine.getProperty('voices')
25+
engine.setProperty('voice', voice_engine[0].id)
26+
27+
"""LENGUAJE DE WIKIPEDIA"""
28+
wikipedia.set_lang('es')
29+
30+
# Traduccion de los meses
31+
spanish_month = {
32+
'January': 'Enero',
33+
'February': 'Febrero',
34+
'March': 'Marzo',
35+
'April': 'Abril',
36+
'May': 'Mayo',
37+
'June': 'Junio',
38+
'July': 'Julio',
39+
'August': 'Agosto',
40+
'September': 'Septiembre',
41+
'October': 'Octubre',
42+
'November': 'Noviembre',
43+
'December': 'Diciembre'
44+
}
45+
46+
# Selecciona una palabra de forma aleatoria
47+
def random_choice():
48+
lista = ['Te escucho', 'Dime tu orden', 'Estoy escuchándote', 'Dime']
49+
seleccion = random.choice(lista)
50+
return seleccion
51+
52+
# Meotodo que permite al asistente hablar
53+
def talk(text):
54+
engine.say(text)
55+
engine.runAndWait()
56+
57+
# Metodo que permite al asuste escuchar
58+
def listen():
59+
try:
60+
with speech.Microphone() as source:
61+
select = random_choice()
62+
print('Escuchando...')
63+
talk(select)
64+
voice = listener.listen(source)
65+
recognizer = listener.recognize_google(voice, language='es-MX')
66+
recognizer = recognizer.lower()
67+
68+
if name in recognizer:
69+
recognizer = recognizer.replace(name, '')
70+
except:
71+
print('Algo ha salido mal')
72+
pass
73+
return recognizer
74+
75+
# Metodo que ejecuta al asistente
76+
def run():
77+
recognizer = listen()
78+
79+
print(recognizer)
80+
81+
# REPRODUCE UN VIDEO EN YOUTUBE
82+
if 'reproduce' in recognizer:
83+
music = recognizer.replace('reproduce', '')
84+
talk('reproduciendo' + music)
85+
pywhatkit.playonyt(music)
86+
87+
# INDICA LA HORA ACTUAL
88+
elif 'hora' in recognizer:
89+
hora = time.datetime.now().strftime('%I:y%M %p')
90+
talk('Son las '+hora)
91+
92+
# INDICA EL DIA MES Y AÑO
93+
elif 'fecha' in recognizer:
94+
fecha = time.datetime.now().strftime('%d-%h-%Y')
95+
talk('La fecha es: ' + str(fecha))
96+
97+
# INDICA EL DIA
98+
elif 'día' in recognizer:
99+
dia = time.datetime.now().strftime('%d')
100+
talk('Hoy es el día ' + str(dia))
101+
102+
# INDICA EL MES
103+
elif 'mes' in recognizer:
104+
mes = time.datetime.now().strftime('%B')
105+
mes_translate = spanish_month[mes]
106+
talk('Estamos en el mes de ' + str(mes_translate))
107+
108+
# INDICA EL AÑO
109+
elif 'año' in recognizer:
110+
year = time.datetime.now().strftime('%Y')
111+
talk('Estamos en el ' + str(year))
112+
113+
# BUSCA EN WIKIPEDIA
114+
elif 'busca en wikipedia' in recognizer:
115+
consulta = recognizer.replace('busca en wikipedia', '')
116+
talk('buscando en wikipedia' + consulta)
117+
resultado = wikipedia.summary(consulta, sentences=3)
118+
talk(resultado)
119+
120+
# BUSCA EN GOOGLE
121+
elif 'busca en google' in recognizer:
122+
consulta = recognizer.replace('busca en google', '')
123+
talk('Buscando en google' + consulta)
124+
pywhatkit.search(consulta)
125+
126+
# CHISTES
127+
elif 'chiste' in recognizer:
128+
chiste = chistes.get_random_chiste()
129+
talk(chiste)
130+
131+
else:
132+
talk('Disculpa, no te entiendo')

0 commit comments

Comments
 (0)