PT ▾
Obter chave de API

Servidor da API Whisper: Opções de Configuração e a Etapa de Texto

Um servidor da API Whisper é um serviço HTTP que aceita áudio e retorna uma transcrição. Ele lida apenas com fala, então qualquer processamento posterior das palavras precisa de um modelo de texto separado.

Atualizado

Ilustração isométrica de áudio fluindo de um servidor para uma pilha de linhas de texto limpo

Pontos principais

  • Whisper é um modelo de fala para texto; um servidor o envolve atrás de um endpoint HTTP.
  • Você pode alugar um endpoint hospedado, hospedar um wrapper localmente ou executar um binário local.
  • Esta API é apenas para texto: ela executa a etapa posterior à transcrição, não a etapa de áudio.
  • As duas etapas se conectam com algumas linhas de Python usando o SDK da OpenAI duas vezes.

A resposta curta

Whisper é um modelo de reconhecimento de fala de código aberto publicado pela OpenAI. Por si só, é um arquivo de modelo e algum código de inferência. Um servidor coloca uma interface HTTP à frente dele, para que seu aplicativo possa enviar um arquivo de áudio e receber texto de volta, em vez de chamar funções Python diretamente.

A maioria dos servidores replica o formato do endpoint de transcrição da OpenAI, POST /v1/audio/transcriptions, que aceita um upload multipart com o arquivo de áudio e um nome de modelo. Esse formato é por isso que a mesma biblioteca cliente pode se comunicar com um serviço hospedado, um container na sua máquina ou um wrapper pequeno escrito por outra pessoa.

  • Entrada: um arquivo de áudio, geralmente mp3, wav, m4a ou similar.
  • Output: texto simples, ou JSON com segmentos e marcadores de tempo, dependendo do servidor.
  • Não incluídos: resumos, tradução para prosa polida, extração de itens de ação. Isso precisa de um modelo de linguagem.

Três maneiras de obter um servidor Whisper

1. Um endpoint hospedado

A OpenAI oferece um endpoint de transcrição hospedado, e outros provedores também vendem transcrição baseada em Whisper. Você paga por uso, não gerencia hardware e envia seu áudio para a infraestrutura de outra pessoa. Os modelos de cobrança variam entre provedores, e serviços de fala comumente cobram pela duração do áudio, então verifique a precificação atual antes de se comprometer com um volume.

2. Um wrapper auto-hospedado

Vários projetos de código aberto envolvem o Whisper ou reimplementações dele em um servidor web que imita a rota de transcrição da OpenAI. Você o executa em Docker em uma máquina com GPU, ou na CPU se aceitar processamento mais lento. Isso lhe dá controle sobre para onde o áudio vai. Também torna você responsável pelos downloads do modelo, atualizações, enfileiramento e reinícios.

3. Um binário local

O projeto whisper.cpp é uma porta em C e C++ do modelo, e seu repositório inclui um servidor HTTP de exemplo. Ele roda em laptops comuns e pequenos servidores, o que o torna uma boa escolha para um protótipo ou para um único usuário que transcreve algumas gravações por dia. Para lotes de centenas de horas, um serviço com GPU é geralmente mais prático.

Escolha com base em três perguntas: para onde o áudio pode viajar, quantas horas você processa por mês e quem manterá o serviço em execução. A etapa de texto descrita abaixo funciona da mesma forma com qualquer uma das três.

Onde uma API de LLM de texto se encaixa após a transcrição

Uma transcrição bruta do Whisper é um bloco de texto. Tem poucas quebras de parágrafo, os nomes dos falantes estão ausentes a menos que você adicione a diarização separadamente, e as muletinhas permanecem. O Whisper também comete erros com nomes de produtos, jargões e nomes próprios. Quase todo projeto real adiciona uma segunda etapa que atua sobre o texto.

