1-7. Transforma tu audio a texto

https://docs.google.com/presentation/d/e/2PACX-1vQALlzBy_iPdW3SCPiIx-glkhsG4OKexjhqrRvQd8mGPiAfMWyRU8Vde9T7ygB-MWr30o6EJ5Ubpaiy/pub?start=true&loop=false&delayms=3000

 7. Transforma tu Audio a Texto - Los "Oídos" de tu Asistente

Explicación para principiantes:

En esta lección vamos a crear la parte más mágica de nuestro asistente: convertir tu voz en texto que Python pueda entender. Es como enseñarle a tu computadora a escuchar y tomar notas de lo que dices. ¡Es el primer paso para una conversación real con tu asistente!

Objetivo de esta lección:

  • Configurar el reconocimiento de voz

  • Capturar audio del micrófono

  • Convertir audio en texto

  • Manejar errores comunes

Analogía:
Piensa en esto como enseñarle a un amigo extranjero a entender español:

  • Tu voz = Sonidos en español

  • speech_recognition = Amigo que está aprendiendo

  • Texto = Lo que tu amigo escribe después de entenderte



📦 Paso 3: Instalar la Librería de Reconocimiento de Voz

¿Qué es speech_recognition?
Es una librería que actúa como traductor de voz a texto. Usa inteligencia artificial de Google (gratis) para entender lo que dices.

Instalación paso a paso:

Método 1: Usando la Terminal de VSCode (Recomendado)

  1. Abre la terminal: View → Terminal o presiona Ctrl + Ñ

  2. Escribe este comando:

  3. bash

  4. python -m pip install speechrecognition

  5. Presiona Enter y espera a que termine

Método 2: Usando CMD/Command Prompt

  1. Presiona Windows + R, escribe cmd y presiona Enter

  2. Escribe:

  3. bash

  4. python -m pip install speechrecognition

¿Qué deberías ver?

text

Collecting speechrecognition

Downloading SpeechRecognition-3.10.0-py3-none-any.whl

Installing collected packages: speechrecognition

Successfully installed speechrecognition-3.10.0

Problema común: Si ves "pip no se reconoce", revisa la lección 2 sobre "Add Python to PATH".

 Solución Directa para Python 3.10

Ya que tienes Python 3.10, podemos instalar PyAudio directamente sin usar pipwin. El error que ves es porque pipwin intenta buscar en una página que ya no existe.

Método 1: Instalación Directa (MÁS FÁCIL)

Simplemente ejecuta:

bash
pip install pyaudio

python -m pip install pyaudio

Si esto falla (lo cual es posible en Windows), usa el método 2.


 Codio (o cualquier entorno Python):

python
import speech_recognition as sr

listener = sr.Recognizer()

with sr.Microphone() as source:
    print('Escuchando...')
    # Ajustar para ruido ambiental
    listener.adjust_for_ambient_noise(source)
    audio = listener.listen(source, phrase_time_limit=5)

try:
    print('Reconociendo...')
    text = listener.recognize_google(audio, language='es-US')
    print('Texto reconocido:', text)
except Exception as e:
    print('No pude entenderlo bien, repítelo por favor')
    print('Error:', e)

🔧 Correcciones realizadas:

  1. Identación del listen: El método listen() debe estar dentro del bloque with, no después.

  2. Ajuste por ruido: Agregué listener.adjust_for_ambient_noise(source) para mejorar la precisión.

  3. Variable e en el except: Moví print(e) dentro del bloque except, ya que fuera no está definida.

  4. Mensaje más claro: Agregué "Texto reconocido:" antes del resultado.

📦 Requisitos en Codio:

Ejecuta esto en la terminal de Codio primero:

bash
pip install SpeechRecognition pyaudio

Nota para Codio: Si pyaudio falla, puedes usar el reconocimiento con archivos de audio o instalar las dependencias del sistema:

bash
sudo apt-get update
sudo apt-get install portaudio19-dev python3-pyaudio
pip install pyaudio





Errores en el código original que he corregido:

  1. Indentación incorrecta en la línea del print('Escuchando...')

  2. Falta de indentación en el bloque try-except

  3. El print(e) estaba fuera del except (no tendría sentido)

  4. Faltaba la f en el print para mostrar el texto correctamente

Para detener el programa:

Como es un bucle infinito, para terminar el programa debes presionar:

  • Ctrl + C en la terminal

  • Cerrar la ventana de ejecución

Tutorial de Reconocimiento de Voz en Python

📋 ¿Para qué sirve este código?

Este programa permite convertir voz en texto usando Python. Es útil para:

  • Crear asistentes de voz

  • Transcribir reuniones o entrevistas

  • Desarrollar sistemas de comandos por voz

  • Hacer accesibles aplicaciones para personas con discapacidad visual

  • Automatizar tareas mediante comandos hablados

🔍 Explicación línea por línea

1. Importar la librería

python
import speech_recognition as sr

Importamos la librería speech_recognition que nos permite trabajar con reconocimiento de voz. La abreviamos como sr por convención.

