El principal medio de comunicación de los seres vivos es a través de los sonidos, dicho sea de paso, la voz es el medio base de la comunicación humana.
A su vez, el ser humano debe poder comunicarse con los equipos electrónicos y de cómputo, con ello se usan los botones, pantallas de visualización, teclados, mouse, etc.
Pero pueden existir situaciones donde sea más rápido y factible entablar una comunicación verbal para dictar órdenes a una computadora o sistema.
Es mucho más sencillo darle la orden de voz a una computadora, por ejemplo, de buscar en Google “Busca recetas de cocina” que tener que abrir el navegador y teclear el comando de búsqueda.
La tecnología de reconocimiento o detección de voz es la encargada de leer datos de audio e identificar frases humanas en ellas, para después convertirlas en texto y comandos leíbles para una computadora.
Diversos sistemas de asistentes virtuales hacen uso de esta tecnología para entender las ordenes que les damos.
Lejano a lo que podrías imaginar, este tipo de tecnología es fácil de implementar en Python, y aquí te decimos como.
Instalación
Primero debemos instalar el módulo de reconocimiento de voz de Python, usando el siguiente comando:
pip install speechrecognition
También debemos instalar otro par de bibliotecas más, encargadas del proceso de escucha del audio:
pip install pyaudio
pip install pyttsx3
Código
A continuación, te presentamos el código completo para convertir voz a texto, incluso a viceversa.
import speech_recognition as sr
import pyttsx3
r = sr.Recognizer()
def SpeakText(command):
# Inicializamos el proceso de salida de texto a voz
engine = pyttsx3.init()
engine.say(command)
engine.runAndWait()
# En este ciclo esperaremos la entrada de audio a convertir
while (1):
# Añadimos un try-except en caso de surgir errores
try:
# Usamos el microfono para recuperar voz
with sr.Microphone() as source2:
# Obtenemos el audio
r.adjust_for_ambient_noise(source2, duration=0.2)
audio2 = r.listen(source2)
# Ahora, usamos speech_recognition para convertir el audio a texto
MyText = r.recognize_google(audio2)
MyText = MyText.lower()
print("Intentaste decir: " + MyText)
# Podemos convertir el texto a voz de nueva cuenta.
SpeakText(MyText)
except sr.RequestError as e:
print("No existen resultados; {0}".format(e))
except sr.UnknownValueError:
print("Error desconocido")