Speech to Text from Links: MP3, MP4, Google Drive, Podcast RSS avatar

Speech to Text from Links: MP3, MP4, Google Drive, Podcast RSS

Pricing

from $11.60 / 1,000 minute of transcribed audios

Go to Apify Store
Speech to Text from Links: MP3, MP4, Google Drive, Podcast RSS

Speech to Text from Links: MP3, MP4, Google Drive, Podcast RSS

Transcribe audio and video files from public links: MP3, M4A, WAV, MP4, MOV and more, Google Drive and Dropbox share links, podcast RSS feeds and Apple Podcasts. Full text, timestamped segments, SRT and VTT subtitles, 99 languages auto-detected. Pay only per transcribed minute.

Pricing

from $11.60 / 1,000 minute of transcribed audios

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Speech to Text from Links - transcribe MP3, MP4, Google Drive, Dropbox and podcast audio

Paste a link to an audio or video file and get the transcript back: the full text, timestamped segments, ready-made SRT and WebVTT subtitles, and the spoken language detected automatically (99 languages).

Works with the links you already have. Direct file links (MP3, M4A, WAV, OGG, OPUS, FLAC, AAC, MP4, MOV, WEBM, MKV and more), Google Drive and Dropbox share links, podcast RSS feeds and Apple Podcasts show or episode pages. No upload step, no account to connect.

Pay only for audio that became text. You are charged per minute of transcribed audio. A link that cannot be read, a video with no sound, music with no speech, a file over your length limit - each comes back as its own row with the reason, and none of them is charged.

Two accuracy modes, or your own key.

ModeModelBest forSpeed (one hour of audio)Price
Fast (default)Whisper base, runs inside the ActorClear English speech, quick drafts, large podcast backlogsabout 15 to 25 minuteslowest per minute
AccurateWhisper small, runs inside the ActorNames, numbers, famous quotes, non-English speechabout 45 to 60 minutes"accurate" price per minute
Your own OpenAI or Groq key (optional)OpenAI whisper-1, or Groq whisper-large-v3-turbo / whisper-large-v3The largest models, billed to your own OpenAI or Groq accountdepends on the providerlowest price per minute here

Same 20-second clip (JFK, "We choose to go to the moon"), transcribed in our test runs:

  • Fast: "We choose to go to the moon and disdicate and do the other things, not because they are easy, but because they are hot."
  • Accurate: "We choose to go to the moon in this decade and do the other things. Not because they are easy, but because they are hard."

Built for podcasts on a schedule. Add a feed, turn on Only episodes not transcribed before, and schedule the run: each new episode is transcribed once, as soon as it is published.


What you get

One row per file:

FieldWhat it holds
textThe full transcript as one block of text
segmentsTimestamped pieces: start, end (seconds) and text
srt, vttSubtitle files as text, ready to save as .srt / .vtt
language, languageProbabilityDetected language code (en, es, ja ...) and how sure the detection is (0-1)
durationSeconds, chargedMinutesLength of the audio that was transcribed, and the minutes charged for it
wordCount, characterCount, segmentCountSize of the transcript (wordCount is empty for languages written without spaces, such as Japanese, Chinese and Thai)
title, publishedAt, feedUrlEpisode title, publish date and feed for podcast episodes; the file name for other links
url, mediaUrl, sourceTypeThe link you gave, the file that was read, and where it came from (direct, google-drive, dropbox, podcast-feed, apple-podcasts)
status, noteok for a transcript, otherwise the reason (see below)

The dataset has three views: Transcripts, Subtitles (SRT / VTT) and Files not transcribed.

Example output (one podcast episode, shortened)

A real row from the newest episode of NASA's Houston We Have a Podcast feed (59 minutes 32 seconds, transcribed in about 17 minutes):

