Obteniendo la transcripción de audios cortos con GCP Speech-to-Text.

Deiv Guerrero
Apr 6 · 3 min read
Fuente de Imágenes: GCP Logo, Speech Image, Python Logo & Background

TL;DR: Comprobamos la fidelidad de las transcripciones de audios cortos evaluando la cadencia y la dicción.

En una publicación anterior expusimos la forma de obtener la transcripción de un video de youtube; esto para encontrar coincidencias con una frase en particular. Con el resultado pudimos observar que la fidelidad de una transcripción dependerá de muchos factores, pero principalmente de la cadencia y la dicción del orador.

Lingüísticamente hablando:

  • La cadencia hace referencia a la velocidad del habla, el ritmo o la velocidad a la que se habla un idioma.
  • La dicción es la forma de emplear las palabras para formar oraciones, ya sea de manera oral o escrita.

DISCLAIMER

  • Esta publicación ejemplifica la forma de obtener la transcripción de un audio.
  • La distribución de contenido sin el debido permiso es ilegal.
  • Asegúrate de disponer de todos los derechos necesarios.
  • Google, SoundCloud o algún otro proveedor de servicio mencionado no están ligados de alguna manera a esta publicación.

Descargando Audios

Para desarrollar esta publicación me tome la libertad de crear un album en soundcloud; y para descargar los audios reutilizaremos el código de la publicación anterior cambiando solamente la url del recurso.

youtube-dl no solo descarga videos y audios de youtube, también podemos utilizarlo para descargar de otros sitios de streaming, notarán que estamos agregando una sola url, esta hace referencia al album en soundcloud, las pistas son públicas, así que puedes realizar el cambio de la url del album y agregar directamente las url del audio; utilizamos la variable resources para almacenar la lista de urls.

Obteniendo la transcripción del audio

Para obtener la transcripción de nuestros audios, utilizaremos el método recognize que es el recomendado para audios con una duración menor a 1 minuto.

Para obtener la ruta de los archivos de audio con extensión .flacutilizamos el módulo glob, sabemos que los archivos se descargaron en el mismo directorio que nuestro script, por ello al obtener la ruta de los archivos hacemos referencia al archivo actual (lineas 9–11).

Obtenemos el número de canales de cada audio, esto porque uno de los archivos descargados tiene 2 canales.

Audios Cortos monocanal
Si todos los archivos de audio que vamos a utilizar son monocanal, podemos omitir el uso del módulo audioread y podemos eliminar las lineas 1, 25–27 y 32–35

Oración original y Resultado de la Transcripción

La oración original es un fragmento de la definición de Kafka en la publicación de Diego Calvo.

Apache Kafka es un sistema de intermediación de mensajes basado en el modelo publicador/suscriptor.
Se considera un sistema persistente, escalable, replicado y tolerante a fallos. A estas características se añade la velocidad de lecturas y escrituras que lo convierten en una herramienta excelente para comunicaciones en tiempo real (streaming).

Salida del script, el texto se a formateado para una mejor legibilidad.

Podemos observar que la transcripción del archivo de audio-1 representa casi perfectamente nuestra oración original (esto por la falta de algunos signos); al grabar este audio traté de tener la mejor cadencia y dicción.

Para el audio-2 aumenté la cadencia (se puede notar porque la duración del audio es de 6 segundos menos que el audio-1) y podemos notar la ausencia o mal interpretación de unas palabras.

En el audio-3 aumenté más la cadencia y la dicción fue paupérrima (a parte que tenia encendido un ventilador para generar ruido), por lo cual podemos observar que su transcripción no es buena.

Consideraciones:

  • Esta publicación abarca lo básico en el uso de speech recognition
  • Es recomendable utilizar audios cortos monocanal.
  • Se puede obtener el porcentaje de similitud de las oraciones, así que te reto a implementarlo 😎.
  • Si tienes alguna duda, no dudes en contactarme.
  • Si crees que existen partes para mejorar esta publicación no dudes en comentarlo, o mándame un tweet.
Deiv Guerrero

Written by

Web Developer #VueJS & #python /Configured web-server / Analista de Requerimientos / El desarrollo y la actualización no es una opción, es una necesidad.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade