5. DEMO
5. DEMO - Viendo Nuestro Asistente en Acción
Explicación para principiantes:
¡Es momento de ver nuestro trabajo cobrar vida! En esta sección, vamos a ejecutar el asistente y probar todas sus funciones. Imagina que acabamos de construir un robot y ahora vamos a darle sus primeras órdenes para ver cómo responde.
Objetivo de esta lección:
Ver el flujo completo del programa
Entender cómo interactuar con el asistente
Identificar posibles problemas y sus soluciones
Ver el potencial de lo que hemos creado
🚀 Preparación para la DEMO
Antes de ejecutar, verifica estos puntos:
✅ Tienes todas las librerías instaladas:
bash
pip list | findstr "pyttsx3 speechrecognition pywhatkit"
✅ Tu archivo está guardado como asistente.py
✅ Tienes un micrófono funcionando (puede ser el de auriculares o laptop)
✅ Los parlantes/audífonos están conectados
Posición ideal para la prueba:
text
TÚ: COMPUTADORA:
┌─────────────────┐ ┌─────────────────┐
│ │ │ │
│ Hablas al │─────▶│ Escucha y │
│ micrófono │ │ responde │
│ │◀─────│ por parlantes │
│ │ │ │
└─────────────────┘ └─────────────────┘
🎥 DEMO PASO A PASO: La Conversación con Alex
Vamos a recrear la conversación del ejemplo, pero explicando qué sucede en cada paso:
Paso 1: Iniciar el Programa
python
# Al ejecutar el archivo asistente.py
python asistente.py
Lo que sucede internamente:
text
1. Se importan todas las librerías ✅
2. Se configura el reconocedor de voz ✅
3. Se inicializa el motor de voz ✅
4. Se llama a la función bienvenida() 🎤
Tu pantalla mostrará:
text
Iniciando asistente virtual...
Configurando micrófono...
Configurando voz...
Y escucharás: "Bienvenido de vuelta." 🔊
Paso 2: Primera Interacción - Preguntar la Hora
Tú dices: "Alex, ¿qué hora es?"
Proceso interno:
text
Tu voz → Micrófono → Audio digital → Google Speech API → Texto "alex que hora es"
[🎤] [010101] [🌐 Google] [📝]
El código detecta:
python
if 'alex' in comando: # ¡Reconoce su nombre!
if 'qué hora es' in comando: # Detecta la pregunta
dar_hora() # Llama a la función de hora
La función dar_hora() hace:
python
hora = datetime.datetime.now().strftime('%H:%M')
# Si son las 7:37 → "07:37"
hablar(f"Son las {hora}")
# Convierte "07:37" en voz: "Son las siete treinta y siete"
Respuesta del asistente: "Son las siete treinta y siete" 🕖
Paso 3: Consultar Precio de Acciones
Tú dices: "Alex, dame el precio de una acción"
El asistente responde: "¿Qué acción quieres ver?" 📈
Tú respondes: "Quiero ver la acción de Tesla"
Proceso interno:
python
def precio_acciones():
if 'tesla' in nombre_accion: # Detecta "Tesla"
symbol = 'TSLA' # Símbolo de Tesla en bolsa
ticker = yf.Ticker('TSLA') # Consulta Yahoo Finance
data = ticker.history(period='1d') # Precio del último día
precio = data['Close'][0] # Precio de cierre: 860.43699951171875
hablar(f"El precio de la acción es de {precio}")
# Redondea: "El precio de la acción es de 860.44"
Respuesta: "El precio de la acción es de 860.44" 💰
Visualización del proceso:
text
"Tesla" → yfinance → Yahoo Finance API → Precio actual → Conversión a voz
🎤 📦 🌐 Yahoo $860.44 🔊
Paso 4: Capturar Pantalla
Tú dices: "Alex, captura la pantalla"
El asistente responde: "Capturando la pantalla..." 📸
Proceso interno:
python
def captura_pantalla():
hablar("Capturando la pantalla...")
captura = pyautogui.screenshot() # Toma foto de toda la pantalla
captura.save('ruta/a/tu/escritorio/captura.png') # Guarda como PNG
Resultado: Un archivo captura.png aparece en tu escritorio con una foto de lo que había en pantalla.
Paso 5: Realizar un Cálculo
Tú dices: "Alex, calcula algo"
Asistente: "¿Qué quieres calcular?" 🧮
Tú: "3 + 4"
Proceso interno:
python
def calcular_algo():
# Recibe: "3 + 4"
por_calcular_lista = comando.split() # Divide: ['3', '+', '4']
operador = obtener_operador('+') # Convierte '+' a operator.add
resultado = operador(3, 4) # operator.add(3, 4) = 7
hablar(f"El resultado de tu operación es {resultado}")
Respuesta: "El resultado de tu operación es 7" ✅
Diagrama del cálculo:
text
Voz "3 + 4" → Texto "3 + 4" → Split() → ['3','+','4'] → operator.add(3,4) → 7 → Voz "siete"
🎤 📝 ✂️ 📋 ➕ 7 🔊
Paso 6: Finalizar el Programa
Tú dices: "Alex, detener programa"
Proceso interno:
python
if 'detener programa' in comando:
quit() # Termina la ejecución del programa
Resultado: El programa se cierra limpiamente. No hay respuesta de voz, simplemente termina.
📊 Tabla de Funcionalidades Demostradas
🎯 Flujo Completo de la Conversación (Esquema Visual)
text
┌─────────────────────────────────────────────────────────────┐
│ INICIO DEL PROGRAMA │
│ "python asistente.py" → "Bienvenido de vuelta" (voz) │
└──────────────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ ESCUCHA CONTINUA │
│ Micrófono activo → Esperando "Alex" para activarse │
└──────────────────────────────┬──────────────────────────────┘
▼
┌────────────────────┐
│ ¿Dice "Alex"? │──No──┐
└─────────┬──────────┘ │
Sí │
▼ │
┌─────────────────────────────────────┐ │
│ ANALIZA COMANDO ESPECÍFICO: │ │
│ • "hora" → dar_hora() │ │
│ • "acción" → precio_acciones() │◄────────┘
│ • "captura" → captura_pantalla() │
│ • "calcula" → calcular_algo() │
│ • "detener" → quit() │
└─────────────────┬───────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ EJECUTA ACCIÓN │
│ Llama función → Procesa → Responde por voz → Vuelve a │
│ escuchar │
└─────────────────────────────────────────────────────────────┘
🔧 Solución de Problemas Comunes en la DEMO
Problema 1: "No te escuché" o "No entendí"
Causas posibles:
Micrófono no configurado
Hablaste muy rápido/despacio
Ruido de fondo
Soluciones:
python
# En la función escuchar(), ajusta:
audio = listener.listen(source,
phrase_time_limit=8, # Aumenta a 8 segundos
timeout=5) # Espera 5 segundos de silencio
Problema 2: La voz del asistente no se entiende
Soluciones:
python
# Configura mejor la voz:
engine.setProperty('rate', 150) # Velocidad (150 palabras/min)
engine.setProperty('volume', 0.9) # Volumen (0.0 a 1.0)
# Prueba diferentes voces:
for i, voz in enumerate(voces):
print(f"Voz {i}: {voz.name}")
engine.setProperty('voice', voces[i].id)
hablar("Probando esta voz")
Problema 3: No responde a "Alex"
Solución:
python
# Cambia el nombre de activación:
if 'alex' in comando or 'asistente' in comando or 'oye' in comando:
# O usa un nombre más único:
if 'jarvis' in comando or 'computadora' in comando:
📈 Otras Funcionalidades Disponibles (No mostradas en la DEMO)
El asistente tiene MUCHAS más capacidades:
python
# 1. BUSCAR EN GOOGLE
if 'busca en google' in comando:
# Ej: "Alex, busca en Google recetas de pasta"
# Resultado: Abre Google con la búsqueda
# 2. BUSCAR EN WIKIPEDIA
if 'busca en wikipedia' in comando:
# Ej: "Alex, busca en Wikipedia la historia de Roma"
# Resultado: Lee un resumen de Wikipedia
# 3. CONTAR CHISTES
if 'chiste' in comando:
# Ej: "Alex, cuéntame un chiste"
# Resultado: Dice un chiste aleatorio
# 4. DECIR EL CLIMA
if 'clima' in comando:
# Ej: "Alex, ¿cómo está el clima?"
# Resultado: Dice temperatura y condiciones
# Nota: Necesitas API key de OpenWeatherMap
# 5. ABRIR TAREAS
if 'tareas' in comando:
# Ej: "Alex, abre mis tareas"
# Resultado: Abre archivo de texto con tus tareas
🎮 Ejercicio Práctico: Crea Tu Propia DEMO
Graba tu propia interacción (puedes usar OBS Studio o el grabador de Windows)
Prueba estos comandos en orden:
text
1. Inicia el programa
2. Di: "Alex, ¿qué hora es?"
3. Di: "Alex, cuéntame un chiste"
4. Di: "Alex, calcula 15 por 3"
5. Di: "Alex, adiós"
Toma notas de lo que funciona y lo que no
Comparte tus resultados con otros aprendices
📋 Checklist de la DEMO Exitosa
Marca ✅ cuando completes cada paso:
El programa inicia sin errores
Escuchas "Bienvenido de vuelta"
El asistente responde a "Alex"
Dice la hora correctamente
Responde a al menos 3 comandos diferentes
El programa se cierra con "detener programa"
No hay errores en la consola de Python
❓ Cuestionario de Repaso de la DEMO
Pregunta 1:
Cuando dices "Alex, ¿qué hora es?", ¿qué función se ejecuta PRIMERO?
A) datetime.now()
B) escuchar()
C) dar_hora()
D) hablar()
Respuesta correcta: B
Explicación: Primero debe escuchar tu comando (escuchar()), luego procesarlo, identificar que es sobre la hora, y finalmente ejecutar dar_hora().
Pregunta 2:
¿Qué librería permite al asistente obtener el precio de las acciones de Tesla?
A) pywhatkit
B) yfinance
C) pyautogui
D) wikipedia
Respuesta correcta: B
Explicación: yfinance (Yahoo Finance) es específicamente para datos bursátiles. Convierte 'TSLA' en el precio actual de Tesla.
Pregunta 3:
Cuando el asistente dice "Capturando la pantalla", ¿qué hace exactamente pyautogui.screenshot()?
A) Graba un video de 10 segundos
B) Toma una fotografía de lo que hay en pantalla
C) Cierra todas las ventanas
D) Abre la cámara web
Respuesta correcta: B
Explicación: screenshot() funciona como el botón "Imprimir Pantalla" pero programáticamente, guardando la imagen como archivo.
Pregunta 4:
En el cálculo "3 + 4", ¿qué hace la función obtener_operador('+')?
A) Convierte '+' en la función operator.add
B) Suma 3 y 4 directamente
C) Busca '+' en un diccionario de símbolos
D) Pide confirmación al usuario
Respuesta correcta: A
Explicación: obtener_operador() traduce el símbolo '+' a la función matemática real que puede sumar números.
Pregunta 5:
¿Por qué es importante decir "Alex" antes de cada comando?
A) Para que el asistente sepa que le estás hablando a él
B) Para activar el micrófono
C) Para hacer el programa más rápido
D) Porque Python lo requiere
Respuesta correcta: A
Explicación: Es una "palabra de activación" como "Ok Google" o "Hey Siri". Sin ella, el asistente procesaría TODO lo que digas, incluso conversaciones normales.
Pregunta 6 (Bonus):
Si el asistente no responde cuando dices "Alex", ¿cuál podría ser el problema?
A) No estás hablando lo suficientemente fuerte
B) El programa no reconoce "Alex" como palabra de activación
C) El micrófono no está conectado
D) Todas las anteriores
Respuesta correcta: D
Explicación: Pueden ser varios problemas: volumen bajo, nombre incorrecto en el código, o hardware desconectado. Hay que verificar paso a paso.
🌟 ¿Qué Hemos Logrado?
¡Felicidades! Has visto y comprendido:
✅ Un asistente funcional que responde a comandos de voz
✅ Múltiples habilidades integradas en un solo programa
✅ La conexión entre código y acción real
✅ Cómo depurar y mejorar tu asistente
Tu asistente ahora puede:
🕰️ Decir la hora y fecha
📈 Consultar precios de acciones
📸 Capturar pantallas
🧮 Realizar cálculos matemáticos
🌐 Buscar en Google/YouTube/Wikipedia
😄 Contar chistes
☀️ Decir el clima (con configuración adicional)
📁 Abrir tus archivos
🚀 Próximos Pasos Después de la DEMO
Personaliza tu asistente:
python
# Cambia el nombre:
NOMBRE_ASISTENTE = "Jarvis" # o "Friday", "Cortana", etc.
# Añade tu propia función:
def mi_funcion():
hablar("Esta es MI función personalizada")
Mejora el reconocimiento de voz:
Añade más formas de decir lo mismo: "hora", "qué hora es", "dime la hora"
Usa un umbral de confianza: recognize_google(audio, show_all=True)
Crea una interfaz gráfica (con tkinter o PyQt)
Haz que aprenda (guarde preferencias, recuerde tu nombre)
Conéctalo a otros servicios (Twitter, Gmail, Spotify)
💡 Reto final: Añade UNA función nueva esta semana. ¡Comparte lo que crees en los comentarios!
🎉 ¡Has completado el tutorial completo!
Tienes un asistente virtual funcionando en tu computadora. Recuerda: cada gran proyecto comienza con un "Hola mundo" y crece con práctica y curiosidad.
👉 En el siguiente video/nivel: Aprenderemos a hacer que tu asistente sea aún más inteligente con IA y machine learning.
https://www.youtube.com/watch?v=Pj9KbAKpQyk
https://www.youtube.com/watch?v=-0tIy8wWtzE
https://www.youtube.com/watch?v=YqSSId7xfwU
https://www.youtube.com/watch?v=MjK-j7YJ5YI
https://www.youtube.com/watch?v=l2G8-iQYfoA
https://www.youtube.com/watch?v=t-YO0XeHczU
Comentarios
Publicar un comentario