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

Migrating from Azure Speech to Gladia: a step-by-step switching guide

TL;DR: Migrating from Azure Speech to Gladia removes the overhead of custom training pipelines and fragmented per-feature billing. Azure routes diarization, translation, and sentiment through separate services with separate billing meters. We bundle all audio intelligence into one per-hour rate on Starter and Growth plans. Solaria-3 ranks #1 for real-world European business audio, Solaria-1 covers 100+ languages with native code-switching. Both deliver out-of-the-box accuracy that eliminates custom training for most production audio. Most engineering teams complete the API refactoring in under 24 hours.

Speech-To-Text

How to evaluate a speech-to-text API: a technical buyer's framework

TL;DR: Choosing an STT API on vendor benchmarks alone is how teams end up with transcription that looks fine in staging and breaks on production audio. A rigorous evaluation requires building a test set from your own calls, measuring word error rate (WER) on your specific audio distribution, stress-testing latency under concurrent load, and auditing data retraining terms before signing. This guide gives you a reusable engineering blueprint to run that evaluation end-to-end, the same methodology behind our own open async benchmark, which covers 7 datasets and 74+ hours of audio across 8 providers.

Speech-To-Text

The contact center QA scorecard: what to measure and how transcription feeds it

TL;DR: Manual QA teams review as little as 1% to 2% of contact center calls, leaving the vast majority of interactions unreviewed and exposing systemic compliance risks that sampling never surfaces. Scaling to automated coverage requires transcription accurate enough to power LLM-based scoring without silent failures. If your speech-to-text engine misattributes a speaker or drops a compliance disclosure, every downstream scorecard, CRM entry, and coaching flag is wrong. French CCaaS platform Gravite cut per-call review time from 15 minutes to 1 minute (93% reduction) while automating coverage across their full 50,000 hours of annual call volume on infrastructure built for real-world contact center audio.

Migrating from AWS Transcribe to Gladia: a step-by-step switching guide

Published on September 11, 2026
by Ani Ghazaryan
Migrating from AWS Transcribe to Gladia: a step-by-step switching guide

TL;DR: Migrating from AWS Transcribe to Gladia removes three steps from your audio pipeline (S3 staging, IAM configuration, and polling loops), replacing them with a single POST request and native webhook delivery. Most AWS parameters translate directly to our request body with no separate compilation or activation steps. For teams processing noisy, accented, or multilingual business audio, Solaria-3 is built specifically for European real-world business audio, while Solaria-1 covers 100+ languages and real-time streaming.

AWS Transcribe integrates deeply into the AWS ecosystem (Identity and Access Management, CloudWatch, S3), which is convenient if you already run your entire infrastructure there. But that integration comes with a DevOps tax: you are still babysitting S3 buckets and writing polling scripts just to get a transcript, and AWS Transcribe's own documentation acknowledges that background noise, overlapping speakers, and accented speech can affect transcription accuracy. We replace that multi-step pipeline with a single API call, native webhooks, and models built specifically for noisy, accented, and conversational audio, whether you run on AWS, GCP, or Azure. This guide gives you the exact schema translations, code comparisons, and architecture patterns to complete that migration with zero downtime.

Why migrate from AWS Transcribe to Gladia?

The case for migrating rests on three concrete dimensions: cost, accuracy in production conditions, and the time your team spends maintaining the audio pipeline instead of shipping product.

Cost predictability and pricing transparency

AWS Transcribe charges $1.44/hr for standard transcription, and that rate climbs as you add features. Every add-on meter compounds at scale, and invoices become difficult to forecast once audio volume grows beyond a few thousand hours per month.

Our public pricing works differently. We include diarization, translation, named entity recognition, and sentiment analysis at the base rate, with no add-on fees and no per-feature metering.

  • Starter plan: $0.61/hr async, $0.75/hr real-time, pay-as-you-go
  • Growth plan: As low as $0.20/hr async, $0.25/hr real-time, with an upfront commitment that unlocks volume discounts
  • Enterprise: Custom pricing with debundled features, SLAs, and dedicated cloud clusters in EU and US regions

On Growth and Enterprise plans, your audio is never used to retrain our models, and no opt-out action is required. On the Starter plan, customer data may be used for training by default.

