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

Transcripción de archivos

Convierte voz grabada en texto.

Usa la transcripción de archivos cuando tengas una grabación completa o una solicitud de audio acotada. Sube el audio y recibe una transcripción final, o recibe texto en streaming mientras el modelo procesa el archivo.

Empieza con gpt-transcribe. Este es el modelo recomendado para transcribir voz grabada en su idioma original. Usa un modelo especializado solo si necesitas etiquetas de hablantes, marcas de tiempo por palabra, formatos de subtítulos o traducción al inglés.

Los archivos pueden tener hasta 25 MB. Los formatos de entrada admitidos son mp3, mp4, mpeg, mpga, m4a, wav y webm.

Para audio que sigue llegando desde un micrófono, una llamada o una transmisión multimedia, usa 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 predecir el idioma de forma confiable, devuelve "languages": []. Consulta la referencia de la API de audio para ver todos los campos de solicitud y 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 audio multilingüe:

Agregar contexto e indicaciones de idioma
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 literales que esperas escuchar.
  • Usa languages para indicar los idiomas de entrada esperados.

Las palabras clave sirven como orientación; no son contenido obligatorio en la salida. Incluye solo términos relevantes y evalúa si mejoran la precisión sin hacer que aparezcan términos que no se dijeron.

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

Diarización de hablantes

Usa gpt-4o-transcribe-diarize solo cuando necesites identificar quién habla en distintas partes de una grabación. Este modelo especializado en etiquetar hablantes no es el modelo recomendado para la transcripción habitual de archivos.

Solicita el formato de respuesta diarized_json para recibir segmentos con los metadatos speaker, start y end. Para audios de más de 30 segundos, establece chunking_strategy en "auto" o en una configuración de detección de actividad de voz.

De forma opcional, puedes proporcionar hasta cuatro referencias de audio breves con known_speaker_names[] y known_speaker_references[] para asociar segmentos con hablantes conocidos. Proporciona clips de referencia de entre 2 y 10 segundos en cualquier formato de entrada admitido para subir el audio principal; codifícalos como URL de datos cuando uses datos de formulario multiparte.

Diarizar 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 stream=true, las respuestas con etiquetas de hablantes emiten eventos transcript.text.segment cada vez que se completa un segmento. Los eventos transcript.text.delta incluyen un campo segment_id, pero los deltas no incluyen asignaciones parciales de hablantes. El modelo asigna un hablante solo cuando finaliza el segmento.

El etiquetado de hablantes está disponible a través de /v1/audio/transcriptions. No se admite en las sesiones de transcripción en tiempo real.

Traducciones

Para traducir al inglés una grabación de audio completa, usa /v1/audio/translations con whisper-1. A diferencia de la transcripción, que conserva el idioma original de la grabación, este punto de acceso devuelve texto en inglés.

Traducir audio
from openai import OpenAI

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

translation = client.audio.translations.create(
    model="whisper-1",
    file=audio_file,
)

print(translation.text)

Para una grabación de audio en otro idioma, la respuesta contiene la traducción al inglés:

Hello, my name is Wolfgang and I come from Germany. Where are you heading today?

Este punto de acceso solo admite la traducción al inglés.

Idiomas admitidos

Usa languages con gpt-transcribe cuando sepas qué idiomas de entrada esperar. Los formatos de códigos de idioma admitidos incluyen:

  • 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 configuración regional de zh, como zh-cn, zh-tw y zh-hk.

La API rechaza los códigos de idioma no admitidos o con un formato incorrecto. La respuesta también identifica los idiomas que el modelo puede detectar de forma confiable.

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

Marcas de tiempo

Usa whisper-1 cuando necesites marcas de tiempo por palabra o segmento. El parámetro timestamp_granularities[] devuelve datos estructurados de marcas de tiempo 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 se admite con whisper-1.

Entradas más largas

La API de transcripciones acepta archivos de hasta 25 MB. Para grabaciones más grandes, usa un formato de audio comprimido o divide el archivo en fragmentos de 25 MB o menos. Evita los cortes a mitad de una oración, ya que pueden eliminar contexto y reducir la precisión.

Una forma de hacerlo es usar el paquete de código abierto PyDub para Python para dividir el audio:

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 usabilidad ni la seguridad de software de terceros como PyDub.

Diseño de prompts

Usa un prompt para mejorar el reconocimiento de nombres, siglas, formato o vocabulario específico de la grabación. Con gpt-transcribe, combina el prompt con keywords y languages, como se muestra en Agregar contexto a la transcripción.

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

Los prompts pueden ser útiles en situaciones como las siguientes:

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

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

Transcripciones en streaming

La transcripción de archivos permite transmitir texto parcial en streaming mientras el modelo procesa una grabación finalizada. Esto no requiere una sesión de Realtime.

Transmitir en streaming la transcripción de una grabación de audio finalizada

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

Transmitir transcripciones en streaming
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. Para las transcripciones con etiquetas de hablante que usan response_format="diarized_json", el modelo de diarización también emite un evento transcript.text.segment cada vez que finaliza un segmento.

Para 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 admiten streaming de archivos. whisper-1 no lo admite.

Transmitir en streaming la transcripción de una grabación de audio 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 de streaming orientado a archivos descrito anteriormente. La guía explica el flujo actual de las sesiones de transcripción y el procedimiento recomendado para tiempo real con gpt-live-transcribe.

Mejorar la confiabilidad

Si usas whisper-1 para marcas de tiempo, subtítulos o traducción, estas técnicas pueden mejorar el reconocimiento de palabras poco comunes y siglas. Para nuevas implementaciones de transcripción de uso general, comienza con gpt-transcribe y usa contexto de transcripción en su lugar.