{
"url": "https://www.nasa.gov/feeds/podcasts/houston-we-have-a-podcast",
"mediaUrl": "https://traffic.megaphone.fm/NATIONALAERONAUTICSANDSPACEADMINISTRATION6740428946.mp3",
"sourceType": "podcast-feed",
"feedUrl": "https://www.nasa.gov/feeds/podcasts/houston-we-have-a-podcast",
"title": "Reflections After Artemis II with Victor and Jeremy",
"publishedAt": "2026-10-16T13:00:00.000Z",
"status": "ok",
"language": "en",
"languageProbability": 0.998,
"durationSeconds": 3572,
"chargedMinutes": 60,
"text": "Houston, we have a podcast. Welcome to the official podcast of the NASA Johnson Space Center, episode 441, Reflections After Artemis II. I'm Gary Jordan, and I'll be your host today. On this podcast, we bring in the experts, scientists, engineers, and astronau ...",
"wordCount": 11401,
"characterCount": 59548,
"segmentCount": 1005,
"segments": [
{
"start": 0,
"end": 8.44,
"text": "Houston, we have a podcast. Welcome to the official podcast of the NASA Johnson Space Center, episode 441, Reflections After Artemis II."
},
{
"start": 8.44,
"end": 17.32,
"text": "I'm Gary Jordan, and I'll be your host today. On this podcast, we bring in the experts, scientists, engineers, and astronauts all to let you know what's going on in the world of human spaceflight and more."
}
],
"srt": "1\n00:00:00,000 --> 00:00:08,440\nHouston, we have a podcast. Welcome to the official podcast of the NASA Johnson Space Ce ...",
"vtt": "WEBVTT\n\n00:00:00.000 --> 00:00:08.440\nHouston, we have a podcast. Welcome to the official podcast of the NASA Johnson Sp ...",
"model": "whisper-base",
"note": null
}

Input

FieldWhat it does
Audio or video file links (urls)One or more links: direct file links, Google Drive / Dropbox share links, a podcast RSS feed or an Apple Podcasts page
Podcast feeds (podcastFeeds)Optional. RSS feeds or Apple Podcasts show links; the newest episodes are transcribed
Episodes per feed (maxEpisodesPerFeed)How many of the newest episodes to take from each feed (default 3)
Only episodes not transcribed before (onlyNewEpisodes)For scheduled runs: skip episodes already transcribed from the same feed
Accuracy (accuracy)Fast (Whisper base, default) or Accurate (Whisper small: fewer wrong words, about 3 times slower, charged at the accurate price)
Your OpenAI or Groq API key (apiKey)Optional and stored encrypted. With a key, recognition runs on your OpenAI or Groq account and minutes are charged at the lower own-key price. The key is sent only to that provider and never written to the results or the log
Spoken language (language)Detect automatically (default), or pick the language for short or noisy recordings
Max minutes per file (maxMinutesPerFile)Longer files are skipped and not charged (default 120, up to 240)
Max total minutes per run (maxTotalMinutes)A cap on the minutes one run can charge (default 300). The default fits inside the default 6-hour run timeout in both modes; see Which limit stops first below

Ready-made inputs

Transcribe a few files:

{ "urls": ["https://example.com/interview.mp3", "https://drive.google.com/file/d/FILE_ID/view?usp=sharing"] }

The three newest episodes of a podcast:

{ "podcastFeeds": ["https://podcasts.apple.com/us/podcast/houston-we-have-a-podcast/id1209883012"], "maxEpisodesPerFeed": 3 }

Every new episode, once (schedule this daily):

{ "podcastFeeds": ["https://feeds.example.com/show.xml"], "maxEpisodesPerFeed": 5, "onlyNewEpisodes": true }

Google Drive and Dropbox

Set the file's sharing to "Anyone with the link" and paste the share link as it is (drive.google.com/file/d/... or dropbox.com/scl/fi/...). The Actor turns it into the file's download address. A file that is not shared comes back as not_public with a note, and is not charged. Folders are not supported - share each file.

When a file is not transcribed

statusMeaningCharged
unsupported_siteA YouTube, TikTok, Instagram, Facebook, X, Vimeo, Spotify, SoundCloud or similar page. These are not downloadedNo
not_mediaThe link opens a web page, a document or an image, not audio or videoNo
not_publicGoogle Drive / Dropbox file that is not shared with "Anyone with the link"No
unreachableThe server could not be reached, or answered 404 / 403 / 5xxNo
no_audioThe video has no sound trackNo
no_speechThere is sound but no speech (music, silence)No
too_longLonger than Max minutes per fileNo
run_limit / charge_limitLeft out by Max total minutes per run or by your maximum cost per runNo
time_limitLeft out because the run would hit its timeout before this file is finishedNo
no_new_episodesNothing new in the feed since the last runNo
bad_inputNot a usable link (a folder, a private network address, not http/https)No
failedThe audio could not be decoded or recognisedNo