Improving transcription in noisy audio

Transcription accuracy gaps in real-world noisy audio compound downstream: every wrong word in the transcript corrupts a CRM entry, a coaching score, or an AI-generated summary.

We built our Solaria-3 model specifically for real-world European business audio across English, French, German, Spanish, and Italian. Solaria-3 ranks #1 on Switchboard, the most challenging dataset, ahead of AssemblyAI, ElevenLabs, Deepgram, Mistral, and Speechmatics, and achieved 6.4% WER on Earnings22 financial calls, the only model under 7% across all providers tested.

Across 7 datasets and 74+ hours of audio, our Solaria-1 model outperforms AssemblyAI, Deepgram, ElevenLabs, and other leading providers on conversational speech, benchmarked at on average 29% lower WER, and covers 100+ languages for multilingual workflows.

Scaling without DevOps overhead

The AWS Transcribe workflow requires you to upload audio to S3, configure IAM roles, call StartTranscriptionJob, write a polling loop to check job status, then fetch and parse the result. Each of those steps is an independent failure surface your team must maintain.

Our API removes that stack. You POST audio directly or pass a public URL, configure a callback_config, and receive the completed transcript via webhook when processing finishes. No S3 bucket management, no IAM role configuration, no polling. Multiple customers report sub-24-hour integration to production, and the shift removes one class of infrastructure toil from your backlog.

Feature parity mapping: AWS Transcribe to Gladia

Mapping custom vocabulary and entities

AWS Transcribe requires custom vocabulary to be configured as a separate resource prior to job submission. In our API, custom vocabulary is passed directly as an array in the request body, alongside a custom_spelling field for preferred spellings of brand names or technical terms. No separate compilation or activation step is required.

Named entity recognition (NER) is part of our audio intelligence feature set and must be explicitly enabled by setting named_entity_recognition: true in your API request body. It is not active by default. Personally Identifiable Information (PII) redaction is separate and must be explicitly enabled in the API request body. It is not active by default on any plan, so sensitive field handling requires deliberate configuration.

Handling multi-channel and speaker data

We power speaker diarization with pyannoteAI's Precision-2 model, available in async workflows only. It cannot run in real-time streaming, and for live transcription workflows, speaker attribution must be handled in post-processing. Our multi-channel audio support is bundled at the base rate. Each channel is transcribed and tagged independently, with each utterance in the result carrying a channel key corresponding to its source.

Language detection and multilingual support

AWS Transcribe requires a language to LanguageCode be specified or IdentifyLanguage identified per job, and neither approach handles mid-utterance language switches without separate routing logic. Our Solaria-1 model detects language automatically across its full range of supported languages. True mid-conversation code-switching is handled in a single end-to-end inference pass with no separate language identification step, which means no additional latency and no broken sessions when speakers shift languages.

AWS Transcribe feature Our equivalent Pricing difference
Standard transcription (batch) POST /v2/pre-recorded (async) Included in base rate
Real-time transcription WebSocket /v2/live (Solaria-1) Included in base rate
Speaker diarization "diarization": true (async only) Included, no add-on
Channel identification Multi-channel audio support Included, no add-on
Custom vocabulary "custom_vocabulary" array in request body Included
Custom language model "custom_spelling" + custom vocabulary Included
PII redaction Explicit opt-in parameter Included when enabled
Translation Built-in translation parameter Included
Sentiment analysis Text-based sentiment output Included
Word-level timestamps Included in JSON response Included

Streaming API migration guide

WebSocket API protocol mapping

AWS Transcribe's real-time streaming uses HTTP/2 or WebSocket with AWS Signature Version 4 signing, which requires computing a HMAC-SHA256 hash chain per request. Our real-time API uses a standard WebSocket connection authenticated with a single API key header.

The connection flow:

  1. POST to https://api.gladia.io/v2/live with your configuration payload and x-gladia-key header to receive a session token
  2. Open a WebSocket connection to the returned session URL
  3. Stream audio chunks as binary WebSocket frames
  4. Receive partial and final transcript events as JSON messages

AWS to Gladia request schema mapping

AWS Transcribe streaming configuration:

