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:

  1. ✅ Tienes todas las librerías instaladas:

  2. bash

  3. pip list | findstr "pyttsx3 speechrecognition pywhatkit"

  4. ✅ Tu archivo está guardado como asistente.py

  5. ✅ Tienes un micrófono funcionando (puede ser el de auriculares o laptop)

  6. ✅ 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

Comando

Acción

Tecnología usada

Dificultad

"¿Qué hora es?"

Dice hora actual

datetime

⭐☆☆☆☆

"Precio de Tesla"

Consulta bolsa

yfinance

⭐⭐☆☆☆

"Captura pantalla"

Toma screenshot

pyautogui

⭐⭐⭐☆☆

"Calcula 3+4"

Realiza cálculo

operator

⭐⭐☆☆☆

"Detener programa"

Cierra aplicación

quit()

⭐☆☆☆☆


🎯 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

  1. Graba tu propia interacción (puedes usar OBS Studio o el grabador de Windows)

  2. Prueba estos comandos en orden:

  3. 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"

  1. 5. Di: "Alex, adiós"

  2. Toma notas de lo que funciona y lo que no

  3. 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:

  1. ✅ Un asistente funcional que responde a comandos de voz

  2. ✅ Múltiples habilidades integradas en un solo programa

  3. ✅ La conexión entre código y acción real

  4. ✅ 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

  1. Personaliza tu asistente:

  2. python

# Cambia el nombre:

NOMBRE_ASISTENTE = "Jarvis"  # o "Friday", "Cortana", etc.


# Añade tu propia función:

def mi_funcion():

  1.     hablar("Esta es MI función personalizada")

  2. 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)

  3. Crea una interfaz gráfica (con tkinter o PyQt)

  4. Haz que aprenda (guarde preferencias, recuerde tu nombre)

  5. 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

Entradas más populares de este blog

1-7. Transforma tu audio a texto

10. Haz que tu asistente hable

8. NUEVO - Solución si tu micrófono no está captando tu audio