Skip to content

Transcripciones usando Python

Published: at 06:18 PM

Es posible usar Python para generar una primera versión de la transcripción de un audio, como una entrevista. Para ello es necesario:

  1. Generar un repositorio de audios (una carpeta) en formato WAV.

  2. Instalar una serie de librerías en Python

  3. Cargar las librerías

  4. Transcribir

  5. Revisar las transcripciones manualmente

1. Repositorio de audios

En una carpeta en su disco duro, guarde los audios que quiere transcribir.

En Google Colab suba el primer audio.

Genere la carpeta para las transcripciones, llamada por ejemplo transcr

# Nombre del archivo de audio, en este caso es una entrevista
audio_file = "ElsyBarreraESAP.wav"
# Carpeta de transcripciones, anteriormente la había generado
transcription_folder_path = "./transcr/"

2. Instalar las librerías

En Google Colab:

!pip install -U openai-whisper
!pip install pyannote.audio

Esto se hace una única vez por sesión.

3. Cargar las librerías

import whisper
import os
from os.path import join
import time
import datetime
import subprocess
import torch
import pyannote.audio
from pyannote.audio.pipelines.speaker_verification import PretrainedSpeakerEmbedding
embedding_model = PretrainedSpeakerEmbedding(
    "speechbrain/spkrec-ecapa-voxceleb",
    device=torch.device("cpu"))
from pyannote.audio import Audio
from pyannote.core import Segment
import wave
import contextlib
from sklearn.cluster import AgglomerativeClustering
import numpy as np
from os.path import join

4. Transcribir

Inicialmente genera el modelo:

model = whisper.load_model("turbo")

Ahora si se hace la transcripción

result = model.transcribe(audio_file, verbose = False)

La transcripción estará guardada en el objeto result. Para escribirlo a archivos de texto en la carpeta transcription_folder_path, se hace lo siguiente:

# Recuperar el nombre del archivo de audio (sin la extensión)
audio_filename = os.path.splitext(os.path.basename(audio_file))[0]

# Crear el nombre del archivo de texto
transcription_file_path = os.path.join(transcription_folder_path, audio_filename + ".txt")

# Abrir el archivo de texto
f = open(transcription_file_path, "w", encoding= 'UTF-8')

# Guardar cada segmento de la traducción  en un archivo aparte:
for (i, segment) in enumerate(segments):
  if i == 0 or segments[i - 1]["speaker"] != segment["speaker"]:
    f.write("\n" + segment["speaker"] + ' ' + str(time(segment["start"])) + '\n')
  f.write(segment["text"][1:] + ' ')
f.close()
print(f"\033[1m--- Finished writing to {transcription_file_path} ---")

result es un diccionario, se puede explorar con las estrategias que tenemos para este tipo de estructuras.

Bibliografía

  1. https://medium.com/@htobochnik/qualitative-data-analysis-python-research-theory-whisper-nvivo-and-more-fff7e028df68

Previous Post
Introducción al curso Estadística 2, 2025 S1
Next Post
Análisis de texto usando Python