For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal
Theme

Transcripción de archivos

Convierte grabaciones de voz en texto.

Usa la transcripción de archivos cuando tengas una grabación terminada o una solicitud con audio de duración definida. Sube el audio para recibir la transcripción final o para recibir el texto de forma progresiva mientras el modelo procesa el archivo.

Empieza con gpt-transcribe. Es el modelo recomendado para transcribir grabaciones de voz en su idioma original. Los ejemplos especializados que aparecen más adelante usan modelos obsoletos para identificar a los hablantes, obtener marcas de tiempo por palabra y generar subtítulos en distintos formatos.

whisper-1, gpt-4o-transcribe, gpt-4o-mini-transcribe, gpt-4o-transcribe-diarize y /v1/audio/translations están obsoletos y dejarán de estar disponibles el 26 de febrero de 2027. Consulta el aviso de retirada y elige un flujo de trabajo de transcripción vigente. Los ejemplos especializados que aparecen a continuación muestran las funciones que seguirán disponibles para las integraciones existentes hasta esa fecha.

Los archivos pueden tener un tamaño máximo de 25 MB. Los formatos de entrada compatibles son mp3, mp4, mpeg, mpga, m4a, wav y webm.

Si todavía estás recibiendo audio de un micrófono, una llamada o una transmisión multimedia, usa la transcripción en tiempo real.

Inicio rápido

Transcripciones

Envía el archivo de audio a /v1/audio/transcriptions con gpt-transcribe.

Transcribir audio
from openai import OpenAI

client = OpenAI()
audio_file = open("audio.wav", "rb")

transcription = client.audio.transcriptions.create(
    model="gpt-transcribe", file=audio_file
)

print(transcription.text)

El modelo devuelve la transcripción y los idiomas detectados en formato JSON.

{
  "text": "Bonjour, pouvez-vous m'entendre ?",
  "languages": [{ "code": "fr" }]
}

Cuando el modelo no puede determinar el idioma con suficiente certeza, devuelve "languages": []. Consulta la referencia de la API de audio para ver todos los campos de la solicitud y de la respuesta.

Agregar contexto a la transcripción

Usa prompt, keywords y languages con gpt-transcribe para mejorar la transcripción de términos especializados y de audio en varios idiomas.

Agregar contexto e indicar los idiomas esperados
from openai import OpenAI

client = OpenAI()

with open("meeting.wav", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-transcribe",
        file=audio_file,
        prompt="A customer support call about a premium plan and account AC-42.",
        extra_body={
            "keywords": ["premium plan", "AC-42", "billing"],
            "languages": ["en", "fr"],
        },
    )

print(transcription.text)
  • Usa prompt para proporcionar contexto no estructurado sobre la grabación.
  • Usa keywords para indicar los términos exactos que esperas escuchar.
  • Usa languages para indicar los idiomas que esperas en el audio de entrada.

Las palabras clave sirven de referencia y no tienen que aparecer en la transcripción. Incluye solo términos relevantes y evalúa si mejoran la precisión sin que aparezcan términos que nadie pronunció.

En gpt-transcribe, languages reemplaza al campo singular language. No envíes ambos campos. Escribe cada palabra clave en una sola línea y no incluyas <, >, un retorno de carro ni un salto de línea. La API rechaza toda la solicitud si encuentra alguno de estos caracteres o si prompt supera el límite de longitud del modelo.

Identificación de hablantes por segmento

Hasta el 26 de febrero de 2027, las integraciones existentes pueden usar el modelo obsoleto gpt-4o-transcribe-diarize para identificar quién habla en cada parte de una grabación. Este modelo se especializa en etiquetar a los hablantes y no se recomienda para la transcripción habitual de archivos.

Solicita el formato de respuesta diarized_json para recibir segmentos con los metadatos speaker, start y end. Si el audio dura más de 30 segundos, asigna a chunking_strategy el valor "auto" o una configuración de detección de actividad de voz.

Si lo deseas, puedes proporcionar hasta cuatro muestras breves de audio mediante known_speaker_names[] y known_speaker_references[] para asociar los segmentos con hablantes conocidos. Usa muestras de referencia de entre 2 y 10 segundos en cualquiera de los formatos de entrada admitidos para el archivo de audio principal. Si envías datos de formulario multiparte, codifica las muestras como URL de datos.

Identificar a los hablantes en la grabación de una reunión
import base64
from openai import OpenAI

client = OpenAI()


def to_data_url(path: str) -> str:
    with open(path, "rb") as fh:
        return "data:audio/wav;base64," + base64.b64encode(fh.read()).decode("utf-8")


with open("meeting.wav", "rb") as audio_file:
    transcript = client.audio.transcriptions.create(
        model="gpt-4o-transcribe-diarize",
        file=audio_file,
        response_format="diarized_json",
        chunking_strategy="auto",
        extra_body={
            "known_speaker_names": ["agent"],
            "known_speaker_references": [to_data_url("agent.wav")],
        },
    )

for segment in transcript.segments:
    print(segment.speaker, segment.text, segment.start, segment.end)

Cuando usas stream=true, las respuestas con etiquetas de hablante emiten eventos transcript.text.segment cada vez que se completa un segmento. Los eventos transcript.text.delta incluyen un campo segment_id, pero estas actualizaciones parciales no indican quién habla. El modelo asigna un hablante solo cuando finaliza el segmento.

Puedes obtener etiquetas de hablante mediante /v1/audio/transcriptions. Las sesiones de transcripción en tiempo real no admiten esta función.

Traducciones

El punto de acceso obsoleto /v1/audio/translations usa whisper-1 para traducir al inglés una grabación de audio terminada. Seguirá disponible hasta el 26 de febrero de 2027. La transcripción conserva el idioma original de la grabación, mientras que este punto de acceso solo devuelve texto en inglés.

