Python: Reconocimiento de voz en grandes archivos de audio
El reconocimiento de voz es el proceso de convertir audio en texto. Esto se usa comunmente en asistentes de voz como Alexa, Siri, entre otros. Python proporciona un API llamada SpeechRecognition para permitirnos convertir audio en texto para su posterior procesamiento. En este artículo, analizaremos la conversión de archivos de audio grandes o largos en texto utilizando la API SpeechRecognition en Python.
Procesando grandes archivos de audio
Cuando la entrada es un archivo de audio largo, la precisión del reconocimiento de voz disminuye. Además, la API de reconocimiento de voz de Google no puede reconocer archivos de audio largos con buena precisión. Por lo tanto, necesitamos procesar el archivo de audio en fragmentos más pequeños y luego alimentar estos fragmentos a la API. Hacer esto mejora la precisión y nos permite reconocer grandes archivos de audio.
Dividiendo el audio basado en el silencio
Una forma de procesar el archivo de audio es dividirlo en trozos de tamaño constante. Por ejemplo, podemos tomar un archivo de audio de 10 minutos de duración y dividirlo en 60 fragmentos de 10 segundos cada uno. Luego podemos alimentar estos fragmentos a la API y convertir la voz en texto concatenando los resultados de todos estos fragmentos. Este método es inexacto. Dividir el archivo de audio en trozos de tamaño constante podría interrumpir las oraciones intermedias y podríamos perder algunas palabras importantes en el proceso. Esto se debe a que el archivo de audio puede finalizar antes de que una palabra se diga por completo y Google no podrá reconocer palabras incompletas.
La otra forma es dividir el archivo de audio según el silencio. Los humanos hacen una pausa corta por un corto período de tiempo entre oraciones. Si podemos dividir el archivo de audio en fragmentos basados en estos silencios, entonces podemos procesar el archivo oración por oración y concatenarlos para obtener el resultado. Este enfoque es más preciso que el anterior porque nos cortamos oraciones intermedias y el fragmento de audio contendrá la oración completa sin interrupciones. De esta manera, no necesitamos dividirlo en trozos de longitud constante.
La desventaja de este método es que es díficil determinar la duración del silencio para dividir por que los diferentes usuarios hablan de manera diferente y algunos usuarios pueden hacer una pausa de 1 segundo entre oraciones, mientras que otros pueden hacer una pausa de solo 0.5 segundos.
El código respectivo es:
La salida para el audio es:
Puede utilizar el audio alice-medium.wav.
No hay comentarios:
Publicar un comentario