API Comparison Table

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Block quote

Ordered list

  1. Item 1
  2. Item 2
  3. Item 3

Unordered list

Text link

Bold text

Emphasis

Superscript

Subscript

Pricing
Get started
Get started

Read more

Speech-To-Text

Speech-to-text for AI medical scribes: Why clinical vocabulary breaks generic STT

TL;DR: Generic STT engines fail in clinical environments because language model probability overrides correct acoustic detection of medical terms, substituting phonetically plausible but clinically wrong candidates silently. The result corrupts drug names, dosages, and diagnoses before the LLM ever sees them. Before selecting an STT engine for a medical scribe, verify four things: whether vocabulary biasing works at inference time without fine-tuning, whether async diarization accurately separates clinician and patient audio, whether the model holds up on noisy consultation recordings rather than clean read-speech, and whether the vendor's data training policy covers PHI by default on your plan.

Speech-To-Text

Migrating from self-hosted Whisper to a managed speech-to-text API

TL;DR: Self-hosting Whisper's true cost rarely sits in the model weights. GPU idle time, VRAM leaks under parallel load, and the engineering hours spent maintaining CUDA dependencies and diarization pipelines are where the bill compounds. For teams processing under roughly 3,000 hours per month, assuming 20% of one US FTE at $150K loaded annual cost, a managed API is cheaper, though the break-even shifts materially against your actual labor cost. Above that threshold, the decision depends on your DevOps overhead and whether audio accuracy on real-world recordings matters for downstream systems like CRM sync and coaching scores.

Speech-To-Text

Migrating from AssemblyAI to Gladia: A step-by-step switching guide

TL;DR: Switching from AssemblyAI requires four concrete changes: update one auth header, remap batch endpoints, adjust the JSON response schema, and resample audio for WebSocket connections. Multiple customers independently report completing these in under a day with a rollback abstraction layer in place. The bigger structural difference is cost model: a production stack with diarization, sentiment, entities, and summarization runs $0.30/hr on AssemblyAI's Universal-2 tier because each feature is metered separately, versus a bundled base rate. This guide covers the exact parameter mappings, payload diffs, WebSocket reconfiguration, and a zero-downtime cutover strategy.

Migrating from self-hosted Whisper to a managed speech-to-text API

Published on July 31, 2026
by Ani Ghazaryan
Migrating from self-hosted Whisper to a managed speech-to-text API

TL;DR: Self-hosting Whisper's true cost rarely sits in the model weights. GPU idle time, VRAM leaks under parallel load, and the engineering hours spent maintaining CUDA dependencies and diarization pipelines are where the bill compounds. For teams processing under roughly 3,000 hours per month, assuming 20% of one US FTE at $150K loaded annual cost, a managed API is cheaper, though the break-even shifts materially against your actual labor cost. Above that threshold, the decision depends on your DevOps overhead and whether audio accuracy on real-world recordings matters for downstream systems like CRM sync and coaching scores.

If your team spends more sprint capacity debugging CUDA out-of-memory errors than shipping product features, you are paying for Whisper twice. The model weights are free, but running them reliably in production accumulates silent technical debt faster than almost any other infrastructure choice. This guide covers the technical and financial path from a self-hosted faster-whisper or vLLM setup to our managed speech-to-text API, with specific attention to VRAM bottlenecks, hallucination patterns, and fragmented service dependencies that make self-hosting deceptively expensive at scale.

Reducing infrastructure debt by switching to APIs

Reducing maintenance overhead

A self-hosted Whisper cluster requires ongoing CUDA driver patching, container health monitoring, and dependency management across faster-whisper, ctranslate2, and your orchestration layer. Every sprint point babysitting GPU nodes is a point not spent on differentiated features. Our managed API removes this entire surface: you call the endpoint, we handle versioning, updates, and infrastructure health.

Debugging silent transcription errors

