HomeBlog → How to migrate from the OpenAI Whisper API to another service

How to migrate from the OpenAI Whisper API to another service

Published 2026-08-05 · 5 min read

Teams leave the public Whisper API for different reasons: cost at volume, requirements on where data is processed, or the service simply not being available in their region. The good news is that when the API is protocol-compatible, migration comes down to two lines and takes an evening.

What actually changes in the code

Exactly two things: the base URL and the key. Everything else — field names, response formats, error handling — stays as it is.

# before
client = OpenAI(api_key="sk-…")

# after
client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="vs_live_…")

The transcription call is not touched at all:

result = client.audio.transcriptions.create(model="whisper-1", file=f)

Keep the model parameter for compatibility: the service accepts the familiar value and uses its own model.

Compatibility in detail

WhatMatches
Endpoint POST /v1/audio/transcriptionsyes
File field file, multipart requestyes
Parameters language, prompt, temperature, response_formatyes
Response formats: json, text, verbose_json, srt, vttyes
Error shape {"error": {"message", "type", …}}yes

That last row matters more than it looks: the official SDKs parse errors into typed exceptions. If a server answers with its own error shape, client code fails in an unexpected place — compatible errors save you from rewriting handlers.

How to compare quality before switching

Do not flip production blindly. A sensible order:

  1. Collect a sample. Twenty to fifty real recordings: clean, noisy, short, in different languages — the way they arrive in production.
  2. Run them through both services with one script and keep the results side by side.
  3. Judge by your own criteria. Abstract percentages do not matter; your scenarios do — are product codes, names and amounts recognised correctly?
  4. Switch gradually. Send 10% of traffic to the new service, then all of it a few days later.
for path in samples:
    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  before:", a, "\n  after:", b)

What to check separately

When migration is worth it

Changing provider makes sense if at least one of these is true:

If none of that applies, leave the working integration alone — compatibility means you can still move later in a single evening.

Try it on your own recordings. Sign-up takes a minute, and the free minutes are enough to judge the quality.

Get a free API key

Frequently asked questions

Will I have to rewrite my code to switch?

No, if you use the official openai-sdk: only the base URL and the key change. Calls, parameters and response parsing stay the same.

Do the srt and vtt formats work?

Yes, every familiar response_format value is supported: json, text, verbose_json, srt and vtt.

What about error handling in the SDK?

Errors are returned in the same shape as OpenAI uses, so the SDK converts them into typed exceptions and your existing handlers keep working.

Can I run both services at the same time?

Yes. Create two clients with different base URLs and route part of your traffic to the new one — a convenient way to compare quality on real data.

Do I need to change the model value?

No. The familiar value is accepted for compatibility and the service uses its own recognition model.

Related reading