For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme

Transcrição de arquivos

Converta fala gravada em texto.

Use a transcrição de arquivos quando a gravação já estiver concluída ou quando a solicitação contiver um trecho de áudio com início e fim definidos. Envie o áudio para receber a transcrição final ou receba o texto por streaming enquanto o modelo processa o arquivo.

Comece com gpt-transcribe. Esse é o modelo recomendado para transcrever a fala no idioma original da gravação. Os exemplos especializados a seguir usam modelos obsoletos para identificar quem fala, obter marcações de tempo por palavra e gerar legendas em diferentes formatos.

Os modelos whisper-1, gpt-4o-transcribe, gpt-4o-mini-transcribe, gpt-4o-transcribe-diarize e o endpoint /v1/audio/translations estão obsoletos e serão desativados em 26 de fevereiro de 2027. Consulte o aviso de descontinuação e escolha um fluxo de transcrição atual. Os exemplos especializados a seguir descrevem os recursos disponíveis para integrações existentes até a desativação.

Os arquivos podem ter até 25 MB. Os formatos de entrada aceitos são mp3, mp4, mpeg, mpga, m4a, wav e webm.

Se você ainda estiver recebendo áudio de um microfone, de uma chamada ou de uma transmissão de mídia, use a transcrição em tempo real.

Início rápido

Transcrições

Envie o arquivo de áudio para /v1/audio/transcriptions com o modelo gpt-transcribe.

Transcrever áudio
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)

O modelo retorna a transcrição e os idiomas detectados em JSON.

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

Quando o modelo não consegue identificar o idioma com confiança, ele retorna "languages": []. Consulte a referência da API de áudio para ver todos os campos de solicitação e resposta.

Adicionar contexto à transcrição

Use prompt, keywords e languages com gpt-transcribe para melhorar a transcrição de termos específicos de uma área e de gravações em vários idiomas.

Adicionar contexto e indicar os 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)
  • Use prompt para descrever o contexto da gravação em texto livre.
  • Use keywords para indicar os termos exatos que você espera ouvir.
  • Use languages para indicar os idiomas esperados no áudio de entrada.

As palavras-chave servem como pistas. O modelo não precisa incluí-las na transcrição. Inclua apenas termos relevantes e avalie se eles aumentam a precisão sem introduzir palavras que ninguém disse.

No gpt-transcribe, o campo languages substitui o campo language, no singular. Não envie os dois campos juntos. Escreva cada palavra-chave em uma única linha, sem incluir <, >, retorno de carro ou avanço de linha. A API rejeita a solicitação inteira se encontrar um desses caracteres ou se prompt exceder o limite de tamanho do modelo.

Diarização de falantes

Até 26 de fevereiro de 2027, as integrações existentes podem usar o modelo obsoleto gpt-4o-transcribe-diarize para identificar quem fala em cada trecho de uma gravação. Esse modelo é especializado na identificação de falantes e não é recomendado para a transcrição de arquivos em geral.

Solicite o formato de resposta diarized_json para receber segmentos com os metadados speaker, start e end. Para áudios com mais de 30 segundos, defina chunking_strategy como "auto" ou forneça uma configuração de detecção de atividade de voz nesse campo.

Se quiser associar os segmentos a falantes conhecidos, forneça até quatro amostras curtas de áudio com known_speaker_names[] e known_speaker_references[]. Use amostras de 2 a 10 segundos em qualquer formato aceito para o arquivo de áudio principal. Ao enviar dados de formulário multipart, codifique as amostras como URLs de dados.

Identificar quem fala em uma gravação de reunião
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)

Com stream=true, as respostas com identificação de falantes emitem eventos transcript.text.segment sempre que o modelo conclui um segmento. Os eventos transcript.text.delta incluem o campo segment_id, mas não identificam quem fala nos trechos parciais. O modelo só identifica o falante ao concluir o segmento.

A identificação de falantes está disponível em /v1/audio/transcriptions. As sessões de transcrição em tempo real não oferecem esse recurso.

Traduções

O endpoint obsoleto /v1/audio/translations usa whisper-1 para traduzir uma gravação de áudio concluída para o inglês. Ele continuará disponível até 26 de fevereiro de 2027. A transcrição preserva o idioma original da gravação, enquanto esse endpoint retorna texto apenas em inglês.

