Whisper Speech to Text: MP3/MP4 Transcripts, SRT, VTT · Apify
Audio & Video Transcriber (Whisper) - MP3/MP4 to Text, SRT, VTT avatar

Audio & Video Transcriber (Whisper) - MP3/MP4 to Text, SRT, VTT

Pricing

from $4.00 / 1,000 audio minute (base model)s

Go to Apify Store
Audio & Video Transcriber (Whisper) - MP3/MP4 to Text, SRT, VTT

Audio & Video Transcriber (Whisper) - MP3/MP4 to Text, SRT, VTT

Whisper speech-to-text transcriber for audio, video and podcast RSS feeds: MP3, M4A, WAV, MP4 to text, SRT and VTT, with speaker labels, timestamps and 99 languages. $0.005 per audio minute; failed links and silent files are free. No API key.

Pricing

from $4.00 / 1,000 audio minute (base model)s

Rating

0.0

(0)

Developer

TinyRex

TinyRex

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Features

Limited permissions

Share

Whisper Speech to Text: transcribe MP3, MP4 and podcasts to text, SRT and VTT

Whisper speech-to-text: turn a list of audio or video links into text and subtitles. The Actor runs OpenAI's open-source Whisper model (faster-whisper) inside its own container, so there is no API key, no OpenAI account and no outside speech service. You get one row per file with the full transcript, detected language, timestamped segments and ready-made .srt and .vtt subtitle files. $0.005 per audio minute with the base model, $0.01 with the more accurate small model. Dead links, web pages, files without audio and silent files are free.