Vanilla Whisper hallucinates on silent or low-quality audio segments, producing phantom phrases or repeating loops. Debugging requires building custom post-processing heuristics that compound your technical debt. The failure mode is silent: wrong names reach your CRM, missed entities produce misleading coaching scores, and damage appears downstream before detection. Developers who have migrated report significantly fewer hallucinations on silent and degraded audio in production, without requiring manual post-processing guards.

Managing GPU inference bottlenecks

Whisper large-v3 requires approximately 10GB of VRAM in float16, per OpenAI's published model card. When traffic spikes or long files queue simultaneously, self-hosted setups face severe queueing delays or out-of-memory (OOM) crashes. There are documented memory leak issues in faster-whisper where parallel transcription runs cause memory to grow continuously until OOM, even with manual garbage collection attempted between calls. Running redundant AWS G5 instances (1x A10G GPU) at approximately $1.01/hour per node (per AWS public pricing) means approximately $1,475 to $2,210 monthly for two to three failover instances, before accounting for idle time on bursty workloads.

Architectural impacts of offloading Whisper

Removing GPU provisioning tasks

Auto-scaling GPU node groups (AWS G4dn or G5, T4 or A10G GPUs) solve concurrency on paper, but cold-start latency on spot instances adds minutes to the first scaling event, and capacity forecasting becomes a dedicated task. Managing node groups, handling spot interruptions, and tuning batch sizes requires dedicated engineering ownership that does not scale down once the infrastructure exists. Our infrastructure handles this entirely: thousands of parallel sessions spin up in seconds with no pre-provisioning. We maintain 99.9%+ uptime across EU and US clusters, with live availability tracked on our status page. Aircall processes 1M+ calls weekly at a scale that would require a dedicated platform team to replicate self-hosted.

Mapping service dependencies to APIs

Production self-hosted Whisper setups rarely run Whisper alone. They typically include a separate diarization pipeline, a translation service (often mBART or a separate API call), manual timestamp alignment code, and a queueing layer like Celery or RabbitMQ to manage inference jobs. Each seam between these services is a place where data can degrade or disappear, and each requires its own monitoring, versioning, and on-call coverage.