Tarefas típicas de segunda etapa:

  • Corrigir pontuação, dividir em parágrafos, remover inícios falsos.
  • Resumir uma chamada ou palestra em alguns tópicos.
  • Extrair dados estruturados como decisões, nomes e datas em JSON.
  • Reescrever material falado em um artigo, um roteiro ou notas de apresentação.
  • Traduzir ou localizar o texto limpo.

É aqui que este serviço se encaixa. É uma API de texto compatível com OpenAI com um único modelo, uncensored, janela de contexto de 100.000 tokens e streaming. Uma transcrição de entrevista de duas horas geralmente cabe em uma única requisição, então você pode pular a lógica de fragmentação que janelas de contexto menores impõem a você. Para materiais mais longos, consulte a documentação quickstart para detalhes da requisição.

O modelo é ajustado para responder sem recusas de conteúdo para uso adulto legal. Isso é importante para pipelines de transcrição porque o áudio de origem é imprevisível: entrevistas, podcasts, leituras de ficção e chamadas de suporte contêm linguagem forte e assuntos difíceis. Um modelo que se recusa a limpar uma transcrição porque o locutor usou palavrões desperdiça uma execução de transcrição paga. A única restrição rígida é que nada envolvendo conteúdo sexual com menores de idade é aceito.

Um pipeline de duas etapas funcional

O SDK Python da OpenAI permite criar dois clientes com URLs base diferentes. Um aponta para seu servidor Whisper, o outro para esta API. Defina as variáveis de ambiente para o seu serviço de transcrição; o segundo cliente usa a URL base deste site.

import os
from openai import OpenAI

# Stage 1: any Whisper-compatible transcription server you run or rent.
stt = OpenAI(base_url=os.environ["STT_BASE_URL"], api_key=os.environ["STT_KEY"])

# Stage 2: the text model.
llm = OpenAI(base_url="https://api.whisperapis.com/v1", api_key=os.environ["LLM_KEY"])

with open("call.mp3", "rb") as f:
    transcript = stt.audio.transcriptions.create(
        model=os.environ["STT_MODEL"],  # the model name your server expects
        file=f,
    )

resp = llm.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "Clean up this transcript: fix punctuation, keep every statement, no commentary."},
        {"role": "user", "content": transcript.text},
    ],
    temperature=0.2,
)
print(resp.choices[0].message.content)

Dois detalhes são fáceis de errar. Primeiro, o nome do modelo de transcrição é o que seu servidor espera, é por isso que ele vem de uma variável de ambiente aqui. Segundo, a chave para a API de texto é separada de qualquer chave que você tenha para o serviço de fala; cada uma autentica apenas seu próprio host.

Se você prefere um shell, a etapa de texto é uma solicitação simples de conclusão de chat:

curl https://api.whisperapis.com/v1/chat/completions \
  -H "Authorization: Bearer $LLM_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "user", "content": "Summarize this transcript in five bullet points: ..."}
    ]
  }'

A autenticação usa uma chave Bearer no cabeçalho Authorization, e os endpoints são POST /v1/chat/completions e GET /v1/models. Você obtém a chave na página da chave de API; contas novas podem resgatar crédito de teste de $0,50 com um clique, válido por 7 dias e sem cartão.

Coisas que quebram na prática

Arquivos de áudio grandes

Muitos servidores do Whisper limitam o tamanho do upload, e gravações longas podem expirar no meio de uma requisição. Divida o áudio em pedaços de dez a trinta minutos com uma ferramenta como ffmpeg, transcreva cada pedaço e depois junte o texto. Como a API de texto aceita até 100.000 tokens, você pode concatenar os pedaços e enviá-los como um único prompt. O limite do corpo da requisição nesta API é de 8 MB, o que é muito mais do que qualquer transcrição precisa.

Limites de taxa e concorrência

Uma chave completa permite 8 requisições simultâneas e 300 requisições por minuto; a chave de teste permite 2 e 60. Se você executar uma fila com muitos workers, limite-a à concorrência da sua chave. Ultrapassar retorna HTTP 429, com o código rate_limited para requisições por minuto ou concurrency para muitos ao mesmo tempo. Uma solicitação em streaming mantém seu slot até o stream terminar, então um cliente travado pode bloquear um slot por mais tempo do que você espera. Recue e tente novamente; se a resposta contiver o cabeçalho Retry-After: 5, aguarde esse tempo.

