¡Convierte tus audios y videos en texto AL INSTANTE con Python y Whisper! 🐍 Totalmente GRATIS
¡Hola, hola Omesitos! Bienvenidos a un nuevo tutorial, en donde veremos como transcribir audios y videos a texto usando Whisper, una herramienta gratuita y poderosa desarrollada por OpenAI. Así que, si estás enfrentando la tediosa tarea de escribir manualmente todo lo que escuchas o has intentado usar alguna herramienta online que te limita o te pide pagar para continuar, este tutorial es para ti.
Pero, ¿Qué es Whisper?
Whisper es una herramienta de reconocimiento automático de voz (ASR) que utiliza inteligencia artificial para convertir cualquier grabación en texto con una precisión que se acerca a la humana. Lo mejor de todo es que Whisper es gratuito, open-source y ha sido desarrollado por OpenAI (sí, la misma empresa detrás de ChatGPT).
Whisper fue entrenado con 680,000 horas de audio en más de 90 idiomas. Gracias a esto, no solo puede transcribir con precisión audios con acentos, ruido de fondo o lenguaje técnico, sino que también se puede aplicar en la traducción de idiomas (aunque esto no lo veremos en este tutorial, sin embargo si te interesa que haga uno sobre ello, déjamelo saber en los comentarios).
Para más información sobre Whisper, te dejo el link a su documentación.
¿Qué necesitamos para transcribir videos o audios a texto?
Para mantenerlo sencillo vamos a usar Google Colab, es decir, lo haremos online. Allí podremos programar en Python. Entonces necesitaremos:
- Una cuenta en Google Drive.
- Tener instalado en esta cuenta Google Colab. (Esto lo vimos en este tutorial: ¿Qué es Google Colab y cómo usarlo? Python en la nube fácil y rápido)
- Instalar Whisper con sus dependencias.
- Videos o audios de entrada.
¡Vamos con la programación!
Configurar el entorno de ejecución en Google Colab
Antes de empezar a usar Whisper, es muy importante que aprovechemos las bondades que nos da Google Colab, es decir, de su entorno de ejecución. Ya que tenemos la opción de usar el acelerador de Hardware.

