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

Transcrição de arquivos

Converta fala gravada em texto.

Use a transcrição de arquivos quando tiver uma gravação concluída ou uma solicitação de áudio com escopo delimitado. Envie o áudio e receba 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 fala gravada no idioma original. Use um modelo especializado apenas se precisar de identificação de locutores, marcas de tempo por palavra, formatos de legenda ou tradução para o inglês.

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

Para áudio que ainda está sendo recebido de um microfone, chamada ou fluxo 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 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 todos os campos de solicitação e resposta na Referência da API de áudio.

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 áudio multilíngue:

Adicionar contexto e indicações 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)
  • Use prompt para fornecer contexto não estruturado sobre a gravação.
  • Use keywords para indicar os termos exatos que você espera ouvir.
  • Use languages para indicar os idiomas de entrada esperados.

As palavras-chave são indicações, não conteúdo obrigatório na saída. Inclua apenas termos relevantes e avalie se eles melhoram a precisão sem fazer com que apareçam termos que não foram falados.

Para gpt-transcribe, languages substitui o campo singular language. Não envie os dois campos. Mantenha cada palavra-chave em uma única linha e não inclua <, >, retorno de carro ou avanço de linha. A API rejeita toda a solicitação quando encontra um desses caracteres ou quando prompt excede o limite de comprimento do modelo.

Diarização de locutores

Use gpt-4o-transcribe-diarize apenas quando precisar identificar quem fala em diferentes partes de uma gravação. Esse modelo especializado em identificação de locutores não é o modelo recomendado para a transcrição comum de arquivos.

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 uma configuração de detecção de atividade de voz.

Opcionalmente, você pode fornecer até quatro referências curtas de áudio com known_speaker_names[] e known_speaker_references[] para associar segmentos a locutores conhecidos. Forneça clipes de referência de 2 a 10 segundos em qualquer formato de entrada aceito no envio do áudio principal; codifique-os como URLs de dados ao usar dados de formulário multipart.

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

Quando stream=true, as respostas com identificação de locutores emitem eventos transcript.text.segment sempre que um segmento é concluído. Os eventos transcript.text.delta incluem um campo segment_id, mas os deltas não incluem atribuições parciais de locutores. O modelo atribui um locutor apenas ao finalizar o segmento.

A identificação de locutores está disponível por meio de /v1/audio/transcriptions. Ela não é compatível com sessões de transcrição em tempo real.

Traduções

Para traduzir uma gravação de áudio concluída para o inglês, use /v1/audio/translations com whisper-1. Diferentemente da transcrição, que preserva o idioma original da gravação, esse endpoint retorna texto em inglês.

Traduzir áudio
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 uma gravação de áudio em outro idioma, a resposta contém a tradução para o inglês:

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

Esse endpoint oferece suporte apenas à tradução para o inglês.

Idiomas compatíveis

Use languages com gpt-transcribe quando souber quais idiomas de entrada esperar. Os formatos de código de idioma aceitos incluem:

  • 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 formatação incorreta. A resposta também identifica 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 de acordo com o idioma. Os modelos existentes que aceitam uma indicação de idioma usam language em vez de languages.

Marcas de tempo

Use whisper-1 quando precisar de marcas de tempo por palavra ou segmento. O parâmetro timestamp_granularities[] retorna dados estruturados de marcas de tempo para legendagem e edição de vídeo.

Opções de marcas 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[] é compatível apenas com whisper-1.

Entradas mais longas

A API de transcrições aceita arquivos de até 25 MB. Para gravações maiores, use um formato de áudio comprimido ou divida o arquivo em blocos de 25 MB ou menos. Evite dividir no meio de uma frase, pois isso pode remover contexto e reduzir a precisão.

Uma forma de fazer isso é usar o PyDub, um 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 sobre a usabilidade ou a segurança de software de terceiros como o PyDub.

Criação de prompts

Use um prompt para melhorar o reconhecimento de nomes, siglas, formatação ou vocabulário específico da gravação. Com gpt-transcribe, combine o prompt com os parâmetros keywords e languages apresentados em Adicionar contexto à transcrição.

As integrações existentes com gpt-4o-transcribe e gpt-4o-mini-transcribe também oferecem suporte ao uso de prompts. gpt-4o-transcribe-diarize não oferece suporte a prompts.

Os prompts podem ser úteis nos seguintes cenários:

  • Transcrever corretamente nomes de produtos, termos técnicos e siglas.
  • Aproveitar o contexto de um trecho anterior de uma gravação mais longa.
  • Preservar a pontuação, o uso de maiúsculas e minúsculas e as palavras de preenchimento.
  • Selecionar um sistema de escrita preferencial para um idioma.

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

Transcrições em streaming

A transcrição de arquivos pode transmitir texto parcial em streaming enquanto o modelo processa uma gravação concluída. Isso não exige uma sessão Realtime.

Streaming da transcrição de uma gravação de áudio 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.

Transmitir transcrições em 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 e, em seguida, retorna a transcrição completa em um evento final transcript.text.done. Para transcrições com identificação de falantes usando response_format="diarized_json", o modelo de diarização também emite um evento transcript.text.segment sempre que finaliza um segmento.

Para 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 oferecem suporte a streaming de arquivos. whisper-1 não oferece esse suporte.

Streaming da transcrição de uma gravação de áudio em andamento

Para áudio ao vivo de um microfone, chamada ou transmissão de mídia, use o guia de Transcrição em tempo real em vez do procedimento de streaming de arquivos descrito acima. Ele aborda o fluxo atual de sessões de transcrição e o procedimento recomendado para tempo real com gpt-live-transcribe.

Como melhorar a confiabilidade

Se você usa whisper-1 para marcações de tempo, legendas ou tradução, estas técnicas podem melhorar o reconhecimento de palavras incomuns e siglas. Para novas implementações de transcrição de uso geral, comece com gpt-transcribe e use o contexto de transcrição em vez dessas técnicas.