Audio & Video Transcription – Speech to Text, SRT
Pricing
from $8.00 / 1,000 audio minutes
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Security
Limited permissionsShare
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
- Add files: direct links, share links (set to "Anyone with the link"), uploads, or a dataset from another Actor.
- Choose the language (or "Detect automatically"), output formats and, if you want, subtitle languages, a word list and proofreading.
- Click Start. You get one row per file, plus .txt, .srt, .vtt and .md files in the run's key-value store.
Transcribe files from Google Drive, Dropbox or any link
| Source | How |
|---|---|
| Direct link | urls (mp3, m4a, wav, flac, ogg, opus, mp4, mov, webm, mkv) |
| Google Drive, Dropbox, OneDrive, SharePoint | Share link in urls, set to "Anyone with the link"; converted automatically |
| Your computer | uploadedFiles |
| API | base64Files: [{"name": "file.mp3", "data": "<base64>"}], max 25 MB each |
| Another Actor | datasetId + 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
| Field | Meaning | Default |
|---|---|---|
urls | File or share links (max 500) | — |
language | Spoken language, or auto | auto |
outputFormats | text, segments, srt, vtt, markdown | all |
translateTo | Up to 5 subtitle languages | none |
vocabulary | Names and terms, comma or newline separated (first 600 characters used) | — |
proofread | AI proofreading of the transcript | off |
maxMinutesPerFile | Longer files are skipped | 120 (max 300) |
maxTotalMinutes | Upper limit per run | 240 (max 600) |
maxFileSizeMb | Larger files are not downloaded | 512 (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?
| Event | Price |
|---|---|
| Audio minute (every started minute) | $0.008 |
| Translated subtitles (per minute, per language) | $0.002 |
| AI proofreading (per minute) | $0.002 |
| Word list | free |
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 ApifyClientclient = 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.