Migre para a tradução em tempo real usando gpt-realtime-translate em /v1/realtime/translations. Para isso, é preciso criar uma sessão de tradução, enviar o áudio por streaming e processar eventos de tradução. Alterar apenas o ID do modelo em uma solicitação a /v1/audio/translations não efetua a migração.

Idiomas compatíveis

Use languages com gpt-transcribe quando souber quais idiomas esperar no áudio. A API aceita os seguintes formatos de código de idioma.

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

A API rejeita códigos de idioma incompatíveis ou com formato incorreto. A resposta também indica os idiomas que o modelo consegue detectar com confiança.

Para whisper-1, consulte a lista de idiomas do Whisper. O Whisper oferece suporte a 98 idiomas, mas a precisão varia conforme o idioma. Os modelos existentes que aceitam a indicação de um único idioma usam language em vez de languages.

Marcações de tempo

Até 26 de fevereiro de 2027, as integrações existentes podem usar o modelo obsoleto whisper-1 para obter marcações de tempo por palavra ou por segmento. Com o parâmetro timestamp_granularities[], você recebe dados estruturados de marcação de tempo para criação de legendas e edição de vídeo.

Opções de marcação de tempo
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)

O parâmetro timestamp_granularities[] só está disponível para whisper-1.

Gravações mais longas

A API de transcrições aceita arquivos de até 25 MB. Para gravações maiores, use um formato de áudio compactado ou divida o arquivo em partes de até 25 MB. Evite cortar uma frase ao meio, pois isso pode eliminar parte do contexto e reduzir a precisão.

Uma opção é usar o PyDub, pacote Python de código aberto, para dividir o áudio.

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")

A OpenAI não oferece garantias quanto à usabilidade ou à segurança de softwares de terceiros como o PyDub.

Uso de prompts

Use um prompt para ajudar o modelo a reconhecer nomes, siglas e vocabulário específico da gravação ou a aplicar a formatação desejada. Com gpt-transcribe, combine o prompt com os campos keywords e languages descritos em Adicionar contexto à transcrição.

As integrações existentes com gpt-4o-transcribe e gpt-4o-mini-transcribe também aceitam prompts. O modelo gpt-4o-transcribe-diarize não aceita prompts.

Você pode usar prompts para as seguintes finalidades.

  • Transcrever corretamente nomes de produtos, termos técnicos e siglas.
  • Aproveitar o contexto de um trecho anterior de uma gravação longa.
  • Preservar a pontuação, o uso de maiúsculas e minúsculas e as expressões de hesitação.
  • Escolher o sistema de escrita preferido para um idioma.

No whisper-1, os prompts têm um limite de 224 tokens e oferecem menos controle do que no modelo de transcrição recomendado. Consulte Como melhorar a confiabilidade se o seu fluxo de trabalho exigir o Whisper.

Transcrições por streaming

Na transcrição de arquivos, você pode receber trechos de texto por streaming enquanto o modelo processa uma gravação concluída. Esse recurso dispensa a criação de uma sessão em tempo real.

Receber por streaming a transcrição de uma gravação concluída

Defina stream=true ao usar gpt-transcribe. A API de transcrições retorna eventos de transcrição à medida que o modelo transcreve cada parte da gravação.

Receber transcrições por 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)

O modelo emite eventos transcript.text.delta à medida que transcreve o áudio. Ao terminar, retorna a transcrição completa no evento final transcript.text.done. Para transcrições com identificação de falantes e response_format="diarized_json", o modelo de diarização também emite um evento transcript.text.segment sempre que conclui um segmento.

No gpt-transcribe, o evento final também inclui os idiomas detectados.

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

As integrações existentes com gpt-4o-transcribe, gpt-4o-mini-transcribe e gpt-4o-transcribe-diarize também permitem receber a transcrição de arquivos por streaming. O modelo whisper-1 não oferece esse recurso.

Receber por streaming a transcrição de uma gravação em andamento

Para áudio ao vivo de um microfone, de uma chamada ou de uma transmissão de mídia, siga o guia de transcrição em tempo real em vez do procedimento acima para arquivos. O guia explica como funcionam as sessões de transcrição atuais e como transcrever áudio em tempo real usando o modelo recomendado gpt-live-transcribe.

Como melhorar a confiabilidade

Se você usa whisper-1 para obter marcações de tempo, gerar legendas ou traduzir áudio, as técnicas a seguir podem melhorar o reconhecimento de palavras pouco comuns e siglas. Para novas integrações de transcrição de uso geral, comece com gpt-transcribe e use o contexto de transcrição.