Speech Revolutions — Python SDK
Official Python client for the Speech Revolutions speech-to-text API.
Install
pip install speechrevolutions
For console progress bars, install the optional tqdm extra:
pip install "speechrevolutions[progress]"
Quick start
from speechrevolutions import SpeechRevolutions
client = SpeechRevolutions() # reads SPEECHREVOLUTIONS_API_KEY or STT_API_KEY
result = client.transcribe("meeting.mp3", speaker_labels=True)
print(result.text)
for u in result.utterances:
print(f"Speaker {u.speaker}: {u.text}")
Async
from speechrevolutions import AsyncSpeechRevolutions
async with AsyncSpeechRevolutions() as client:
result = await client.transcribe("meeting.mp3", speaker_labels=True)
print(result.text)
From a URL (Deepgram-style)
result = client.transcribe_url("https://example.com/audio.mp3")
# or
result = client.transcribe("https://example.com/audio.mp3")
Options as kwargs or config object
# kwargs (ElevenLabs / Deepgram style). `diarize` is an alias for `speaker_labels`.
result = client.transcribe("a.mp3", diarize=True, output_type="json")
# config object (AssemblyAI style)
from speechrevolutions import TranscribeOptions
result = client.transcribe("a.mp3", options=TranscribeOptions(speaker_labels=True))
Defaults: output_type="json", word_timestamps, speaker_labels, nltk all
True, tier="standard", custom_vocabulary=None.
Live progress
Unlike AssemblyAI/Deepgram (which give no percentage for pre-recorded audio), you get real-time progress — for both the file upload and the transcription — as a console bar, a callback, or both.
# 1. Console bars (uses tqdm if installed: pip install "speechrevolutions[progress]")
# Shows an "Uploading" byte bar, then a "Transcribing" bar.
result = client.transcribe("meeting.mp3", progress=True)
# 2. Programmatic — read event.percent (0–100) to drive your own UI / API
def on_progress(event): # transcription
print(event.percent, event.step) # e.g. 42.0 "transcribe"
def on_upload(event): # upload (event.step == "upload")
print("upload", event.percent)
result = client.transcribe(
"meeting.mp3",
on_progress=on_progress,
on_upload_progress=on_upload,
)
progress=True and the callbacks compose — the bars render and your callbacks
still fire for every event.
Result shape
Default output_type is json. The SDK parses it into a transcript-first object:
| Field | Like |
|---|---|
result.text |
AssemblyAI / ElevenLabs |
result.transcript |
Deepgram alias |
result.words |
word + start/end/speaker |
result.utterances |
AssemblyAI speaker turns |
result.to_deepgram() |
Deepgram-shaped dict |
result.to_dict() |
normalized JSON |
result.content / result.save() |
raw bytes / file |
dg = result.to_deepgram()
print(dg["results"]["channels"][0]["alternatives"][0]["transcript"])
Webhooks & retrieving results later
submit() uploads and enqueues a job and returns its id without waiting —
ideal for batch/background work. Collect the result later via a webhook
(callback_url, a signed POST — verify X-SR-Signature: sha256=… against the
raw bytes) or by polling:
job_id = client.submit("meeting.mp3") # returns immediately, no waiting
# ...or notify a webhook instead of polling:
client.transcribe("meeting.mp3", callback_url="https://you.example.com/hook")
status = client.get_job_status(job_id) # .status: processing|completed|failed
if status.is_completed:
result = client.get_transcript(job_id) # downloads + parses
page = client.list_jobs(limit=50) # {"jobs": [...], "next_before": ...}
See examples/ for a full submit/poll/webhook walkthrough.
Robustness
SpeechRevolutions(max_retries=3, retry_backoff=0.5, proxies={"https": "..."}).
Transient 429/5xx/network errors are retried (honoring Retry-After). Errors are
typed (RateLimitError, AuthenticationError, …) and carry .status_code and
.request_id for correlating with support.
Auth
export SPEECHREVOLUTIONS_API_KEY=stt_...
# or
export STT_API_KEY=stt_...
Or SpeechRevolutions(api_key="stt_...").
Other languages
Speech Revolutions also publishes SDKs for JavaScript/TypeScript, Go, and C#/.NET — see docs.speechrevolutions.com for a cross-language feature comparison.
License
MIT
Release files for speechrevolutions 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| speechrevolutions-0.2.2.tar.gz | 45.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| speechrevolutions-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.0 kB
Release files / speechrevolutions-0.2.2.tar.gz
| Download URL | speechrevolutions-0.2.2.tar.gz |
|---|---|
| Size | 45.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b57ce5e5918f94377d3f075ae40dc45507b5a0c8e632ea6ca5fe737dbab9dea4
|
|
BLAKE2b-256 checksum How to use checksums |
0ca7dcbb3f0064ebe7b5ebdbb481094f033a40b87c3f19374521b67cb82115d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency logRelease files / speechrevolutions-0.2.2-py3-none-any.whl
| Download URL | speechrevolutions-0.2.2-py3-none-any.whl |
|---|---|
| Size | 34.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9901fe7199b1383d43635650d61aafaa32e4195efd894e2a6becb4bc4f5f5b99
|
|
BLAKE2b-256 checksum How to use checksums |
8c3c95c387ae3ef47539789c86a78a19536d5741c7c7333cdf6163b0a782eb1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency log