14-2-Tutorial: Reconociendo intenciones en tu Asistente Virtual

Paso 1: La función escuchar() mejorada

Primero, necesitamos modificar nuestra función escuchar() para que retorne el texto en lugar de solo imprimirlo:

python
def escuchar():
    while True:
        with sr.Microphone() as source:
            print('Escuchando...')
            audio = listener.listen(source, phrase_time_limit=5)

        try:
            print('Reconociendo...')
            text = listener.recognize_google(audio, language='es-US')
            hablar(text)
            print(text)
            return text  # ← Esto es clave: retorna el texto para usarlo después
        except Exception as e:
            hablar('No pude entenderlo bien, repítelo por favor')
            print(e)

¿Qué cambió?
Agregamos return text al final del try. Esto hace que cuando la función reconozca algo, devuelva ese texto y pueda ser utilizado por otras partes del programa.


Paso 2: Detectando intenciones específicas

Ahora podemos usar el texto retornado para ejecutar acciones específicas:

python
if 'qué hora es' in escuchar():
    hablar(datetime.datetime.now().strftime('%H:%M'))

¿Cómo funciona?

  1. Se llama a escuchar() y el programa se queda esperando a que hables

  2. Cuando dices algo, la función retorna el texto

  3. El if verifica si "qué hora es" está dentro de lo que dijiste

  4. Si es verdadero, ejecuta el código para darte la hora


Paso 3: Implementando la funcionalidad de la hora

Para que funcione la hora, necesitamos importar la librería datetime:

python
import datetime  # Al inicio del programa, con las otras importaciones

# En el código principal:
if 'qué hora es' in escuchar():
    hora_actual = datetime.datetime.now().strftime('%H:%M')
    hablar(f"Son las {hora_actual}")

Explicación del formato de hora:

  • %H = hora en formato 24h (00-23)

  • %M = minutos (00-59)

  • : = simplemente separador visual


Código completo del asistente

python
import speech_recognition as sr
import pyttsx3
import datetime

# Configuración inicial
listener = sr.Recognizer()
engine = pyttsx3.init()

def hablar(texto):
    engine.say(texto)
    engine.runAndWait()

def bienvenida():
    hablar("Bienvenido de vuelta")

def escuchar():
    while True:
        with sr.Microphone() as source:
            print('Escuchando...')
            audio = listener.listen(source, phrase_time_limit=5)

        try:
            print('Reconociendo...')
            text = listener.recognize_google(audio, language='es-US')
            print(f"Dijiste: {text}")
            return text
        except Exception as e:
            hablar('No pude entenderlo bien, repítelo por favor')
            print(f"Error: {e}")

# Programa principal
bienvenida()

while True:
    comando = escuchar()
    
    if 'qué hora es' in comando:
        hora = datetime.datetime.now().strftime('%H:%M')
        hablar(f"Son las {hora}")
        print(f"Hora actual: {hora}")
    
    # Aquí puedes agregar más condiciones para otras intenciones
    # elif 'adiós' in comando:
    #     hablar("Hasta luego")
    #     break

Paso 4: Ejecutando el programa

Cuando ejecutes el programa:

  1. Escucharás "Bienvenido de vuelta"

  2. El programa se queda escuchando

  3. Dices: "¿Qué hora es?"

  4. El asistente responde con la hora actual

Ejemplo de interacción:

text
Bienvenido de vuelta
Escuchando...
Reconociendo...
Dijiste: qué hora es
Son las 15:30

Conceptos clave aprendidos:

  1. Return en funciones - Permite que una función devuelva un valor para usarlo después

  2. Detección de intenciones - Usar in para buscar palabras clave en el texto

  3. Formato de hora - Usar strftime() para dar formato legible a la fecha/hora

  4. Estructura condicional - Ejecutar código según lo que el usuario diga

Para practicar más:

Intenta agregar estas funcionalidades:

  • "¿Qué fecha es hoy?" → usar datetime.now().strftime('%d/%m/%Y')

  • "¿Cómo te llamas?" → responder con el nombre de tu asistente

  • "Cuéntame un chiste" → crear una lista de chistes y seleccionar uno aleatorio

¿Te gustaría que agreguemos alguna de estas funcionalidades adicionales?

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