Migrating to our API collapses this stack. Speaker diarization (powered by pyannoteAI's Precision-2 model), translation across 100+ languages, text-based sentiment analysis, named entity recognition, and summarization are all available in a single transcription request on Starter and Growth plans at no additional cost. The Audio-to-LLM pipeline turns structured output directly into LLM-ready data your downstream systems can act on without an intermediate processing step.

Reducing integration overhead

The difference in engineering overhead is stark. Self-hosted pipelines require managing GPU allocation, Celery queues, VRAM clearing, and separate diarization integration across 50+ lines before producing a transcript:

```python
import torch
from faster_whisper import WhisperModel
from pyannote.audio import Pipeline
from celery import Celery

app = Celery('whisper_tasks', broker='redis://localhost:6379/0')

device = "cuda" if torch.cuda.is_available() else "cpu"
model = WhisperModel("large-v3", device=device, compute_type="float16")
diarization_pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization")

@app.task
def transcribe_with_diarization(audio_path):
    segments, info = model.transcribe(audio_path, beam_size=5)
    transcript_segments = list(segments)
    diarization = diarization_pipeline(audio_path)
    aligned_output = align_speakers_to_words(transcript_segments, diarization)
    torch.cuda.empty_cache()  # Manual VRAM cleanup to prevent memory leaks
    return aligned_output
```

Our managed API replaces that entire stack with a single authenticated request, as documented in the API reference:

```python
import requests

# Step 1: upload the audio file
upload = requests.post(
    "https://api.gladia.io/v2/upload",
    headers={"x-gladia-key": "YOUR_API_KEY"},
    files={"audio": open("audio.wav", "rb")}
)
audio_url = upload.json()["audio_url"]

# Step 2: initiate the transcription job
response = requests.post(
    "https://api.gladia.io/v2/pre-recorded",
    headers={"x-gladia-key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={
        "audio_url": audio_url,
        "diarization": True,
        "translation": True,
        "translation_config": {"target_languages": ["en"]}
    }
)
result = response.json()
# Returns a job id and result_url; poll GET /v2/pre-recorded/:id for the transcript
```

The SDK documentation handles auth, retries, and structured output parsing for both Python and JavaScript without additional dependencies.

Calculating the ROI of offloading Whisper

Per-hour pricing in managed APIs

Our pricing is based on audio duration processed, with all audio intelligence features included in the base rate on Starter and Growth plans. There are no add-on fees for diarization, translation, sentiment analysis, or named entity recognition on those tiers. The full pricing breakdown is public:

  • Starter: $0.61/hr async, $0.75/hr real-time. New users receive a one-time €50 credit without expiry. There are no recurring free hours on this tier. Customer data can be used for model training by default on this tier.
  • Growth: As low as $0.20/hr async, $0.25/hr real-time. No training on customer data, no opt-out required.
  • Enterprise: Custom pricing with fine-tuning, on-premises options, and zero data retention.

Cost model at 1x, 5x, and 10x volume

GPU compute is the headline cost but rarely the dominant line item. The worked example below uses the only volume where the self-hosted cost can be built from sourced components. GPU estimates use current AWS G5 instance pricing ($1.01/hr per node, per AWS public pricing). The labor component assumes 20% of one US FTE at $150K loaded annual cost (~$2,500/mo). Adjust both lines against your actual team cost and GPU utilization before drawing conclusions.

At 1,000 hours per month, self-hosted infrastructure using two to three AWS G5 instances runs approximately $1,475–$2,210/mo in GPU compute (2–3 nodes × $1.01/hr × 730 hrs). Adding the stated DevOps labor assumption brings the total to roughly $3,975–$4,710/mo. The Growth plan at $0.20/hr costs $200/mo for the same volume, a monthly saving of approximately $3,775–$4,510/mo under these assumptions. At higher volumes, the self-hosted GPU cost does not scale linearly: utilization efficiency improves as queues stay fuller, and the DevOps labor component does not grow proportionally with audio hours. Those dynamics make the 5,000-hour and 10,000-hour cases genuinely harder to model without knowing your actual GPU utilization rate and team structure.

As volume scales, the cost comparison becomes more nuanced. GPU utilization improves at higher throughput. Below roughly 3,000 hours per month, assuming 20% of one US FTE at $150K loaded, the managed API is cheaper by a substantial margin. Above that threshold, model both approaches against your actual infrastructure and labor costs before committing.

Addressing model accuracy and language gaps

Optimizing transcription for noisy audio

Solaria-3, built specifically for real-world European business audio, achieves 6.4% WER on Earnings22, ranking #1 ahead of AssemblyAI, ElevenLabs Scribe v2, Deepgram Nova-3, Mistral Voxtral, and Speechmatics. That reduction in WER on financial call audio translates directly to fewer corrections in your CRM, higher coaching scorecard fidelity, and cleaner inputs for downstream LLM summarization.

Solaria-3 runs in async mode and is the right choice for contact center and BPO teams doing post-call analytics, meeting note generation, and any European business audio workflow across English, French, German, Spanish, and Italian.

Handling non-English language gaps

Whisper's accuracy varies on accented speech and non-English audio outside its primary training distribution, a limitation OpenAI's own model card acknowledges. For multilingual teams, this gap surfaces as silent churn: support tickets from non-English speakers, missed entities in non-Latin scripts, and coaching scores meaningless for contact center and BPO teams in Southeast or South Asia. Our Solaria-1 model covers 100+ supported languages.

Solaria-1 handles native mid-conversation code-switching within the same inference pass, without a separate language classification step or routing pipeline. When a speaker shifts from English to French mid-sentence, Solaria-1 stays with them in the same pass. Standard Whisper setups often fail silently on these transitions, returning garbled output or misattributing the segment entirely.

If you want a quick, brand-bias-free sanity check, our blind STT comparison tool lets you drop in your own audio and see how providers rank blind. It is not a substitute for a rigorous WER evaluation on your own labeled test set, but it is a useful gut-check before you invest time in a full benchmark.

Testing performance on real-world clips

The only credible evaluation is on your own audio. Here is a practical four-step methodology:

  1. Build a representative test set from 50 to 100 production recordings covering your target domains, including accented speakers, noisy environments, and the languages your product serves.
  2. Generate reference transcripts by human annotation or by using your current best-accuracy self-hosted output as a baseline.
  3. Submit the same files to both pipelines and compute WER using a standardized text normalizer (OpenAI's Whisper normalizer works well for this purpose).
  4. Compare DER on multi-speaker recordings to validate whether speaker attribution meets the threshold your downstream systems require.

Scaling inference throughput for production

Latency profiles for audio ingestion

faster-whisper, built on ctranslate2, is the most widely used self-hosted option for throughput. On a dedicated A10G GPU with tuned batch parameters, it processes audio faster than real-time in ideal conditions. In production, VRAM contention during traffic spikes introduces queueing delays that are difficult to predict without significant over-provisioning. Our async pipeline transcribes one hour of audio in under 60 seconds, as Claap demonstrated in production, with consistent throughput regardless of concurrent session volume.

Concurrency limits and queueing

Self-hosted setups require Celery, RabbitMQ, or a custom job queue to manage concurrent inference requests beyond a single GPU. Configuring, monitoring, and debugging this queueing layer is a non-trivial maintenance burden, particularly when traffic is bursty. Our API handles concurrency natively: a fintech customer we work with runs 800 concurrent sessions without pre-provisioning or capacity forecasting.

Optimizing API protocol for latency

We support both REST (for async batch processing) and WebSocket (for real-time streaming). Async via REST is the primary workflow for meeting assistants, note-takers, and post-call contact center analytics. Real-time via WebSocket uses Solaria-1 and delivers partials under 103ms with a final transcript latency of approximately 300ms, fitting most voice agent and live-assist latency budgets. Solaria-3 is async only, so for European business audio processed after the call, use Solaria-3 over REST. For live transcription workflows, use Solaria-1 over WebSocket.

Executing your migration to a managed STT API

Benchmarking managed vs local models

Run the evaluation on WER and DER side by side before committing. Use the same audio set, the same reference transcripts, and the same text normalizer (OpenAI's Whisper normalizer) for both systems. Pay particular attention to DER on multi-speaker recordings: our async diarization, powered by pyannoteAI's Precision-2, delivers up to 3x lower DER vs. alternatives on the same audio, based on our published benchmark across 74+ hours.

API migration workflow and timeline

Multiple customers report completing the initial API integration in under 24 hours using our Python or JavaScript SDK, as documented in the getting-started guide. Production migration can often be completed in one to two weeks:

  1. Week 1: API integration complete in staging. Test against representative audio. Compare WER and DER against self-hosted baseline.
  2. Week 2: Run parallel traffic (10% of production requests) to our API in shadow mode. Monitor for latency deviation and hallucination incidents.
  3. Weeks 3-4: Gradual cutover from 25% to 100% of traffic. Keep self-hosted as a fallback in read-only mode.
  4. Post-migration: Decommission GPU nodes and remove faster-whisper dependencies from your codebase.

Testing and fallback for STT migration

Run the parallel phase long enough to observe meaningful traffic patterns before increasing percentage. Monitor for statistically meaningful WER deviations from your self-hosted baseline, and define a DER threshold for multi-speaker use cases before starting the parallel phase. If speaker attribution degrades beyond your defined tolerance, a meaningful share of coaching scores will attribute the wrong speaker. If either metric exceeds your defined tolerance, route all traffic back to self-hosted immediately: your GPU nodes are still live and no code changes are required. Only decommission self-hosted infrastructure after confirming stable production operation at full traffic.

Meeting privacy requirements with managed STT

Data residency and DPA requirements

We operate EU-west and US-west processing clusters. EU customer audio can be kept on EU infrastructure through region configuration, satisfying GDPR data residency requirements. Data Processing Agreements (DPA) covering EU and US regions are available, with current terms described in our compliance hub. We support HIPAA-regulated healthcare use cases.

No-retraining guarantees

On Growth and Enterprise plans, your audio files and transcripts are never used to train our models, and no manual opt-out action is required. This is a contractual default, verifiable in the DPA. The Starter plan operates differently: customer data can be used for model training by default on that tier. If data isolation is a compliance requirement, Growth or Enterprise is the correct tier.

Maintaining SOC 2 and GDPR standards

Migrating to our API does not weaken your security posture. We hold SOC 2 Type II, ISO 27001, HIPAA, GDPR, and PCI certifications. For organizations in regulated industries that require true air-gapped deployment with zero external network access, we offer an on-premises deployment option on Enterprise. If that constraint applies, contact us to discuss the on-premises configuration before beginning a standard cloud integration.

The decision matrix below summarizes the key production trade-offs between the two approaches:

Feature / Metric Self-hosted Whisper (faster-whisper) Our managed API (Solaria-3 / Solaria-1)
Latency Batch throughput depends on GPU model, VRAM, and batch size. Streaming latency is constrained by chunk architecture and queueing under load ~300ms real-time (Solaria-1 via WebSocket) / ~60s per hour of audio async
Throughput Hard-capped by local GPU VRAM Thousands of parallel sessions, no pre-provisioning
Maintenance High (CUDA patching, scaling, monitoring) Minimal (managed infrastructure with standard API maintenance)
Compliance Manual SOC 2/GDPR auditing required SOC 2 Type II, ISO 27001, HIPAA, GDPR, EU data residency
Features Transcription only (separate diarization, translation services required) Diarization, translation, sentiment, and summaries in one call

Start with €50 in free credits and have your integration in production in less than a day. Test our models on your own customer recordings, including accented speech and background noise, to validate how Solaria-1 and Solaria-3 perform against your current self-hosted baseline before committing.

FAQs

How long does it take to migrate from self-hosted Whisper to your API?

Multiple customers report completing the initial API integration in under 24 hours using our Python or JavaScript SDK. Full production migration, including a parallel validation phase and gradual traffic cutover, typically takes one to four weeks depending on the scale of your deployment and the complexity of your existing pipeline.

Is self-hosting ever still the right choice?

Yes, for strictly air-gapped environments with zero external network connectivity, such as classified or defense contexts with no internet access, self-hosting on-premises hardware is still necessary. We offer an on-premises deployment option at the Enterprise tier for regulated customers whose requirements fall outside cloud configurations.

Do you use our audio data to train your models?

On Growth and Enterprise plans, your audio files and transcripts are never used for model training, and no manual opt-out is required. On the Starter plan, data can be used for training by default.

What is the latency of your real-time transcription?

Our real-time streaming API (Solaria-1 via WebSocket) delivers a final transcript latency of approximately 300ms, with partial transcripts returned in under 103ms. Solaria-3 is async only and is not available for real-time streaming.

How does your diarization compare to self-hosted pyannote setups?

Our async diarization is powered by pyannoteAI's Precision-2 model, benchmarked across 74+ hours of audio against alternatives. Diarization is available in async workflows only and is not supported in real-time streaming.

Key terms glossary

VRAM (Video RAM): The dedicated GPU memory used to store model weights and intermediate states during inference, which is the primary hardware bottleneck when self-hosting large models like Whisper large-v3. VRAM exhaustion is the root cause of most self-hosted out-of-memory (OOM) crashes under concurrent load.

Out-of-memory (OOM): A crash condition that occurs when GPU VRAM is exhausted during model inference, forcing the system to terminate the process. Common in self-hosted Whisper setups under high concurrency or with memory leaks.

Contact us

280
Your request has been registered
A problem occurred while submitting the form.

Read more