https://sandbox.voice.miraiminds.co. API requests use
Authorization: Bearer sk_live_…, the same workspace key as the rest of the
v2 API.
When to use it
Turning example calls into a node-based agent has its own transcription step,
priced separately. See
Draft a flow from call recordings.
How it works
Speaker separation, which is on unless you senddiarize: false, listens to
the voices first to work out who spoke when. It also finds the parts of the
recording that aren’t speech: ringing, ring-back and dial tones, a caller tune
before the call is picked up, or hold music. Those parts are silenced before
anything is transcribed, so they don’t come back as stray words or as an extra
speaker. Recorded announcements, such as an IVR menu, are speech, so they are
still transcribed.
Several speech recognition passes then listen to the recording. A language
model compares them and writes one transcript, using any context and vocabulary
you sent to settle names and terms.
While the language model works, the job carries a draft: the strongest single
pass, with timestamps and no speakers. In the draft, English is often
written out in Devanagari. The finished transcript writes Hindi in Devanagari
and English in Latin script, the way the speakers switched between them.
Common English loanwords can stay in Devanagari. Nothing is translated.
queued, decoding and merging to completed or
failed. The reference describes each status.
Try it in the console
1
Open the Playground
Sign in to the console, open
Speech to text and choose Offline.
2
Add recordings
Choose one recording or several: WAV, MP3 or M4A, up to 45 MB each. Add a
line of context and any names or terms to spell right, then click
Transcribe.
3
Open the transcript
Each recording gets a row with its length, a clock and its stage. Open it as
soon as the draft appears. The finished transcript takes its place in the
player on its own.
Use the API
Send the recording as a multipart upload:202 Accepted with the job, whose status is queued. Read it
every few seconds until status is completed or failed:
https url
(up to 200 MB), such as a pre-signed link to your storage. The
Transcriptions reference has every field, response and
error, with Python and Node.js. To build a review screen on top of this, follow
the transcript player cookbook.
Speakers and timestamps
A finished job has one segment for each turn:start and end are seconds from the start of the recording.
speaker_id is the person: spk0, spk1 and so on. On a phone call, each
person gets one ID. When the roles are known, the agent is spk0 and the
customer spk1, and any other voice comes after them. Group lines by
speaker_id.
speaker is that person’s role: Agent, Customer or Other. Every segment
with the same speaker_id has the same role. The role is worked out from what
each person says and can be wrong, so show it as a first label that someone can
change. It is empty when the role could not be told. diarization.speakers
lists each speaker once, with its role and how many seconds it talked.
A third voice, such as a second person in the room or a recorded announcement,
keeps its own ID, and its role is usually Other. On phone recordings, that
applies to a voice that talks for about ten seconds or more in all. A shorter
extra voice is merged into the main speaker it sounds closest to.
diarization.non_speech lists the parts that were left out because they
weren’t speech, each as a start and end in seconds. It is absent when
nothing was left out, or when you sent diarize: false.
Send words: true for the time of every word. Word timings are added when they
line up with the audio, which today means Hindi recordings; Gujarati and
English recordings come back without them. diarization.words.applied tells
you whether they were added. They need speaker separation, which is on unless
you send diarize: false.
Languages
Mira Transcribe is built for phone calls in Hindi and Hinglish.language
defaults to auto, which detects the main language of the call. You can set it
to hi, gu, en, mr, pa, bn or ur when you know the main language
and detection gets it wrong. Speech in another language inside the call is kept
as it was spoken.
When a call is mostly in English with some Hindi, or mostly Hindi with some
English, the parts in the less-used language can come back less accurate than
the rest. A Hindi greeting at the start of an English call is a common case.
context and vocabulary help with the names and terms in those parts.
Getting names and terms right
vocabulary takes names, brands, products, places and codes, spelled the way
you want them back. Send up to 200 terms of up to 100 characters each, as one
string separated by commas or new lines, or as a JSON array. A term can’t
contain a comma, and repeats are dropped.
context is a sentence or two about the call: who is calling whom, and why.
It can be up to 2,000 characters.
Both affect spelling and script. We sent the same 23-second test call twice.
With an unrelated context, “Mira University” and “Aadhaar” came back as
“मीरा यूनिवर्सिटी” and “आधार”. With the context and vocabulary in the example
above, both came back as written. Use the same context and vocabulary for every
call of one kind.
Pricing
Transcription costs ₹18 per hour of audio on every plan. Prices exclude GST.- A job is charged by the length of the recording, to the millisecond, rounded up to the paisa once. A 23-second call costs ₹0.12 and a five-minute call ₹1.50.
- The charge is taken from your wallet once, when the job completes. It is taken whether or not you read the result.
- A degraded job is free. So is a job that fails for any reason.
- The rate is fixed on each job when it is accepted, and
coston the job says what it was charged. - Starting a job needs a wallet balance above zero, and nothing is held while
it runs. With an empty wallet the request is refused with
402 insufficient_balance.
kind: "transcription", the job ID
as reference and the billed seconds as quantity. The billing statement in
the console shows transcription under Charges, with the number of
recordings and minutes of audio.
Degraded jobs
When the language model step can’t write the transcript, the job still completes with the strongest single recognition pass anddegraded: true. The
words are there with their timestamps, but the text has had less clean-up and
reads like the draft, with English often in Devanagari. Speaker IDs are usually
still there, while roles can be missing or less reliable. A degraded job is not
charged. If you need the full transcript, send the recording again; the new job
is charged when it completes in full.
A recording longer than about three minutes is written in parts. If the
language model step fails for some parts but not all, those parts fall back to
the single pass and the rest is written as usual. That job is not marked
degraded, and it is charged.
Limits
Over a limit, the request is refused with
413 or 429 and nothing is
charged. A recording longer than two hours is accepted, then fails with
audio_too_long, free. See limits and errors for
every code.
Privacy and your data
The API does not keep your audio. An upload passes through a temporary file that is deleted when the request ends, and the transcription service deletes the recording once it has decoded it. A recording link is fetched once and is not stored. The transcript stays with the transcription service, so thatGET /v2/transcriptions/{id} can return it. There is no published retention
period for transcripts yet, so copy each finished transcript into your own
storage. If a transcript is no longer available, its job still reads
completed with its cost, but without text and segments. The job record
itself (status, file name, size, length and cost) stays with your workspace and
appears in Logs. There is no endpoint to delete a transcript; if you need
one removed, write to help@miraiminds.co.
Recordings and transcripts of calls are personal data under India’s Digital
Personal Data Protection Act, and under laws such as the GDPR when they cover
people elsewhere. Tell the people on your calls that they are recorded and
transcribed, and get consent where the law asks for it. Keep your API key on
your server: send recordings from your backend, never from a browser or a
mobile app.
Troubleshooting
Related
Transcriptions API
Every field, status, response and error code.
Build a transcript player
Upload, draft, finished transcript, playback, edits and export in your own
web app.
Wallet
Balance, transactions and top-ups.
Call transcripts
Transcripts of calls your voice agents made.