Início → Blog → Como migrar da API Whisper da OpenAI para outro serviço
Como migrar da API Whisper da OpenAI para outro serviço
Times saem da API pública do Whisper por motivos variados: custo em volume alto, exigências sobre o tratamento dos dados, indisponibilidade na região. A boa notícia é que, se a API é compatível no protocolo, a migração se resume a trocar duas linhas e cabe em uma noite.
O que muda exatamente no código
Duas coisas: o endereço e a chave. Todo o resto — nomes de campos, formatos de resposta, tratamento de erros — continua igual.
# antes
client = OpenAI(api_key="sk-…")
# depois
client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="vs_live_…")
A chamada de reconhecimento não é tocada:
result = client.audio.transcriptions.create(model="whisper-1", file=f)
O parâmetro model permanece por compatibilidade: o serviço aceita o valor de sempre e usa o próprio modelo.
Compatibilidade nos detalhes
| O quê | Igual |
|---|---|
Endpoint POST /v1/audio/transcriptions | sim |
Campo file, requisição multipart | sim |
Parâmetros language, prompt, temperature, response_format | sim |
| Formatos de resposta: json, text, verbose_json, srt, vtt | sim |
Estrutura de erro {"error": {"message", "type", …}} | sim |
O último item importa mais do que parece: os SDKs oficiais convertem erros em exceções tipadas. Se o servidor responde num formato próprio, o código do cliente quebra em lugares inesperados — compatibilidade nos erros evita reescrever handlers.
Como comparar a qualidade antes de virar a chave
Não troque a produção às cegas. Uma ordem sensata:
- Monte uma amostra. De 20 a 50 gravações reais: limpas, ruidosas, curtas, em idiomas diferentes — como no dia a dia.
- Rode nos dois serviços com um único script, salvando os resultados lado a lado.
- Compare pelos seus critérios. O que importa não são porcentagens abstratas, e sim os seus casos: códigos de produto, nomes e valores saem certos?
- Vire por partes. Mande 10% do tráfego para o serviço novo e, depois de alguns dias, o restante.
for path in amostras:
with open(path, "rb") as f:
a = old_client.audio.transcriptions.create(model="whisper-1", file=f).text
with open(path, "rb") as f:
b = new_client.audio.transcriptions.create(model="whisper-1", file=f).text
print(path, "\n antes:", a, "\n depois:", b)O que conferir à parte
- Timeouts do cliente. Os 100 segundos padrão servem para mensagens de voz e chamadas curtas; para gravações de uma hora, aumente.
- Limite de tamanho. Arquivos acima de 25 MB precisam ser comprimidos ou divididos — igual à API original.
- Novas tentativas. Uma ou duas para erros 5xx: prática padrão com qualquer serviço externo.
- Armazenamento das transcrições. Confira a política: aqui gravações e textos são apagados automaticamente depois de 24 horas.
Quando a migração se justifica
Trocar de fornecedor faz sentido se pelo menos uma destas condições vale:
- o volume cresceu a ponto de o pagamento por minutos virar uma linha de custo relevante;
- existem exigências sobre onde e por quanto tempo as gravações ficam;
- é preciso acesso previsível, sem restrições regionais nem bloqueio de cartão;
- faltam formatos ou parâmetros no fornecedor atual.
Se nada disso se aplica, não há motivo para mexer numa integração que funciona — a compatibilidade garante que a mudança continuará cabendo em uma noite quando você quiser.
Teste com as suas próprias gravações. O cadastro leva um minuto e os minutos gratuitos bastam para avaliar a qualidade.
Obter uma chave de API grátisPerguntas frequentes
Vou precisar reescrever o código na migração?
Não, se você usa o SDK oficial da OpenAI: mudam apenas a URL base e a chave. As chamadas, os parâmetros e a leitura da resposta continuam iguais.
Os formatos srt e vtt funcionam?
Sim, todos os valores habituais de response_format são aceitos: json, text, verbose_json, srt e vtt.
E o tratamento de erros no SDK?
Os erros voltam no mesmo formato da OpenAI, então o SDK os transforma em exceções tipadas — os handlers que você já tem continuam funcionando.
Dá para usar os dois serviços ao mesmo tempo?
Dá. Crie dois clientes com base_url diferentes e mande parte do tráfego para o novo — é uma forma prática de comparar qualidade com dados reais.
Preciso mudar o valor de model?
Não. O valor de sempre é aceito por compatibilidade e o serviço usa o próprio modelo de reconhecimento.
Leitura relacionada
- Como transcrever a gravação de uma chamada — Guia passo a passo para transformar a gravação de uma ligação em texto pela API em poucos minutos. Com exemplos em Python e C# e a lista de erros mais comuns.
- Legendas SRT e VTT automáticas a partir de vídeos e webinars — Como obter legendas prontas com marcações de tempo a partir de um webinar ou vídeo: extração do áudio, formatos SRT e VTT, código e os problemas mais frequentes.
- Preço da transcrição: pelo que você realmente paga — Como funciona a cobrança da transcrição, quais partes do áudio custam dinheiro sem você notar, quando uma GPU própria sai mais barata e como estimar o gasto mensal.