```json
{
  "LanguageCode": "en-US",
  "MediaSampleRateHertz": 16000,
  "MediaEncoding": "pcm",
  "ShowSpeakerLabel": true,
  "EnableChannelIdentification": false
}
```

Our streaming configuration:

```json
{
  "encoding": "wav/pcm",
  "sample_rate": 16000,
  "language_config": {
    "languages": [],
    "code_switching": true
  },
  "model": "solaria-1",
  "realtime_processing": {
    "sentiment_analysis": true,
    "named_entity_recognition": true
  }
}
```

Key difference: our code_switching: true parameter with an empty languages array triggers automatic detection across 100+ supported languages, whereas AWS requires you to pre-specify the language or build a separate routing layer.

Managing streaming latency and buffering

Our real-time streaming runs on Solaria-1, which delivers partial transcripts in under 103ms and final transcripts at approximately 300ms latency. Configure audio chunks at 100ms intervals (1,600 samples at 16kHz PCM) for optimal partial latency. Larger chunks trade latency for slightly lower network overhead.

Handling dropouts in streaming ASR

Production WebSocket connections drop. The reconnection strategy that holds up under load:

  1. On close or error event, implement exponential backoff with an initial delay appropriate for your session criticality and network conditions
  2. Increase the backoff interval on each subsequent attempt, applying a cap appropriate for your latency tolerance to prevent runaway retry loops
  3. Set a retry limit appropriate for your session criticality, then surface the failure to your error tracking system rather than retrying indefinitely
  4. On successful reconnect, resume audio streaming from the last confirmed partial timestamp using the existing session token, which remains valid across reconnects. For mission-critical workflows, configure a webhook fallback that captures the partial transcript history before the disconnect, allowing you to resume from the last confirmed timestamp without data loss.

Mapping your AWS Transcribe architecture

Mapping AWS Transcribe to Gladia API

The architectural shift removes three steps from your pipeline.

Migrating to our API simplifies your audio pipeline by replacing S3 buckets and polling loops with a single request and native webhooks.

AWS pipeline: Client -> S3 upload -> StartTranscriptionJob -> polling loop -> result fetch -> Client

Our pipeline: Client -> POST /v2/pre-recorded -> Webhook -> Client

Audio file upload and URL submission

We accept direct file uploads (WAV, M4A, FLAC, AAC) and public audio URLs, with a maximum file size of 1,000MB and a maximum duration of 135 minutes. Passing a URL eliminates S3 as a staging layer entirely. For teams processing recordings already hosted in cloud storage, switching to URL-based submission requires changing one line in the request body. The async transcription API reference documents the full set of accepted formats and size limits.

Replacing polling with webhooks

Include callback: true and a callback_config object in your POST request body, and we POST the completed transcript directly to your endpoint when processing finishes. No polling loop, no status endpoint to hit on a timer, no infrastructure kept alive waiting for a result.

```python
payload = {
    "audio_url": "https://your-storage.com/audio.wav",
    "diarization": True,
    "callback": True,
    "callback_config": {
        "url": "https://your-domain.com/webhooks/transcripts",
        "method": "POST"
    }
}
```

If you prefer polling during development, the Python SDK provides create_and_poll() as a convenience method that fires the job and blocks until the result arrives, without requiring you to implement the loop manually.

Structuring requests and API responses

Our JSON response includes utterances with text, start, end, confidence, words (with word-level timestamps), speaker, and channel keys. When enabled, named entity recognition, sentiment analysis, and translation results are returned alongside the transcript in the same API response, ready to route directly into an LLM pipeline or CRM webhook.

Executing your AWS Transcribe to Gladia migration

1. Audit your current AWS Transcribe usage

Before changing any code, catalog what you are currently sending through AWS Transcribe: audio formats in use, average file duration, whether diarization or channel identification is enabled, any custom vocabulary resources configured, and which downstream systems consume the transcript output. This inventory determines which request parameters you need to map and whether Solaria-1 or Solaria-3 fits your audio profile better.

2. Secure your API connectivity