2. Crear el reconocedor

python
listener = sr.Recognizer()

Creamos un objeto Recognizer() que será el encargado de procesar el audio y convertirlo a texto.

3. Acceder al micrófono

python
with sr.Microphone() as source:

Abrimos el micrófono como fuente de audio. El bloque with asegura que el micrófono se cierre correctamente después de usarlo.

4. Mensaje de inicio

python
print('Escuchando...')

Indicamos al usuario que el programa está listo para escuchar.

5. Ajuste por ruido ambiental

python
listener.adjust_for_ambient_noise(source)

El programa escucha el ruido de fondo durante 1 segundo y ajusta los umbrales para filtrarlo. Esto mejora la precisión.

6. Grabar el audio

python
audio = listener.listen(source, phrase_time_limit=5)
  • Graba audio desde el micrófono

  • phrase_time_limit=5máximo 5 segundos de grabación

  • Detiene la grabación cuando detecta silencio o alcanza el límite

7. Procesar el audio

python
try:
    print('Reconociendo...')
    text = listener.recognize_google(audio, language='es-US')
  • recognize_google(): envía el audio a los servidores de Google

  • language='es-US': especifica que el audio está en español (EE.UU.)

  • Devuelve el texto reconocido

8. Mostrar resultado

python
print('Texto reconocido:', text)

Muestra en pantalla lo que se ha reconocido.

9. Manejo de errores

python
except Exception as e:
    print('No pude entenderlo bien, repítelo por favor')
    print('Error:', e)

Si algo sale mal (audio confuso, sin conexión, etc.), mostramos un mensaje amigable y el error técnico.

🛠️ Requisitos de instalación

En tu computadora:

bash
pip install SpeechRecognition
pip install pyaudio

En Codio (sistema Linux):

bash
# Instalar dependencias del sistema
sudo apt-get update
sudo apt-get install portaudio19-dev python3-pyaudio

# Instalar librerías Python
pip install SpeechRecognition pyaudio

🚀 Cómo usarlo

  1. Ejecuta el programa

  2. Habla claramente al micrófono cuando veas "Escuchando..."

  3. Espera el resultado

💡 Posibles mejoras

Puedes modificar:

  • phrase_time_limit: para grabar más o menos tiempo

  • language: para otros idiomas ('en-US', 'fr-FR', 'es-ES')

  • El motor de reconocimiento (Google, Sphinx, Bing, etc.)

⚠️ Notas importantes

  • Se requiere conexión a internet (usa el servicio de Google)

  • Habla claro y a velocidad normal

  • Evita ambientes con mucho ruido

  • El micrófono debe estar funcionando correctamente

📝 Ejemplo de salida

text
Escuchando...
Reconociendo...
Texto reconocido: hola mundo cómo estás


¿Cómo funciona el flujo del bucle?

  1. Iteración 1: Escucho → "Hola mundo" → Reconozco → Imprimo "Hola mundo"

  2. Iteración 2: Escucho → "¿Cómo estás?" → Reconozco → Imprimo "¿Cómo estás?"

  3. Iteración 3: Escucho → (ruido de fondo) → Error → "No pude entenderlo"

  4. Iteración 4: Escucho → "Adiós" → Reconozco → Imprimo "Adiós"

  5. ...y así hasta que el usuario detenga el programa (Ctrl+C)

while True:

🔧 Código corregido

python
import speech_recognition as sr

listener = sr.Recognizer()

while True:
    with sr.Microphone() as source:
        print('Escuchando...')
        # Ajustar para ruido ambiental
        listener.adjust_for_ambient_noise(source)
        audio = listener.listen(source, phrase_time_limit=5)

    try:
        print('Reconociendo...')
        text = listener.recognize_google(audio, language='es-US')
        print('Texto reconocido:', text)
        
        # Opción para salir del bucle
        if text.lower() == "salir":
            print("¡Hasta luego!")
            break
            
    except Exception as e:
        print('No pude entenderlo bien, repítelo por favor')
        print('Error:', e)

🔄 ¿Qué es while True y cómo funciona?

Definición

while True crea un bucle infinito - un bloque de código que se ejecuta repetidamente sin detenerse automáticamente.

En este contexto:

El programa ahora:

  1. Escucha continuamente una frase tras otra

  2. No se detiene después del primer reconocimiento

  3. Sigue ejecutándose hasta que lo detengamos manualmente

Flujo de ejecución:

text
Inicio del programa
    ↓
while True (comienza el bucle)
    ↓
Escucha → Reconoce → Muestra texto
    ↓
    (vuelve a empezar)
    ↓
Escucha → Reconoce → Muestra texto
    ↓
    (vuelve a empezar)
    ↓
... (así infinitamente)

🎯 Ventajas del bucle infinito aquí

  1. Diálogo continuo: Puedes hablar múltiples frases sin reiniciar el programa

  2. Experiencia tipo asistente: Como hablar con Siri o Alexa

  3. Persistencia: Sigue funcionando hasta que decidas salir

🛑 ¿Cómo detenerlo?