Migra a la traducción en tiempo real con gpt-realtime-translate en /v1/realtime/translations. Para ello, necesitas una sesión de traducción, una transmisión de audio de entrada y eventos de traducción. Cambiar solo el ID del modelo en una solicitud a /v1/audio/translations no completa la migración.

Idiomas compatibles

Usa languages con gpt-transcribe cuando sepas qué idiomas esperar en el audio de entrada. La API admite los siguientes formatos de códigos de idioma.

  • Códigos ISO 639-1, como en, es y fr.
  • Algunos códigos ISO 639-3, como eng, spa, yue y cmn.
  • Códigos de variantes regionales de zh, como zh-cn, zh-tw y zh-hk.

La API rechaza los códigos de idioma que no admite o cuyo formato es incorrecto. La respuesta también indica todos los idiomas que el modelo puede detectar con suficiente certeza.

Para whisper-1, consulta la lista de idiomas de Whisper. Whisper admite 98 idiomas, aunque la precisión varía según el idioma. Los modelos existentes que permiten indicar un solo idioma usan language en lugar de languages.

Marcas de tiempo

Hasta el 26 de febrero de 2027, las integraciones existentes pueden usar el modelo obsoleto whisper-1 para obtener marcas de tiempo por palabra o por segmento. El parámetro timestamp_granularities[] devuelve marcas de tiempo como datos estructurados para crear subtítulos y editar videos.

Opciones de marcas de tiempo
from openai import OpenAI

client = OpenAI()
audio_file = open("speech.wav", "rb")

transcription = client.audio.transcriptions.create(
    file=audio_file,
    model="whisper-1",
    response_format="verbose_json",
    timestamp_granularities=["word"],
)

print(transcription.words)

El parámetro timestamp_granularities[] solo es compatible con whisper-1.

Grabaciones largas

La API de transcripciones admite archivos de hasta 25 MB. Para grabaciones de mayor tamaño, usa un formato de audio comprimido o divide el archivo en fragmentos de 25 MB o menos. Evita cortar una oración por la mitad, ya que se puede perder contexto y reducir la precisión.

Una opción para dividir el audio es usar PyDub, un paquete de código abierto para Python.

from pydub import AudioSegment

song = AudioSegment.from_wav("good_morning.wav")

# PyDub handles time in milliseconds
ten_minutes = 10 * 60 * 1000

first_10_minutes = song[:ten_minutes]

first_10_minutes.export("good_morning_10.wav", format="wav")

OpenAI no ofrece garantías sobre la facilidad de uso ni la seguridad del software de terceros como PyDub.

Uso de prompts

Usa un prompt para que el modelo reconozca mejor los nombres, las siglas, el formato o el vocabulario específico de la grabación. Con gpt-transcribe, combina el prompt con los campos keywords y languages que se muestran en Agregar contexto a la transcripción.

Las integraciones existentes con gpt-4o-transcribe y gpt-4o-mini-transcribe también admiten prompts. gpt-4o-transcribe-diarize no admite prompts.

Los prompts pueden ayudarte a realizar estas tareas.

  • Transcribir correctamente nombres de productos, términos técnicos y siglas.
  • Aprovechar el contexto de un fragmento anterior de una grabación larga.
  • Conservar la puntuación, el uso de mayúsculas y minúsculas y las muletillas.
  • Elegir el sistema de escritura preferido para un idioma.

En whisper-1, los prompts tienen un límite de 224 tokens y ofrecen menos control que el modelo de transcripción recomendado. Si tu flujo de trabajo requiere Whisper, consulta Mejorar la confiabilidad.

Transmisión progresiva de transcripciones

La transcripción de archivos permite recibir texto parcial mientras el modelo procesa una grabación terminada. Para ello no necesitas una sesión en tiempo real.

Recibir la transcripción progresiva de una grabación terminada

Configura stream=true con gpt-transcribe. La API de transcripciones devuelve eventos de transcripción a medida que el modelo transcribe cada parte de la grabación.

Recibir transcripciones de forma progresiva
from openai import OpenAI

client = OpenAI()
audio_file = open("speech.wav", "rb")

stream = client.audio.transcriptions.create(
    model="gpt-transcribe",
    file=audio_file,
    stream=True,
)

for event in stream:
    print(event)

El modelo emite eventos transcript.text.delta a medida que transcribe el audio y luego devuelve la transcripción completa en un evento final transcript.text.done. En las transcripciones con etiquetas de hablante que usan response_format="diarized_json", el modelo de identificación de hablantes también emite un evento transcript.text.segment cada vez que finaliza un segmento.

Con gpt-transcribe, el evento final también incluye los idiomas detectados.

{
  "type": "transcript.text.done",
  "text": "Bonjour, pouvez-vous m'entendre ?",
  "languages": [{ "code": "fr" }]
}

Las integraciones existentes con gpt-4o-transcribe, gpt-4o-mini-transcribe y gpt-4o-transcribe-diarize también permiten recibir de forma progresiva la transcripción de un archivo. whisper-1 no admite esta función.

Recibir la transcripción de una grabación en curso

Para audio en vivo de un micrófono, una llamada o una transmisión multimedia, usa la guía de transcripción en tiempo real en lugar del procedimiento anterior para archivos. La guía explica cómo funcionan actualmente las sesiones de transcripción y cómo transcribir en tiempo real con el modelo recomendado, gpt-live-transcribe.

Mejorar la confiabilidad

Si usas whisper-1 para obtener marcas de tiempo, generar subtítulos o traducir, estas técnicas pueden mejorar el reconocimiento de palabras poco frecuentes y siglas. Para nuevas integraciones de transcripción de uso general, empieza con gpt-transcribe y usa el contexto de transcripción.