Audio & Video Transcription – Speech to Text, SRT avatar

Audio & Video Transcription – Speech to Text, SRT

Pricing

from $8.00 / 1,000 audio minutes

Go to Apify Store
Audio & Video Transcription – Speech to Text, SRT

Audio & Video Transcription – Speech to Text, SRT

Transcribe audio and video to text and SRT subtitles in 99 languages: English, Spanish, Portuguese, Chinese, Hindi, Arabic, French, German, Dutch. Translated subtitles, AI proofreading. No API key.

Pricing

from $8.00 / 1,000 audio minutes

Rating

0.0

(0)

Developer

Tom J

Tom J

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Security

Limited permissions

Share

Speech to text for your own audio and video files: transcribe MP3, M4A, WAV, MP4, MOV and more to text, SRT and VTT subtitles and Markdown with Whisper large-v3-turbo, in 99 languages including Dutch, French, German, English and Spanish. Add translated subtitles in 36 languages, a word list for names and terms, and optional AI proofreading. No API key. $8 per 1,000 audio minutes; a 60-minute podcast costs $0.48.

What you can do with it

  • Transcribe podcasts, interviews and meetings to clean text and Markdown.
  • Create subtitles (SRT, VTT) for your videos, and translate them into up to 5 languages per run.
  • Transcribe Dutch, French and German audio with a word list for names, places and jargon.
  • Process folders of files from Google Drive, Dropbox, OneDrive or SharePoint links, or from another Actor's dataset.
  • Feed automations: every row links to ready .txt, .srt, .vtt and .md files for n8n, Make or Zapier.

How to transcribe audio and video in 3 steps

  1. Add files: direct links, share links (set to "Anyone with the link"), uploads, or a dataset from another Actor.
  2. Choose the language (or "Detect automatically"), output formats and, if you want, subtitle languages, a word list and proofreading.
  3. Click Start. You get one row per file, plus .txt, .srt, .vtt and .md files in the run's key-value store.
SourceHow
Direct linkurls (mp3, m4a, wav, flac, ogg, opus, mp4, mov, webm, mkv)
Google Drive, Dropbox, OneDrive, SharePointShare link in urls, set to "Anyone with the link"; converted automatically
Your computeruploadedFiles
APIbase64Files: [{"name": "file.mp3", "data": "<base64>"}], max 25 MB each
Another ActordatasetId + urlField (default url, dotted paths like media.audioUrl)

Platform links (YouTube, TikTok, Instagram…) are not supported and cost nothing: this Actor transcribes your own files.

Input

FieldMeaningDefault
urlsFile or share links (max 500)—
languageSpoken language, or autoauto
outputFormatstext, segments, srt, vtt, markdownall
translateToUp to 5 subtitle languagesnone
vocabularyNames and terms, comma or newline separated (first 600 characters used)—
proofreadAI proofreading of the transcriptoff
maxMinutesPerFileLonger files are skipped120 (max 300)
maxTotalMinutesUpper limit per run240 (max 600)
maxFileSizeMbLarger files are not downloaded512 (max 2,048)
{
"urls": ["https://drive.google.com/file/d/…/view"],
"language": "nl",
"outputFormats": ["text", "srt", "vtt", "markdown"],
"translateTo": ["en"],
"vocabulary": "Almere Binnen, Tenach",
"proofread": true
}

Output

{
"fileName": "Armstrong_Small_Step.ogg",
"status": "ok",
"language": "en",
"languageProbability": 0.98,
"durationSeconds": 24.11,
"chargedMinutes": 1,
"wordCount": 11,
"text": "That's one small step for man, one giant leap for mankind.",
"segments": [{ "start": 0.0, "end": 6.4, "text": "That's one small step for man," }],
"srt": "1\n00:00:00,000 --> 00:00:06,400\n…",
"vtt": "WEBVTT\n\n…",
"markdown": "# Armstrong_Small_Step.ogg\n…",
"files": { "txt": "…/001-Armstrong_Small_Step.txt", "srt": "…", "vtt": "…", "md": "…" }
}

Format illustration. With translateTo, a translations object adds text, SRT and VTT per language; with proofread, the original stays in rawText. Long files are cut into pieces with a short overlap and rejoined, so timestamps stay continuous.

Status values: ok (only status charged), skipped_too_long, unsupported_source, download_failed, too_large, no_audio, quota_exhausted, not_processed_limit, failed.

Dutch, French and German transcription

Whisper large-v3-turbo handles 99 languages. For Dutch, French and German recordings with names, places or technical terms, add them to vocabulary: Whisper receives them as a spelling hint, and proofreading uses them too. Setting language helps for short files and strong accents.

Translated subtitles in 36 languages

English, Spanish (Spain, Latin America), Portuguese (Brazil, Portugal), French, German, Dutch, Italian, Chinese (Simplified, Traditional), Japanese, Korean, Hindi, Arabic, Indonesian, Russian, Ukrainian, Polish, Turkish, Vietnamese, Thai, Malay, Filipino, Bengali, Urdu, Persian, Hebrew, Greek, Romanian, Czech, Hungarian, Swedish, Danish, Norwegian, Finnish. Same timings as the original.

AI proofreading and word list

Proofreading corrects spelling, punctuation, capitalisation and misheard words, line by line, with the same timings. It does not rephrase or summarise. The word list is free.

How much does transcription cost?

EventPrice
Audio minute (every started minute)$0.008
Translated subtitles (per minute, per language)$0.002
AI proofreading (per minute)$0.002
Word listfree

Examples: 60-minute podcast = $0.48. With English and Spanish subtitles = $0.48 + 2 × $0.12 = $0.72. Proofread = $0.60. A 61-second file counts as 2 minutes.

What you are not charged for

Platform links, broken or private links, files that are too large or too long, files without audio or speech, files stopped by a limit (maximum cost per run, maximum minutes, daily capacity), errors of the speech service, a subtitle language that fails or equals the spoken language, and proofreading that fails (you still get the transcript). Before sending audio, the Actor checks that the minutes fit your maximum cost per run.

Integrate with any app

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("olliolli/audio-video-transcription").call(
run_input={"urls": ["https://example.com/episode.mp3"], "language": "auto"}
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["status"], row["files"]["srt"])

In n8n, Make or Zapier, pass the links in each row's files object (.txt, .srt, .vtt, .md) to your next step instead of copying long text fields. Through Apify's MCP server, AI assistants can call this Actor as a transcription tool.

Privacy

Audio is sent to Cloudflare Workers AI for speech recognition; for translated subtitles and proofreading the transcript text is sent there too. Nothing is kept after the run except in your own Apify run storage, which follows your plan's retention. File contents are never written to the log.

Good to know

  • Free Apify plan: at most 5 minutes of audio per run, 15 minutes per day and 1 subtitle language per run. Paid plans don't have these limits.
  • Background noise, overlapping voices, dialects and music lower the accuracy.
  • Speaker labels (who said what) are not available in this version.

FAQ

Which file types are supported? mp3, m4a, wav, flac, ogg, opus, mp4, mov, webm and mkv.

Can I transcribe YouTube or TikTok links? No. This Actor transcribes your own files and links; platform links are refused at no cost.

How accurate is Dutch transcription? It depends on the recording. Clear speech transcribes well; add names and terms to the word list, and use proofreading for misheard words.

Does it add speaker labels? Not in this version.

How much does a 1-hour recording cost? $0.48, plus $0.12 per subtitle language and $0.12 for proofreading.

Where is my audio processed? By Cloudflare Workers AI. Nothing is stored after the run outside your own Apify storage.

Need help?

Open an issue on the Issues tab.