Speech to text (stt)

Intermedio
OpenAI
OpenAI
Actualizado: 02/07/2025

Speech-to-Text con Whisper: transcripción y traducción

La API de Audio de OpenAI ofrece capacidades avanzadas de conversión de voz a texto mediante diferentes modelos especializados. Esta funcionalidad permite tanto transcribir audio en su idioma original como traducir automáticamente el contenido a inglés, proporcionando flexibilidad para aplicaciones multilingües.

Modelos disponibles para transcripción

OpenAI proporciona tres modelos principales para el procesamiento de audio:

  • whisper-1: El modelo original basado en Whisper de código abierto, que ofrece compatibilidad completa con todos los parámetros y formatos de salida
  • gpt-4o-mini-transcribe: Versión optimizada que combina la arquitectura GPT-4o con capacidades de transcripción mejoradas
  • gpt-4o-transcribe: El modelo más avanzado para transcripción, ofreciendo la mayor calidad y precisión

Los modelos más recientes (gpt-4o-mini-transcribe y gpt-4o-transcribe) proporcionan mejor calidad pero con un conjunto limitado de parámetros, soportando únicamente formatos de respuesta JSON y texto plano.

Transcripción básica de audio

La transcripción convierte el audio a texto manteniendo el idioma original del contenido. El proceso es directo y requiere únicamente el archivo de audio y la especificación del modelo:

from openai import OpenAI

client = OpenAI()

# Transcripción básica con el modelo más avanzado
with open("conferencia.mp3", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-4o-transcribe",
        file=audio_file
    )

print(transcription.text)

Para casos donde necesites mayor control sobre el formato de salida, puedes especificar el response_format:

# Transcripción con formato de texto plano
with open("entrevista.wav", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-4o-transcribe",
        file=audio_file,
        response_format="text"
    )

print(transcription)  # Devuelve directamente el texto

Traducción automática a inglés

La traducción no solo transcribe el audio, sino que también convierte automáticamente el contenido a inglés, independientemente del idioma original. Esta funcionalidad utiliza exclusivamente el modelo whisper-1:

# Traducir audio en español a texto en inglés
with open("presentacion_espanol.mp3", "rb") as audio_file:
    translation = client.audio.translations.create(
        model="whisper-1",
        file=audio_file
    )

print(translation.text)
# Salida: "Good morning, today we will discuss artificial intelligence..."

Mejora de transcripciones con prompts

Los modelos gpt-4o-transcribe y gpt-4o-mini-transcribe permiten utilizar prompts para mejorar la precisión de la transcripción, especialmente útil para terminología específica o contextos particulares:

# Transcripción con contexto específico
with open("reunion_tecnica.mp3", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-4o-transcribe",
        file=audio_file,
        prompt="Esta reunión trata sobre desarrollo de APIs REST, microservicios, Docker y Kubernetes."
    )

print(transcription.text)

El prompt es especialmente efectivo para:

  • Corregir acrónimos y términos técnicos que el modelo podría malinterpretar
  • Mantener contexto entre segmentos de audio divididos
  • Preservar puntuación y formato específico del texto
  • Incluir palabras de relleno si son relevantes para el análisis

Manejo de archivos de gran tamaño

Los archivos de audio están limitados a 25 MB. Para archivos más grandes, es necesario dividirlos en segmentos más pequeños:

from pydub import AudioSegment

# Dividir archivo de audio largo
audio = AudioSegment.from_mp3("conferencia_larga.mp3")

# Dividir en segmentos de 10 minutos
diez_minutos = 10 * 60 * 1000  # PyDub maneja tiempo en milisegundos
segmentos = []

for i in range(0, len(audio), diez_minutos):
    segmento = audio[i:i + diez_minutos]
    nombre_archivo = f"segmento_{i//diez_minutos + 1}.mp3"
    segmento.export(nombre_archivo, format="mp3")
    segmentos.append(nombre_archivo)

# Transcribir cada segmento
transcripciones = []
for archivo in segmentos:
    with open(archivo, "rb") as audio_file:
        transcription = client.audio.transcriptions.create(
            model="gpt-4o-transcribe",
            file=audio_file
        )
        transcripciones.append(transcription.text)

# Combinar todas las transcripciones
texto_completo = " ".join(transcripciones)

Formatos de archivo compatibles

La API soporta múltiples formatos de audio comunes:

  • mp3: Formato comprimido más utilizado
  • wav: Audio sin compresión, ideal para calidad máxima
  • m4a: Formato de Apple, común en dispositivos iOS
  • mp4: Contenedores de video con pista de audio
  • webm: Formato web moderno
  • mpga y mpeg: Formatos MPEG de audio
# Ejemplo con diferentes formatos
formatos_audio = ["grabacion.wav", "podcast.mp3", "llamada.m4a"]

for archivo in formatos_audio:
    with open(archivo, "rb") as audio_file:
        transcription = client.audio.transcriptions.create(
            model="gpt-4o-mini-transcribe",
            file=audio_file,
            response_format="text"
        )
        
        print(f"Transcripción de {archivo}:")
        print(transcription)
        print("-" * 50)

Consideraciones de idioma

La API soporta más de 50 idiomas con alta precisión, incluyendo español, inglés, francés, alemán, japonés, chino y muchos otros. Para obtener mejores resultados con idiomas específicos, puedes incluir indicaciones en el prompt:

# Transcripción optimizada para español
with open("conferencia_madrid.mp3", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-4o-transcribe",
        file=audio_file,
        prompt="Transcripción en español de una conferencia sobre inteligencia artificial."
    )

print(transcription.text)

Fuentes y referencias

Documentación oficial y recursos externos para profundizar en OpenAI

Documentación oficial de OpenAI
Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, OpenAI es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de OpenAI

Explora más contenido relacionado con OpenAI y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

  • Comprender los diferentes modelos disponibles para transcripción de audio en la API de OpenAI.
  • Aprender a realizar transcripciones básicas y traducciones automáticas de audio a texto.
  • Utilizar prompts para mejorar la precisión y contexto de las transcripciones.
  • Manejar archivos de audio grandes dividiéndolos en segmentos para su procesamiento.
  • Conocer los formatos de audio compatibles y las consideraciones de idioma para optimizar resultados.