Good to know

  • Without an API key, speech recognition runs inside the Actor (Whisper base in Fast mode, Whisper small in Accurate mode). Your audio is not sent to any other transcription service.
  • With your own key, the audio is sent in 10-minute WAV pieces to OpenAI or Groq only, using your key; their usage and data rules apply, and they bill you for the recognition.
  • A one-hour recording usually takes about 15 to 25 minutes in Fast mode and about 45 to 60 minutes in Accurate mode. Files are processed one after another. The default run timeout is 6 hours.
  • Which limit stops first. The default run timeout is 6 hours. 300 minutes (the default Max total minutes per run) take at most about 5 hours 15 minutes in Accurate mode and about 2 hours in Fast mode, so with the defaults the minute cap stops first. If you raise Max total minutes per run, the run timeout can come first (about 300 minutes of audio in Accurate mode and about 800 in Fast mode fit in 6 hours). Before each file the Actor checks the time left, and a file that cannot finish in time gets a time_limit row and is not charged. To transcribe more in one run, raise Timeout in the run options as well.
  • If Apify moves a run to another server while it is running, the run continues where it stopped. Files already delivered are not transcribed or charged again.
  • Long recordings are recognised in pieces of about 20 minutes; timestamps run continuously across the whole file.
  • Podcast hosts that count downloads will count one download per transcribed episode.

Frequently asked

How do I transcribe an MP3 or MP4 from a link? Paste the link into Audio or video file links and run. You get one row with the full text, timestamped segments and SRT / VTT subtitles.

How do I transcribe a file stored in Google Drive? Share the file with "Anyone with the link", copy the share link, and paste it. The Actor downloads the file itself, not the preview page.

How do I get a transcript of every new podcast episode? Add the RSS feed or Apple Podcasts link under Podcast feeds, turn on Only episodes not transcribed before, and schedule the Actor. Each episode is transcribed and charged once.

How do I make subtitles for a video? Run the video link and copy the srt or vtt field into a .srt / .vtt file. The Subtitles (SRT / VTT) view shows them side by side.

Which languages does it understand? 99 languages, detected automatically. Accuracy is highest for English and other widely spoken languages; for other languages choose Accurate or use your own key. See Limitations.

Fast or Accurate - which should I pick? Fast for clear English and large backlogs. Accurate when names, numbers or quotes must be right, or the speech is not English. In our tests Accurate fixed a famous 20-second quote that Fast got wrong (see the table at the top).

Can I use my own OpenAI or Groq account? Yes. Paste your API key in Your OpenAI or Groq API key. Recognition then runs on your account and this Actor charges its lower own-key price per minute. Leave the field empty to use the built-in models.

Am I charged for files that fail? No. Only files that produce a transcript are charged, by the minute of audio, rounded up per file.

Limitations

  • Fast mode makes real mistakes even on famous English audio: in our test it heard JFK's "in this decade ... because they are hard" as "and disdicate ... because they are hot", and wrote crew names Wiseman / Koch / Hansen as Weizmann / Cook / Hanson. Accurate mode got the JFK clip right, but still wrote "Koch" as "Cook".
  • Non-English speech is harder. On a Japanese reading of a 1920 short story (Akutagawa, "Toshishun"), Fast turned the title name and old place names into nonsense (杜子春 as トッシュン, 唐の都洛陽 as 東の宮校楽洋, 日暮れ as ヒムレ). Accurate fixed common words (日暮れ, 憐れな身分) but still missed the rare names (杜子春 as 年春, 洛陽 as 楽園). For names and rare words in non-English audio, use your own OpenAI or Groq key (larger models).
  • Speakers are not separated or labelled (no "Speaker 1 / Speaker 2").
  • A word that falls exactly on the boundary between two 20-minute pieces can be cut or repeated.
  • When a server does not report the file length, the length is known only after the audio is read; a file over Max minutes per file is then skipped at that point, still without charge.
  • Video and social platforms (YouTube, TikTok, Instagram and similar) are not supported. Use a direct link to a file you are allowed to download.
  • Files must be publicly downloadable without signing in. Files up to 240 minutes.

Pricing

Pay per event: you are charged for each minute of transcribed audio, rounded up per file (a 2 minute 5 second file is 3 minutes). There are three per-minute prices, one per mode: Fast, Accurate, and own key (the lowest; OpenAI or Groq bill you separately for the recognition). One run uses one mode. Rows that explain a problem - unreadable links, no audio, no speech, too long, skipped by your limits - are never charged.

Thanks for using this Actor

We build these tools for people who run them every day, and we improve them from what users tell us.

  • Need another source, field or format? Tell us in the Issues tab.
  • Found a wrong transcript or a bug? Post the run ID in the Issues tab. Wrong data is the thing we fix first.