En este caso debemos tener activado T4 GPU. Esto hará que los modelos de machine learning, que suelen ser muy lentos en CPU, se procesen de forma mucho más rápida. Pero recuerda, qué, como lo vimos en el blog post del uso de Google Colab, esta opción puede no estar disponible siempre, sin embargo intenta usarla si te lo permite.
Instalar packages y dependencias
Lo primero que tendremos que hacer es instalar los packages y dependencias, para ello digitamos:
!pip install moviepy
!pip install python-docx
!pip install openai-whisper
!apt-get install -y ffmpeg
MoviePy: Esta herramienta nos permitirá manipular archivos de video, que usaremos para extraer audio de un video.
python-docx: Biblioteca para crear y manipular documentos de Word, la cual usaremos para guardar las transcripciones.
openai-whisper: Nos permitirá usar los modelos de transcripción de audio de OpenAI.
FFmpeg: Software para procesamiento multimedia, necesario para manejar audio y video en diversos formatos.
Conexión entre Google Colab y Drive
En esta ocasión necesitaremos leer los videos y audio que tenemos en Drive, por ello es necesario establecer conexión con Google Drive. Para ello tendremos que ejecutar la siguiente celda:
from google.colab import drive drive.mount('/content/drive')
Luego, podemos verificar si tenemos acceso a nuestros archivos. Para ello, en la barra lateral de Google Colab, verás una carpeta llamada drive. Dentro de ella, busca My Drive y localiza la carpeta con los audios y videos.
Extraer el audio de un video con Python
Whisper nos permitirá convertir audio a texto, es por ello que si tenemos algún video, será importante extraer su audio para pasarlo a Whisper. Entonces, vamos a empezar importando lo que usaremos:
import whisper import os from moviepy.editor import AudioFileClip
Importamos Whisper, os para para manejar rutas y operaciones con archivos en el sistema, como separar nombres de archivos o crear nuevas rutas y AudioFileClip para extraer el audio de un archivo de video.
def from_video_to_audio(video_path, output_ext="wav"): # Obtener la ruta del directorio, nombre del archivo sin extensión y construir la nueva ruta base_path, file_name = os.path.split(video_path) # Separa la ruta y el nombre del archivo name_without_ext, _ = os.path.splitext(file_name) # Extrae el nombre sin extensión # Construir la ruta completa del archivo de salida con la nueva extensión audio_output = os.path.join(base_path, f"{name_without_ext}.{output_ext}") # Extraer y guardar el audio audio_clip = AudioFileClip(video_path) audio_clip.write_audiofile(audio_output) audio_clip.close() # Asegura cerrar el recurso print(f"Audio almacenado en: {audio_output}") return audio_output video_path = "/content/drive/MyDrive/video/path.mp4" audio_path = from_video_to_audio(video_path)
En esta sección definimos una función llamada from_video_to_audio, para convertir un archivo de video en un archivo de audio. Esta toma como entrada la ruta del video y un formato de salida opcional (por defecto .wav).
Primero, se genera una nueva ruta para el archivo de audio extraído, conservando el nombre original del video. Luego, utilizamos AudioFileClip de la biblioteca MoviePy para abrir el video, extraer su audio y guardarlo en la ruta especificada. Finalmente, liberamos los recursos asociados al archivo de audio y la función devuelve la ruta del archivo generado.
En esta función hemos especificado que por defecto pase el video a .wav (recomendado para obtener mejores resultados, ya que es un formato sin pérdida y no introduce compresión que pueda disminuir la calidad del audio).
Pero surge la pregunta, ¿qué formatos soporta Whisper?
Whisper es compatible con varios formatos de audio comunes, como .wav o .mp3. Ahora bien, aunque no estamos usando la API de OpenAI en este caso, según su documentación, esta soporta formatos como: mp3, mp4, mpeg, mpga, m4a, wav y webm.
Dado que esta prueba no utiliza la API, mi recomendación es que primero intentes con el formato de tu archivo. Si Whisper no lo soporta, convierte el archivo a un formato ampliamente aceptado, como .wav o .mp3, que son las opciones más confiables para segurar que el modelo pueda procesarlo sin problemas.
Transcribir el audio a texto con Whisper
Para transcribir el audio tendremos que especificar el modelo que vamos a utilizar. Whisper nos deja elegir entre distintos modelos: tiny, base, small, medium, large, turbo. Siendo tiny el más rápido, pero menos preciso, mientras que large el de mayor precisión, pero más lento y que consume más recursos.
# Establecer el modelo que se va a usar model = whisper.load_model("base") # tiny, base, small, medium, large, turbo
Una vez que se establezca el modelo a usar, tendremos que ejecutar la celda y esperamos a que se descargue y cargue el modelo que usaremos.
audio_path = "/content/drive/MyDrive/audio/path.wav" result = model.transcribe(audio_path) print(result["text"])
Ahora que tenemos el modelo listo para ser usado, pasamos a entregar el audio. Para ello copiamos la ruta de acceso del audio y lo pegamos en las comillas de la variable audio_path.
Luego se llama al método model.transcribe para procesarlo y generar un texto transcrito. Finalmente, se imprime el texto extraído del resultado result[«text»].
Guardar el texto extraído del audio en Word con Python
Pero qué te parece si a este resultado lo pasamos a Word para verlo de mejor manera, como lo hicimos en el video de extracción de texto de PDFs.
from docx import Document # Crear un nuevo archivo Word doc = Document() # Agregar el texto extraído al documento doc.add_paragraph(result["text"]) # Guardar el documento en un archivo Word nuevo_path = audio_path[:-4] + "_texto_extraído.docx" doc.save(nuevo_path)
Utilizamos la biblioteca python-docx para crear un archivo Word. Primero, se inicializa un documento vacío doc = Document(), luego se agrega al documento el texto transcrito result[«text»] como un párrafo. Finalmente, se guarda el documento con un nombre basado en el archivo de audio original, añadiendo el sufijo «_texto_extraído.docx«.
Limitaciones de la transcripción de texto con Whisper
- Hardware: Los modelos más avanzados de Whisper, como large, requieren una GPU potente para procesar el audio de manera eficiente, ya que, además de ser más lentos en CPU, consumen una gran cantidad de memoria. Esto puede generar problemas en máquinas con recursos limitados.
- Tamaño de los archivos de entrada: Si el audio o video es muy largo, puede ser necesario dividirlo en fragmentos más pequeños para evitar sobrecargar el modelo o alcanzar límites de memoria en tu entorno.
- Reconocimiento de locutores: Whisper no puede diferenciar entre diferentes personas que hablan en el mismo audio.
- Errores en acentos o pronunciaciones complejas.
- Audios multilingües: Whisper puede transcribir correctamente audios en varios idiomas, pero puede cometer errores al traducir automáticamente partes del texto, como ocurrió con las frases en inglés traducidas al español.
- Tiempo real: Según su documentación, Whisper no está diseñado para transcripción en tiempo real de forma predeterminada. Aunque puede permitir a terceros construir aplicaciones cercanas al tiempo real
Y bien, hemos llegado al final de este tutorial. ¡Espero que te haya gustado y lo hayas encontrado útil!. Nos vemos en un siguiente post.