Retrieve your API key from our dashboard and set it as an environment variable (GLADIA_API_KEY). Pass it via the x-gladia-key header on every request. Before writing integration code, run npx skills add gladiaio/skills to give your AI coding assistant (Cursor, Claude Code) accurate context on our API and SDK surface through the Gladia Skills package, which eliminates hallucinated parameters during implementation.

3. Benchmark against AWS outputs

Run a representative sample of your production audio through both APIs before touching your production pipeline. The Gladia CLI (install via curl -fsSL https://github.com/gladiaio/gladia-cli/releases/latest/download/install.sh | sh on macOS/Linux) transcribes local files or URLs from a single terminal command with no SDK setup required, which makes it the fastest way to validate accuracy on your actual audio distribution. For a broader check, the blind STT comparison tool is a fun way to test providers on your audio by removing the brand bias. Upload a file, pick the better transcript before seeing which provider produced it, and get ELO-ranked results across six providers with no integration work required. It's a useful gut check, but follow it with a reproducible benchmark on your full audio distribution before making a production commitment.

4. Mapping parity for AWS Transcribe

Here is the code-level mapping from the AWS Boto3 SDK to our simplified HTTP request:

```python
# AWS Transcribe (Boto3 SDK)
import boto3

transcribe = boto3.client('transcribe', region_name='us-west-2')
transcribe.start_transcription_job(
    TranscriptionJobName='migration_test_job',
    Media={'MediaFileUri': 's3://my-bucket/audio.wav'},
    MediaFormat='wav',
    LanguageCode='en-US',
    Settings={
        'ShowSpeakerLabels': True,
        'MaxSpeakerLabels': 2
    }
)
# You must now write a polling loop to check job status before fetching the JSON.

# Gladia API (simplified HTTP request)
import requests

headers = {"x-gladia-key": "YOUR_API_KEY"}
payload = {
    "audio_url": "https://your-storage.com/audio.wav",
    "diarization": True,
    "callback": True,
    "callback_config": {
        "url": "https://your-app.com/webhooks/transcripts",
        "method": "POST"
    }
}
response = requests.post("https://api.gladia.io/v2/pre-recorded", headers=headers, json=payload)
# No polling required. Our API POSTs the completed transcript directly to your callback endpoint.
```

The AWS version requires S3 staging, IAM credentials, Boto3 installation, and a separate polling implementation. Our version requires an API key and an HTTPS endpoint that can receive a POST request.

5. Verify production parity using canaries

Route a small percentage of production traffic to our API while keeping your AWS Transcribe pipeline as the baseline. Monitor three metrics during the canary window:

  • WER on a representative transcript sample compared to your AWS baseline
  • End-to-end latency from audio submission to webhook delivery
  • Error rate and HTTP status codes from our API

Increase traffic incrementally (10%, then 25%, 50%, then 100%) over one to two weeks depending on call volume, and verify webhook delivery, entity extraction accuracy on a sample of recent calls, and timestamp alignment in any synchronized display features. For contact center workloads, Gravite cut call quality review time by 93% while running this pattern across 50,000 hours of audio per year.

6. Executing the AWS Transcribe switch

When canary metrics confirm parity, complete the cutover:

  1. Update your environment variables to point all audio submission to our API endpoint
  2. Allow any active AWS Transcribe jobs to drain (do not cancel them mid-processing)
  3. Remove S3 staging logic once the last AWS job confirms completion
  4. Deprecate the polling loop and IAM role configuration from your codebase
  5. Verify webhook delivery is functioning on 100% of traffic before archiving the AWS configuration

Integrating Gladia endpoints into existing pipelines

Mapping AWS Transcribe streams

If you are streaming audio from Amazon Kinesis Video Streams or Twilio Media Streams into AWS Transcribe, redirect the outbound stream to our WebSocket endpoint (the URL returned by the initial POST to https://api.gladia.io/v2/live). The audio format requirements (PCM, 16kHz, 16-bit mono) align with what Kinesis and Twilio emit by default. Our Amazon Connect transcription integration guide covers the Kinesis stream interception pattern in detail.

Implementing the streaming API

```python
import asyncio
import websockets
import json
import requests

GLADIA_API_KEY = "YOUR_API_KEY"

async def stream_audio(audio_file_path):
    session_resp = requests.post(
        "https://api.gladia.io/v2/live",
        headers={"x-gladia-key": GLADIA_API_KEY},
        json={"encoding": "wav/pcm", "sample_rate": 16000, "model": "solaria-1"}
    )
    ws_url = session_resp.json()["url"]

    async with websockets.connect(ws_url) as ws:
        with open(audio_file_path, "rb") as f:
            while chunk := f.read(3200):  # 100ms at 16kHz 16-bit
                await ws.send(chunk)
                try:
                    msg = await asyncio.wait_for(ws.recv(), timeout=0.01)
                    event = json.loads(msg)
                    if event.get("type") == "transcript":
                        print(event["data"]["utterance"]["text"])
                except asyncio.TimeoutError:
                    pass
        await ws.send(json.dumps({"type": "stop_recording"}))
```

Migrating async workflows

AWS Lambda functions and Celery workers that call start_transcription_job and poll for results can be refactored to a two-function pattern: a submission function that POSTs to our pre-recorded endpoint and a webhook handler that processes the inbound result payload. The submission function becomes synchronous with no polling state to maintain, and the webhook handler replaces the polling worker entirely.

Handling batch transcription

We process approximately one hour of audio in under 60 seconds at full pipeline throughput. For large batches, submit jobs concurrently rather than sequentially. Each completed job delivers its result to your configured callback_config.url independently, which maps naturally to a fan-out/fan-in pattern in Lambda or Celery.

Cost modeling: AWS Transcribe vs. Gladia

Monthly volume (hours) AWS Transcribe (base rate) Gladia Starter (all-inclusive) Gladia Growth (all-inclusive)
1,000 hours $1,440.00 $610.00 $200.00
10,000 hours $14,400.00 $6,100.00 $2,000.00
50,000 hours $72,000.00 $30,500.00 $10,000.00

AWS Transcribe base rate calculated at $1.44/hr (US East Tier 1, first 250,000 minutes/month). AWS applies volume-tiered pricing above that threshold. Tier 2 ($0.90/hr) from 250,000-1,000,000 minutes, Tier 3 ($0.612/hr) beyond, so the 10,000-hour and 50,000-hour rows represent the entry-tier rate, not the blended rate a high-volume customer would pay. Additional AWS features (custom vocabulary, custom language models) may incur separate charges depending on configuration. Our Growth tier modeled at the $0.20/hr entry-level commitment rate, with all audio intelligence features included.

Predicting monthly spend

Monthly cost on Starter is audio hours × $0.61, and on Growth it is audio hours × your committed rate (as low as $0.20/hr). Because we bundle diarization, translation, NER, and sentiment analysis, enabling those features adds $0 to the calculation. AWS Transcribe requires you to run a separate cost model for each add-on feature enabled, which makes forecasting materially more complex at scale.

Scaling cost projections: 1x to 10x

At 1,000 hours per month, Gladia Starter costs 58% less than AWS Transcribe base transcription. At 10,000 hours on Growth, the reduction reaches 86% against AWS Transcribe's Tier 1 entry rate. The blended rate at that volume is lower, but Growth still delivers a substantial reduction. The gap widens with volume because our per-hour rate does not include feature add-on multipliers. Enterprise teams processing 50,000+ hours per month should model against our custom Enterprise tier, which includes debundled pricing for specific feature subsets alongside dedicated cluster hosting in EU or US regions.

Best practices for navigating infrastructure shifts

Estimating your migration timeline and concurrency

Most teams complete the API integration in under 24 hours using our Python or JavaScript SDK. Plan for one to two additional weeks for incremental traffic ramp and downstream system verification (CRM sync, analytics pipeline, LLM routing). Our infrastructure handles high concurrency without pre-provisioning: one fintech customer runs 800 concurrent sessions, and Aircall processes over 1 million calls per week. Submit jobs as they arrive and the infrastructure absorbs the load without queue management on your side.

Mapping custom vocabularies

Pass custom vocabulary as a JSON array of strings in the request body under the custom_vocabulary key. For compound terms or brand names with non-obvious output forms, the custom_spelling parameter specifies preferred spellings. Format entries as plain strings without phonetic annotations since our model applies the vocabulary at inference time without a separate compilation step.

Data residency and compliance

We host dedicated cloud clusters in EU and US regions, configurable per account. For most GDPR compliance requirements, our dedicated EU cluster with SOC 2 Type II, ISO 27001, HIPAA, and GDPR certifications satisfies data residency obligations. Review our compliance hub for the SOC 2 report, penetration test report, and subprocessor list.

Validating accuracy before migration

Before committing to a cutover, run your own audio through both APIs on a sample that reflects your actual production distribution: the languages your users speak, the noise conditions in your recording environment, and the domain vocabulary your product handles. Our async benchmark methodology covers 7 datasets and 74+ hours of audio with open methodology you can cross-reference against your own test set.

Completing your AWS Transcribe migration

At this point you have the schema translations, code comparisons, canary rollout sequence, and cost model to move from AWS Transcribe to Gladia without touching production until you are confident in the result. The architectural change is contained: remove S3 staging, IAM configuration, and the polling loop. Replace them with a single POST request and a webhook handler. Every other piece of your pipeline (downstream CRM syncs, LLM routing, analytics workers) connects to the same structured output without modification.

The migration is worth validating on your own audio before committing. Run a representative sample through both APIs, compare WER on the transcript segments that matter most to your product, and verify webhook delivery end-to-end. If your audio skews toward noisy business calls or European languages, test on Solaria-3. If you need broad language coverage or real-time streaming, test on Solaria-1. The canary pattern in step 5 gives you a clean rollback path if anything in your specific audio distribution behaves unexpectedly.

Start with €50 in free credits and have your first transcript running against production audio in under a day.

FAQs

Is Gladia cheaper than AWS Transcribe at scale?

Yes, our Growth tier starts as low as $0.20/hr all-inclusive, whereas AWS Transcribe charges $1.44/hr for base transcription with additional charges for features depending on configuration. At 10,000 hours per month, that is an 86% cost reduction against AWS Transcribe's Tier 1 entry rate. AWS applies volume discounts above 250,000 minutes/month, so the real blended AWS cost at that volume is lower, but Growth remains materially cheaper all-inclusive.

How is data privacy handled for sensitive audio?

On our Growth and Enterprise plans, your audio data is never used to train our models, and no opt-out configuration is required. On our Starter plan, customer data may be used for model training by default.

How long does migration typically take?

Most teams complete the API integration in under 24 hours. The schema translation from AWS Transcribe parameters to our request body is direct (see the mapping table above), and removing the S3 staging and polling loop simplifies the implementation rather than adding to it. Plan for one to two additional weeks if you are running a canary rollout and verifying downstream systems such as CRM syncs, analytics pipelines, or LLM routing before cutting over 100% of traffic.

Does Gladia support the same audio formats as AWS Transcribe?

We accept WAV, M4A, FLAC, and AAC files up to 1,000MB and 135 minutes in duration for async transcription. For streaming, we accept PCM audio over WebSocket, which is the same format Kinesis Video Streams and Twilio Media Streams emit by default. You can also pass a public audio URL directly in the request body rather than uploading a file, which removes S3 as a staging layer entirely.

Key terms glossary

Word Error Rate (WER): A standard metric measuring speech recognition accuracy by calculating the percentage of insertions, deletions, and substitutions in a transcript relative to a reference. Lower is better. WER is the primary metric used in our async benchmark methodology to compare providers across audio conditions.

Diarization Error Rate (DER): A metric measuring speaker diarization performance by calculating the percentage of time speaker labels are assigned incorrectly. Our async diarization, powered by pyannoteAI's Precision-2 model, is benchmarked against alternatives on conversational audio.

Code-switching: Alternating between two or more languages within a single conversation, which Solaria-1 detects automatically across its full language coverage without pre-specifying which languages to expect.

Webhook: An HTTP callback that allows our API to push completed transcription payloads directly to your application endpoint, eliminating the need for polling loops.

Canary deployment: A deployment pattern that routes a small percentage of production traffic to a new system while keeping the existing system as a fallback, allowing metric comparison before full cutover.

Data residency: The requirement that data be stored and processed within a specific geographic region to satisfy local regulatory frameworks. We support configurable residency in EU and US dedicated clusters.

Contact us

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

Read more