SpeechRecognition: Una biblioteca integral de Python para conversión de voz a texto
Explora SpeechRecognition, una biblioteca versátil de Python que admite múltiples motores y API de reconocimiento de voz, tanto en línea como fuera de línea, con ejemplos prácticos y consejos para solucionar problemas.
Introducción
El reconocimiento de voz es un componente crítico en muchas aplicaciones modernas, desde asistentes virtuales y servicios de transcripción hasta herramientas de accesibilidad y flujos de trabajo automatizados. La biblioteca SpeechRecognition para Python proporciona una interfaz unificada para una amplia gama de motores y API de reconocimiento de voz, facilitando la integración de capacidades de conversión de voz a texto en tus proyectos. Ya sea que necesites reconocimiento fuera de línea con CMU Sphinx o precisión basada en la nube con Google, Azure u OpenAI Whisper, esta biblioteca te cubre.
Motores y API compatibles
SpeechRecognition admite un conjunto diverso de backends, lo que te permite elegir la mejor opción para tu caso de uso:
Motores fuera de línea:
- CMU Sphinx (PocketSphinx): Funciona completamente fuera de línea, ideal para aplicaciones sensibles a la privacidad o de baja latencia.
- API de Vosk: Otra opción fuera de línea con soporte para múltiples idiomas.
- Whisper (local): El modelo Whisper de OpenAI se puede ejecutar localmente para transcripciones de alta calidad sin internet.
- Faster Whisper: Una versión más optimizada de Whisper para inferencia más rápida.
- Detección de palabra de activación Snowboy: Para detección de palabras de activación (fuera de línea).
API en la nube:
- Reconocimiento de voz de Google: Nivel gratuito disponible, fácil de usar.
- API de Google Cloud Speech: Más precisa y personalizable, requiere autenticación.
- Microsoft Azure Speech: Reconocimiento de nivel empresarial.
- Wit.ai: API de voz de Facebook.
- Houndify: API de SoundHound.
- IBM Speech to Text: Oferta de IBM Watson.
- API de OpenAI Whisper: Whisper basado en la nube con alta precisión.
- API de Groq Whisper: Inferencia rápida a través del hardware de Groq.
- API de Cohere Transcribe: Servicio de transcripción de Cohere.
Puntos finales autoalojados:
- Admite puntos finales compatibles con OpenAI como vLLM y Ollama, brindándote flexibilidad para ejecutar tu propio servidor de inferencia.
Primeros pasos
La instalación es sencilla con pip:
pip install SpeechRecognition
Para probarlo rápidamente, ejecuta:
python -m speech_recognition
Esto usará tu micrófono predeterminado e intentará reconocer el habla usando la API gratuita de Google.
Ejemplos de uso básico
Reconocer voz desde un micrófono
import speech_recognition as sr
# Inicializar reconocedor
r = sr.Recognizer()
# Usar el micrófono predeterminado como fuente
with sr.Microphone() as source:
print("¡Di algo!")
audio = r.listen(source)
# Reconocer voz usando el Reconocimiento de voz de Google
try:
text = r.recognize_google(audio)
print(f"Dijiste: {text}")
except sr.UnknownValueError:
print("No se pudo entender el audio")
except sr.RequestError as e:
print(f"Error: {e}")
Transcribir un archivo de audio
import speech_recognition as sr
r = sr.Recognizer()
with sr.AudioFile("ruta/al/audio.wav") as source:
audio = r.record(source)
text = r.recognize_google(audio)
print(text)
Guardar datos de audio en un archivo
with sr.Microphone() as source:
audio = r.listen(source)
# Guardar en un archivo WAV
with open("grabacion.wav", "wb") as f:
f.write(audio.get_wav_data())
Calibrar para ruido ambiental
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source)
print("Ajustado para ruido ambiental. ¡Di algo!")
audio = r.listen(source)
Escuchar en segundo plano
def callback(recognizer, audio):
try:
text = recognizer.recognize_google(audio)
print(f"Dijiste: {text}")
except sr.UnknownValueError:
print("No se pudo entender")
r.listen_in_background(sr.Microphone(), callback)
# Mantener el programa en ejecución
import time
while True:
time.sleep(1)
Detalles de instalación
PyAudio (para entrada de micrófono)
PyAudio es necesario para usar la clase Microphone. Instálalo con:
pip install SpeechRecognition[audio]
En Linux, es posible que necesites paquetes del sistema:
sudo apt-get install portaudio19-dev python3-all-dev
PocketSphinx (Sphinx fuera de línea)
pip install SpeechRecognition[pocketsphinx]
Vosk (Vosk fuera de línea)
pip install SpeechRecognition[vosk]
Luego descarga un modelo de Vosk desde aquí y colócalo en un directorio model.
Whisper (local)
pip install SpeechRecognition[whisper-local]
Faster Whisper
pip install SpeechRecognition[faster-whisper]
API de OpenAI Whisper
pip install SpeechRecognition[openai]
Establece la variable de entorno OPENAI_API_KEY antes de usar.
API de Groq Whisper
pip install SpeechRecognition[groq]
Establece GROQ_API_KEY.
API de Cohere Transcribe
pip install SpeechRecognition[cohere-api]
Establece CO_API_KEY.
Solución de problemas comunes
Reconocedor demasiado sensible o no lo suficientemente sensible
Ajusta la propiedad energy_threshold. Los valores típicamente van de 50 a 4000. Valores más altos significan menos sensibilidad, útil en entornos ruidosos.
r.energy_threshold = 3000
El reconocedor se cuelga en la primera escucha
Llama a adjust_for_ambient_noise antes de escuchar para establecer un umbral adecuado.
Sin dispositivo de entrada predeterminado
Enumera los micrófonos disponibles:
import speech_recognition as sr
for index, name in enumerate(sr.Microphone.list_microphone_names()):
print(f"Micrófono con nombre \"{name}\" encontrado para `Microphone(device_index={index})`")
Luego usa Microphone(device_index=INDEX).
Problemas de idioma/dialecto
Establece el parámetro de idioma para mayor precisión. Por ejemplo, usa "en-GB" para inglés británico:
text = r.recognize_google(audio, language="en-GB")
Conclusión
SpeechRecognition es una biblioteca potente y flexible que abstrae las complejidades de diferentes backends de reconocimiento de voz. Ya sea que necesites capacidades fuera de línea para privacidad o precisión basada en la nube para producción, proporciona una API consistente que hace que el desarrollo sea rápido y mantenible. Con soporte para los modelos más recientes como Whisper y Groq, sigue siendo una opción principal para desarrolladores de Python que construyen aplicaciones activadas por voz.
Para más ejemplos y documentación detallada, visita el repositorio de GitHub.