Skip to main content

Overview

Transcribe multi-speaker audio at scale using the Gnani Prisma v2.5 Batch STT API. This guide walks through every step — from submitting an audio file to receiving a clean, speaker-separated transcript — using podcast transcription as the working example. Audio-first content — podcasts, interview recordings, panel discussions — carries information that stays locked unless it is transcribed. Speaker-level transcription is what separates a readable document from a wall of undifferentiated text. You know who said what, when they said it, and for how long.

Other Use Cases

The same create-start-poll-download pipeline works for any long-form, speaker-rich audio. Any scenario involving long audio files, two speakers, and a need for speaker-separated text maps directly to this pipeline.
Two-speaker limit: The Gnani Prisma v2.5 Batch STT API supports a maximum of two distinct speakers per file. It is optimised for two-party audio — interviews, conversations, and one-on-one recordings. Panel discussions with three or more speakers are outside the current scope.

Prerequisites

No SDK is required for this pipeline. All calls use the standard HTTP REST endpoints.

Authentication

Store your API key as an environment variable. Never hardcode it in source files or commit it to version control.
.env
loading credentials
Never hardcode API keys. Do not commit credentials to version control. Use environment variables, a secrets manager, or a vault. Rotate your key immediately if it is exposed.

Limits & Supported Formats

See Batch STT Introduction — Limits for the full reference.

Supported Audio Formats

.wav · .mp3 · .mp4 · .flac · .ogg · .opus · .m4a · .aac · .webm · .amr
Files over 10 MB: Compress or re-encode before upload, or split into smaller segments and stitch transcripts in order after download. The Batch API does not accept individual files larger than 10 MB.

Supported Languages

Pass the BCP-47 code in the language_code field of your job config.
ITN not supported on Batch STT. Inverse Text Normalization (spoken numbers, currency, dates) is not available in the Batch Jobs API. Use REST STT if you need ITN on short clips.

Pipeline

Creating a job does not start transcription. You must call /start after upload.
1

Create the job

POST to /stt/v3/batch/jobs with a multipart body: a config JSON field and one or more files. Receive a job_id with status CREATED. Transcription has not started yet.
2

Start the job

POST to /stt/v3/batch/jobs/{job_id}/start. Status moves to STARTING, then QUEUEDIN_PROGRESSCOMPLETED.
3

Poll for completion

GET /stt/v3/batch/jobs/{job_id} every 10 seconds until status reaches a terminal state (COMPLETED, PARTIAL_FAILURE, FAILED, or CANCELLED).
4

Fetch transcript URLs

GET /stt/v3/batch/jobs/{job_id}/files?status=COMPLETED. Each completed file includes a transcript_url (valid for 1 hour).
5

Download and parse

GET each transcript_url to retrieve JSON with full_transcript and segments. Group by speaker_id, build per-speaker text blocks with timestamps, and save output files.

Step 1 — Create Job

create_job()
Multiple files: Add additional ("files", ...) tuples. Up to 100 files per job, each 10 MB or smaller.

Step 2 — Start Job

start_job()

Step 3 — Poll

poll_until_complete()
Minimum poll interval: 10 seconds. Do not poll more frequently than every 10 seconds for the same job_id.

Step 4 — Fetch Transcript URLs

fetch_completed_files()

Step 5 — Download & Parse

download_and_parse()

Full Script

podcast_transcription.py

Sample Output

episode_01_transcript.txt
episode_01_metadata.json