Blog · 5 min read
How to transcribe Russian speech to text via API: a step-by-step guide
Speech-to-text (STT) turns audio into structured text: words, timestamps, and speakers. This guide walks you from signup to a working Python script.
Why transcription matters
Manual transcription is slow and expensive: an hour of audio takes 3–5 hours of human work. An STT API finishes in minutes and returns timestamps — each word mapped to the second it was spoken.
Typical use cases: call-center call logging, video subtitles, interview and podcast transcripts, pronunciation checking in EdTech. For Russian you need accuracy and support for industry-specific terms.
How to choose an API
What to look at: accuracy (WER — the share of misrecognized words), price per minute, Russian support, timestamps and diarization, and response latency.
VoiceKit covers all of these: Russian out of the box, word-level timestamps, diarization, and streaming transcription over WebSocket. Details and prices — see pricing.
Getting an API key
Sign up in the dashboard — the key is created automatically. The Free plan includes 30 transcription minutes per month. Send the key in the X-Api-Key header on every request.
Python code
Install the SDK with one command — or send plain HTTP requests. The fastest option is the synchronous method:
pip install ttsapi-client
from ttsapi import RussianTtsClient
client = RussianTtsClient(api_key="rtt_…")
transcript = client.transcribe_sync("meeting.mp3")
print(transcript["transcript"])
for segment in transcript["segments"]:
print(segment["start"], segment["end"], segment["text"])
For long files use the asynchronous mode: upload the file, get a job_id, and poll until the status becomes completed or failed:
job = client.transcribe("meeting.mp3", language="ru", diarization=True, keyterms=["диагноз"])
result = client.get_transcription_job(job["job_id"])
while result["status"] not in ("completed", "failed"):
result = client.get_transcription_job(job["job_id"])
print(result["transcript"])
Error handling and output formats
The response contains transcript, segments with word-level timestamps words (word, start, end, confidence), and — with diarization on — speaker per segment.
Errors: 401 — bad key, 413 — file too large, 429 — plan limit exceeded. For subtitles call GET /v1/transcribe/{job_id}/subtitles?format=srt to get a ready SRT file. Full reference — see the docs.
Start for free
The Free plan includes 30 transcription minutes per month — no card required. Create a key and transcribe your first file in 5 minutes.