Reconocimiento de voz

Invítame a un Café

import IPython.display as ipd # Para reproducir audio y videos en Jupyter Notebook
ipd.display( ipd.VimeoVideo("188095475"))

Si tiene android y ha utilizado el servicio **Google now** y quiere verificar los audios que tiene google grabados de su voz puede verificarlo en:

https://myactivity.google.com/myactivity?restrict=vaa&hl=en&utm_source=udc&utm_medium=r&utm_campaign=

Librerias para Speech Recognition

Instalacion de la Libreria SpeechRecognition

Se utilizara la Libreria SpeechRecognition que se puede instalar asi:

conda install -c conda-forge portaudio

conda install -c anaconda pyaudio

conda install -c conda-forge speechrecognition

# Importar libreria
import speech_recognition as sr
print( f'La version de speech recognition es: {sr.__version__}')
La version de speech recognition es: 3.6.3
# la clase que permite el uso de los sitemas de traduccion son Recognizer class.
r = sr.Recognizer()

Con esta libreria se pueden usar diferentes sistemas de reconocimiento de voz

Reconocer archivos de Audio

El sistema actualmente solo reconoce los siguientes formatos de audio sin perdidas:

  • WAV: must be in PCM/LPCM format
  • AIFF
  • AIFF-C
  • FLAC
# se utiliza el método record para cargar el archivo de audio
harvard = sr.AudioFile('speech_harvard.wav') # cargar el archivo de audio
with harvard as source:
    audio1 = r.record(source,duration=8) #Tomar los primeros 8 segundos
    #audio1 = r.record(source) #Leer todo el archivo de audio

ipd.Audio('speech_harvard.wav') # escuchar archivo de audio
type(audio1)
speech_recognition.AudioData
# Convertir el habla en texto
r.recognize_google(audio1)
'the stale smell of old beer lingers it takes heat to bring out the odor a cold dip'

El Efecto del ruido en el reconocimiento de voz

El siguiente audio tiene un ruido de un martillo neumatico mientras se graba la frase “the stale smell of old beer lingers”

jackhammer = sr.AudioFile('jackhammer.wav')
with jackhammer as source:
    audio = r.record(source)

ipd.Audio('jackhammer.wav')
r.recognize_google(audio)
'the snail smell like old beer drinkers'
# se puede "intentar" de mejorar usando adjust_for_ambient_noise()
with jackhammer as source:
    r.adjust_for_ambient_noise(source)
    audio = r.record(source)

r.recognize_google(audio)
'still smell like old beer drinkers'
# se puede "intentar" de mejorar usando adjust_for_ambient_noise()
# ajustando el momento de tiempo donde esta el ruido
with jackhammer as source:
    r.adjust_for_ambient_noise(source, duration=0.5)
    audio = r.record(source)

r.recognize_google(audio)
'the snail smelly old gear vendors'

Bueno, se obtuvo “the” al comienzo de la frase, ¡pero no se pudo obtener correctamente la frase! A veces no es posible eliminar el efecto del ruido: la señal es demasiado ruidosa para ser tratada con éxito. Ese es el caso con este archivo. Si este es un problema frecuente entonces es necesario recurrir a preprocesamiento de la señal de audio.

# Se puede ver la mayoria de traducciones que intenta hacer google
r.recognize_google(audio, show_all=True)
{'alternative': [{'transcript': 'the snail smelly old gear vendors',
   'confidence': 0.82625681},
  {'transcript': 'the snail smell of old gear vendors'},
  {'transcript': 'the snail smelled old gear vendors'},
  {'transcript': 'the snail smell old gear vendors'},
  {'transcript': 'the snail smelling old gear vendors'}],
 'final': True}

Configuracion del Idioma

El Listado de los lenguajes soportados se puede ver en esta lista

https://stackoverflow.com/questions/14257598/what-are-language-codes-in-chromes-implementation-of-the-html5-speech-recogniti

español de colombia = es-CO

import speech_recognition as sr

r = sr.Recognizer()

with sr.AudioFile('es_speech.wav') as source:
    audio = r.record(source)

ipd.Audio('es_speech.wav')
r.recognize_google(audio, language='es-CO')
'como es un día en Japón cómo fue un día en Japón para ti que que solías hacer'

Texto a voz

Se pueden usar varias librerias,existen las que neccesitan de internet (Ej: Google) y otras que funcionan offline

pytts3 (offline)

https://pyttsx3.readthedocs.io/en/latest/

#!pip install pyttsx3
import pyttsx3;
engine = pyttsx3.init();
engine.say("I Love Data Science");
engine.runAndWait();
# Modificando la Velocidad
engine = pyttsx3.init();
rate = engine.getProperty('rate')
engine.setProperty('rate', rate-20)
engine.say("I Love Data Science");
engine.runAndWait();

gTTS - Google Text to Speech (Online)

#!pip install gTTS
from gtts import gTTS
tts = gTTS(text="Me encanta la ciencia de datos", lang='es')
#tts.save("DS_es.mp3")# grabar la traduccion en un archivo mp3
ipd.Audio('DS_es.mp3') # escuchar el archivo creado

Referencias