Opción 1: Usar la palabra "salir" (implementada en el código)

python
if text.lower() == "salir":
    print("¡Hasta luego!")
    break  # La palabra clave break rompe el bucle

Opción 2: Interrupción manual

Presiona Ctrl + C en la terminal para forzar la detención

Opción 3: Cerrar la ventana

Si estás en un IDE, cierra la ventana de ejecución

📝 Ejemplo de uso con while True

text
Escuchando...
Reconociendo...
Texto reconocido: hola cómo estás
Escuchando...
Reconociendo...
Texto reconocido: cuál es tu nombre
Escuchando...
Reconociendo...
Texto reconocido: salir
¡Hasta luego!
(El programa termina)

⚠️ Precaución con while True

  • Consume recursos si no hay pausas entre iteraciones

  • Puede colgar el programa si no hay forma de salir

  • Siempre incluye una condición de salida (como break o Ctrl+C)

💡 Mejora adicional: Pausa entre reconocimientos

Para no saturar el procesador, puedes agregar una pequeña pausa:

python
import speech_recognition as sr
import time  # Importar time para usar sleep

listener = sr.Recognizer()

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

    try:
        print('Reconociendo...')
        text = listener.recognize_google(audio, language='es-US')
        print('Texto reconocido:', text)
        
        if text.lower() == "salir":
            print("¡Hasta luego!")
            break
            
    except Exception as e:
        print('No pude entenderlo bien, repítelo por favor')
        
    time.sleep(0.5)  # Pequeña pausa de 0.5 segundos

¡El while True transforma tu programa en un asistente de voz continuo

❓ Cuestionario de Repaso

Pregunta 1:

¿Qué hace la línea import speech_recognition as sr?

  • A) Crea un nuevo archivo llamado sr

  • B) Importa la librería y le da el alias "sr"

  • C) Elimina la librería speech_recognition

  • D) Convierte texto a voz automáticamente

Respuesta correcta: B
Explicación: as sr crea un "apodo" para la librería, permitiéndonos escribir sr.Recognizer() en lugar de speech_recognition.Recognizer().


Pregunta 2:

¿Para qué sirve el parámetro phrase_time_limit=5?

  • A) Limita el reconocimiento a 5 palabras

  • B) Hace que el programa espere 5 segundos antes de escuchar

  • C) Limita la grabación a máximo 5 segundos

  • D) Establece el volumen al 5%

Respuesta correcta: C
Explicación: Esto evita que el programa se quede "pegado" grabando indefinidamente si no hablas.


Pregunta 3:

¿Qué estructura usamos para manejar errores al convertir audio a texto?

  • A) if-else

  • B) while True

  • C) try-except

  • D) for-in

Respuesta correcta: C
Explicación: try-except permite intentar una operación riesgosa (como llamar a Google) y tener un plan B si falla.


Pregunta 4:

Si el programa siempre dice "No entendí", ¿cuál NO es una causa probable?

  • A) Estás hablando muy bajo

  • B) Tu micrófono no funciona

  • C) No tienes conexión a internet

  • D) El código tiene muchos comentarios

Respuesta correcta: D
Explicación: Los comentarios no afectan la ejecución del programa. Los problemas suelen ser de hardware (micrófono) o conexión (internet).


Pregunta 5:

¿Qué hace listener.adjust_for_ambient_noise()?

  • A) Sube el volumen del micrófono

  • B) Calibra el micrófono para filtrar ruido de fondo

  • C) Apaga otros programas que hagan ruido

  • D) Cambia el idioma de reconocimiento

Respuesta correcta: B
Explicación: Escucha el ruido ambiente por 1 segundo para luego restarlo del audio, mejorando la claridad de tu voz.


Pregunta 6 (Bonus):

¿Por qué convertimos el texto a minúsculas con .lower()?

  • A) Para que se vea más bonito

  • B) Para hacer comparaciones sin importar mayúsculas/minúsculas

  • C) Para que Google lo entienda mejor

  • D) Para ahorrar memoria RAM

Respuesta correcta: B
Explicación: "HOLA", "Hola" y "hola" son diferentes para Python. Al convertir todo a minúsculas, 'hola' in texto funcionará sin importar cómo lo digas.


🌟 ¡Lo Lograste!

Has creado la base de tu asistente virtual:
✅ Puede escuchar tu voz a través del micrófono
✅ Puede entender lo que dices (con ayuda de Google)
✅ Puede tomar decisiones basadas en lo que entendió
✅ Es resistente a errores gracias al manejo de excepciones

Próximos pasos:

  1. Ejecuta el código completo y prueba con diferentes frases

  2. Experimenta cambiando el tiempo límite a 3 o 8 segundos

  3. Añade 2 comandos personalizados que te gustaría que entienda

  4. Graba un video corto mostrando tu asistente en acción

💡 Consejo final: Si tienes problemas con PyAudio, no te desanimes. Es el obstáculo más común y una vez que lo superes, todo será más fácil.


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

10. Haz que tu asistente hable

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