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:
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:
if 'qué hora es' in escuchar():
hablar(datetime.datetime.now().strftime('%H:%M'))¿Cómo funciona?
Se llama a
escuchar()y el programa se queda esperando a que hablesCuando dices algo, la función retorna el texto
El
ifverifica si "qué hora es" está dentro de lo que dijisteSi 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:
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
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")
# breakPaso 4: Ejecutando el programa
Cuando ejecutes el programa:
Escucharás "Bienvenido de vuelta"
El programa se queda escuchando
Dices: "¿Qué hora es?"
El asistente responde con la hora actual
Ejemplo de interacción:
Bienvenido de vuelta
Escuchando...
Reconociendo...
Dijiste: qué hora es
Son las 15:30Conceptos clave aprendidos:
Return en funciones - Permite que una función devuelva un valor para usarlo después
Detección de intenciones - Usar
inpara buscar palabras clave en el textoFormato de hora - Usar
strftime()para dar formato legible a la fecha/horaEstructura 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
Publicar un comentario