Erros de transcrição que o LLM não pode ver

Se o Whisper ouviu a palavra errada, o modelo de texto só vê a palavra errada. Ele pode até suavizar o erro e fazê-lo parecer intencional. Coloque um glossário de nomes e termos no prompt do sistema e instrua o modelo a marcar trechos incertos em vez de adivinhar. Para materiais críticos, mantenha a transcrição original ao lado da versão limpa.

Preenchimento alucinado

O Whisper às vezes produz texto inventado durante silêncio ou música. Remova o silêncio antes de enviar e peça à segunda etapa para marcar frases que pareçam fora de lugar. Um temperature baixo, como 0,2, mantém a limpeza próxima à fonte.

O que esta API não faz

Ele não transcreve áudio. Não há entrada de áudio, nem saída de fala, nem geração de imagem ou vídeo, nem embeddings e nem completions de chat. É um modelo de texto hospedado atrás de um endpoint de chat completions, operado por um provedor independente, e não é a API oficial da OpenAI ou de qualquer outro fornecedor de modelos. Se o seu projeto precisa de ambas as partes, você precisa de um servidor de fala para a primeira e deste serviço para a segunda.

Prompts não são usados para treinamento. Isso é separado do que seu provedor de fala faz com o áudio, então leia os termos desse provedor separadamente.

Para planejamento de custos, o lado de texto é cobrado por token a $0,15 por milhão de tokens de entrada e $0,50 por milhão de tokens de saída, a partir de crédito pré-pago que nunca expira. A página de preços lista tamanhos de recarga e bônus. Requisições falhas ou recusadas não são cobradas, o que evita que loops de retry custem dinheiro.

Uma maneira sensata de começar

  1. Obtenha um servidor compatível com Whisper em execução, hospedado ou local, e confirme que ele retorna texto para um arquivo de um minuto.
  2. Crie uma conta, reivindique o crédito de teste e execute o comando curl acima com uma transcrição curta.
  3. Conecte os dois clientes juntos com o script Python, usando seu próprio prompt do sistema para o estilo de limpeza desejado.
  4. Adicione uma fila apenas depois que o fluxo de arquivo único funcionar, e dimensione-a para a concorrência da sua chave.

A maior parte do esforço vai para o prompt e o manuseio de áudio, não para o código de cola. Comece com uma gravação que você conhece bem, compare a saída com o que você ouviu e ajuste as instruções antes de escalar.

Perguntas e respostas

Um servidor de API Whisper é o mesmo que a API OpenAI?

Não. Whisper é um modelo, e um servidor é qualquer programa que o expõe via HTTP. A OpenAI oferece uma versão hospedada, e muitas pessoas executam a sua própria com ferramentas de código aberto que replicam a mesma rota de transcrição.

Esta API pode transcrever arquivos de áudio?

Não. Ela aceita apenas texto. Use um serviço de fala ou o seu próprio servidor Whisper para a etapa de áudio e envie a transcrição aqui.

Qual nome de modelo devo usar para a etapa de texto?

Use uncensored como o ID do modelo, com a URL base https://api.whisperapis.com/v1 e sua chave como token Bearer.

Qual o tamanho máximo de uma transcrição que posso enviar?

A janela de contexto é de 100.000 tokens, abrangendo prompt e conclusão juntos. Isso é suficiente para muitas gravações de várias horas em uma única requisição.

Preciso de um cartão para testar?

Não. Usuários novos podem resgatar um crédito de teste de $0,50 com um clique na página da chave de API após o login, sem precisar de cartão.

Sua chave está a um formulário de distância

Crie uma conta, copie a chave e altere a URL base. Essa é toda a configuração.

Obter chave de API