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
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.