What you get from the Audio & Video Transcriber

  • Speech to text for any common format. MP3, M4A, WAV, OGG, OPUS, FLAC, AAC, MP4, MOV, MKV, WEBM and anything else ffmpeg can read. Video files are fine: only the audio track is used.
  • 99 languages, auto-detected. Or set the language yourself for short or noisy clips. Choose Translate to get an English transcript of non-English speech (Whisper's built-in translation, same price).
  • Timestamps and subtitles. segments with start and end seconds for every sentence, plus links to .srt and .vtt files you can upload to YouTube, Vimeo, video editors or players.
  • Speaker labels (who spoke when). Turn on Speaker labels and every segment gets Speaker 1, Speaker 2, ... You also get speakerText (the transcript split into speaker turns), talk time per speaker, and speaker names in the SRT and VTT files. Great for interviews, podcasts, meetings and calls. Runs locally (speaker diarization, no API key) for +$0.004 per audio minute.
  • Podcast RSS feeds and follow mode. Paste a podcast's RSS feed and get the newest episodes transcribed, with podcast title, episode title, publish date and GUID in every row. Turn on Only new episodes and schedule the Actor: it remembers what it already did and you pay only for new episodes.
  • Bulk and pipeline friendly. Paste hundreds of links or read them from another Actor's dataset. One clean row per file, including a clear error for every file that failed (free).

Sample output (JSON)

Real row from a run on a 77-second spoken Wikipedia recording (segments shortened):

{
"url": "https://upload.wikimedia.org/wikipedia/commons/3/3c/Pope_Simplicius_Spoken_Version.ogg",
"status": "ok",
"language": "en",
"languageProbability": 0.999,
"durationSeconds": 76.7,
"billedMinutes": 2,
"words": 167,
"text": "Pope Simpliceus, from Wikipedia, the free encyclopedia. Pope Simpliceus died March 10, 483, was the head of the Catholic Church from 468 to his death in 483. ...",
"segments": [
{ "start": 0.24, "end": 5.24, "text": "Pope Simpliceus, from Wikipedia, the free encyclopedia." },
{ "start": 5.24, "end": 9.24, "text": "Pope Simpliceus died March 10, 483," }
],
"srtUrl": "https://api.apify.com/v2/key-value-stores/.../records/srt-0143153b17b9df8e",
"vttUrl": "https://api.apify.com/v2/key-value-stores/.../records/vtt-0143153b17b9df8e",
"model": "base",
"task": "transcribe",
"format": "ogg",
"audioCodec": "vorbis",
"hasVideo": false,
"truncated": false,
"transcribeSeconds": 4.5
}

With Speaker labels on, each segment also has "speaker": "Speaker 1", and the row gets fields like these (from a test run on two spoken Wikipedia recordings by different narrators, joined into one file):

{
"speakersCount": 2,
"speakers": [
{ "speaker": "Speaker 1", "seconds": 93, "segments": 16 },
{ "speaker": "Speaker 2", "seconds": 41.7, "segments": 7 }
],
"speakerText": "Speaker 1: Pope Simpliceus from Wikipedia, the free encyclopedia. ...\n\nSpeaker 2: Nabiya, from Wikipedia, the free encyclopedia. ...",
"speakerBilledMinutes": 3
}

A failed link looks like "status": "failed", "error": "HTTP 404", "billedMinutes": 0. Export as CSV, Excel, JSON or XML, or send results to Google Sheets, Make, Zapier, n8n, webhooks or the Apify API. A SUMMARY record in the key-value store has run totals.

How to transcribe audio or video files

  1. Paste audio or video file URLs, one per line. They must be direct links that download the file (a podcast episode's MP3 link, a file in cloud storage, a CDN link).
  2. Or paste podcast RSS feeds: the newest episodes of each feed are transcribed (3 by default).
  3. Or pick a dataset from another Actor run: every link ending in .mp3/.m4a/.wav/.mp4/... is collected, or set URL field to the column that holds your links.
  4. Pick the Whisper model and, if you know it, the spoken language. Run.

Example input

{
"mediaUrls": [
"https://upload.wikimedia.org/wikipedia/commons/3/3c/Pope_Simplicius_Spoken_Version.ogg",
"https://upload.wikimedia.org/wikipedia/commons/4/48/En-Nabia-article.oga"
],
"model": "base",
"language": "auto",
"task": "transcribe",
"includeSubtitles": true
}
SettingDefaultNotes
mediaUrlsnoneDirect links to audio or video files; duplicates removed
podcastFeedsnonePodcast RSS/Atom feed URLs; newest episodes are transcribed
maxEpisodesPerFeed3Newest N episodes per feed
onlyNewEpisodesfalseFollow mode: skip episodes transcribed in earlier runs (free)
datasetId / urlFieldnoneRead links from another run's dataset
modelbasebase ($0.005/min, fast) or small ($0.01/min, better on accents, noise and non-English)
languageautoAuto-detect or one of 29 common languages
tasktranscribetranslate = English transcript of any language
vadFiltertrueSkips long silences and music-only parts, which reduces made-up text
speakerLabelsfalseSpeaker labels on every segment, speakerText, per-speaker talk time (+$0.004/min)
numSpeakers0Known number of speakers (e.g. 2 for an interview); 0 = detect automatically
includeSegmentstrueTimestamped segments in each row
includeSubtitlestrue.srt and .vtt files plus srtUrl / vttUrl
maxMinutesPerFile120Only the first N minutes are transcribed and billed (up to 600)
maxFileSizeMb500Bigger files are skipped (free)
maxFiles100Unique URLs per run (up to 10,000)

Speed: at the default 4 GB memory (1 CPU core) the base model transcribes about 10 to 12 minutes of audio per minute, the small model about 4. More memory gives more CPU cores and faster runs; the price per audio minute stays the same.

Pricing

Pay per event, with Bronze/Silver/Gold discounts:

EventPriceWhen
Audio minute (base model)$0.005Per minute of audio transcribed, rounded up per file
Audio minute (small model)$0.01Same, with the more accurate small model
Speaker labels minute$0.004Only with Speaker labels on, per transcribed audio minute; not charged if labelling fails
Free$0Dead links, HTTP errors, web pages, files without an audio track, silent files, files over your limits, files skipped by the spending limit or run timeout

Example: a 45-minute podcast episode costs $0.225 with base, or $0.405 with speaker labels. 100 short 30-second clips cost $0.50. A tiny Actor-start fee applies per run. Set a max charge per run and the Actor transcribes only as many minutes as fit, then stops cleanly.

FAQ

Can I transcribe YouTube, TikTok or Instagram videos? No. Links to platform pages are rejected (free) because downloading from those sites needs their own players and is against their terms. Use files you own or have the rights to: your own recordings, podcast MP3s from an RSS feed, files in cloud storage.

How accurate is it? It is the same open-source Whisper model many paid tools use. Clear speech in English and other major languages comes out very well with base; for strong accents, background noise, phone calls or less common languages pick small. Names and rare words can be misspelled, as in any speech recognition.

Can I transcribe a whole podcast and keep up with new episodes? Yes. Put the podcast's public RSS feed in Podcast RSS feeds, set Newest episodes per feed, turn on Only new episodes and add a daily or weekly schedule in Apify. Each run transcribes only episodes it has not done before; already-done episodes are skipped for free. Spotify and Apple Podcasts page links are not feeds; use the RSS link the podcast host publishes.

Does it add speaker labels (diarization)? Yes. Turn on Speaker labels. Speakers are numbered in the order they first speak (Speaker 1, Speaker 2, ...); the Actor cannot know their real names. If you know how many people talk, set Number of speakers for the best split. Overlapping speech gets the dominant speaker. Labelling roughly doubles to triples the run time. If it fails for a file you still get the transcript and the speaker minutes are not charged.

How do I make subtitles for a video? Keep Create SRT and VTT subtitle files on. Each row has srtUrl and vttUrl links to download the subtitle files.

Is my audio sent to OpenAI or another API? No. Download, decoding (ffmpeg) and transcription (faster-whisper) all happen inside the Actor's container, and results stay in your own Apify storage.

What about very long files? Files up to 10 hours work. By default only the first 120 minutes are transcribed (maxMinutesPerFile); rows show truncated: true when a file was cut. Long batches need a long enough run timeout; files that would not finish in time are skipped for free.

📘 Step-by-step guide with Python, JavaScript, curl and MCP examples: How to transcribe hundreds of audio and video files to text and subtitles with Whisper

Missing a field?

If a field you need is missing or wrong, please open an issue on the Issues tab. I read every issue and usually reply the same day.