VoiceKit logo VoiceKit
Pricing Demo Documentation Sign in Sign up RU / EN

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.

Get free transcription minutes

← All articles

VoiceKit logo VoiceKit

TTS · Transcription · Analytics

Product

Demo Pricing API documentation

Account

Sign in Sign up Dashboard

Legal

Privacy policy Terms of service
© 2026 — Speech processing platform support@ttsapi.ru VoiceKit