Audio Transcription - Speech to Text, Podcast RSS, SRT
Pricing
from $5.60 / 1,000 results
Audio Transcription - Speech to Text, Podcast RSS, SRT
Audio transcription and speech to text with faster-whisper (tiny, base or small model, language auto-detect). Give mp3, m4a, wav, ogg or mp4 URLs or a public podcast RSS feed: one row per audio minute (text, start, end, language) plus the full TXT, SRT and VTT. Only-new mode for feeds.
Pricing
from $5.60 / 1,000 results
Rating
0.0
(0)
Developer
Martin Petrov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Security
Limited permissionsShare
Audio & Podcast Transcription - Whisper on CPU, one row per minute, TXT/SRT/VTT, podcast RSS
Turn audio files and podcast episodes into text and subtitles. Give direct mp3, m4a, wav, ogg, flac, mp4 or webm URLs, or a public podcast RSS feed. Measured: 10.5 minutes of audio were transcribed in 91 seconds of total run time at 4096 MB (about 8x faster than real time, model base), so 1 hour of audio takes roughly 8 minutes. You pay per transcribed audio minute: one dataset row = one minute.
What you get
- One dataset row per transcribed minute:
sourceUrl,episodeTitle,minute,start,end(seconds),text,language,feedUrl,published. - The full transcript as
.txt,.srtand.vttfiles in the run's key-value store. Public links are in every row (transcriptTxtUrl,transcriptSrtUrl,transcriptVttUrl,transcriptJsonUrl) and in theRUN_SUMMARYrecord. - Subtitle-ready SRT/VTT: cues are timed from word timestamps, max 2 lines of 42 characters (set
subtitleMaxChars, e.g. 32 for vertical Shorts/Reels/TikTok), max 7 seconds per cue, cut at sentence ends and pauses. Upload the.srtstraight to YouTube, Premiere, DaVinci Resolve or CapCut. - A
.jsonfile with every subtitle cue and every word with its start/end time (for karaoke captions, search inside audio, or clip cutting). - Language auto-detection per file (or set
language, for exampleen). - Podcast RSS support: the newest
maxEpisodesepisodes of each feed (enclosure URLs are used). Apple Podcasts show links work too (the public RSS feed is looked up with Apple's official lookup API). - Episode filters for feeds:
episodesSince(a date or "30 days"),titleIncludes/titleExcludes(e.g. skip trailers and reruns). vocabulary: names and brands spoken in the audio, used as a spelling hint.- Only-new mode: with
onlyNewand amonitorId, episodes that were already transcribed are skipped and not charged again. Schedule the actor daily to transcribe every new episode of your feeds. RUN_SUMMARYrecord with counts (files, rows, audio minutes, compute seconds), per-file details andlastError.
What it does not do
- No YouTube, TikTok or Instagram links (they need proxies and bot-detection workarounds; this actor does not use any). Only direct file URLs and public RSS feeds.
- No speaker labels (diarization). Quality depends on the model:
tinyis fastest,base(default) is good for clear English,smallis more accurate and handles other languages better but is slower. - Whisper can mishear names and noisy audio; check important transcripts.
- Files up to 1.5 GB each. Silent minutes produce no row.
Default input (about 1 minute)
The default input transcribes a 2.4 minute public-domain LibriVox recording (archive.org) and returns 3 rows.
Input
| Field | Meaning |
|---|---|
urls | Audio/video file URLs or podcast RSS feed URLs |
maxEpisodes | Newest N episodes per feed (default 1) |
episodesSince | Only episodes published on/after a date (2026-10-01) or within a period (30 days) |
titleIncludes, titleExcludes | Keep / skip episodes by title text (* = anything) |
vocabulary | Names and terms in the audio, e.g. Apify, Kubernetes (spelling hint) |
model | tiny, base (default), small |
language | Language code, empty = auto-detect |
maxMinutesPerFile | Transcribe only the first N minutes (0 = all) |
onlyNew, monitorId | Skip already transcribed episodes |
API example
curl -X POST "https://api.apify.com/v2/acts/martin10291~audio-podcast-transcriber/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://feeds.example.com/my-podcast.xml"], "maxEpisodes": 1, "model": "base", "onlyNew": true, "monitorId": "my-podcast"}'
Example: the new episodes of a show from Apple Podcasts from the last 14 days, no trailers, with names spelled right (checked 2026-11-06: 6 matching episodes):
{"urls": ["https://podcasts.apple.com/us/podcast/the-daily/id1200361736"], "maxEpisodes": 3, "episodesSince": "14 days","titleExcludes": ["trailer"], "vocabulary": "Apify, Kubernetes", "onlyNew": true, "monitorId": "daily-interviews"}
MCP (AI agents)
Add this actor as a tool: https://mcp.apify.com?tools=martin10291/audio-podcast-transcriber
Pricing and measured cost
Price: $8.00 per 1,000 results = $0.008 per transcribed audio minute (one row per minute). Measured on Apify on 2026-11-04 (model base, int8, 4096 MB): 10.47 audio minutes took 91 s of run time and 0.101 compute units (about 0.0097 compute units per audio minute). A 2.4 minute file costs more per minute because of the fixed start-up (loading the model). At 2048 MB the same file took 123 s and 0.068 compute units, but 4096 MB is the default so long recordings do not run out of memory.
Honest notes
Uses an honest User-Agent (RadarTranscriber/1.0 (+apify.com/martin10291)), no proxies. Only transcribe audio you have the right to use. Speech recognition: faster-whisper (CTranslate2) with OpenAI Whisper weights, running on CPU inside the actor, no external AI API.
Use it as an integration (chain it after another actor)
This actor can run automatically after any actor whose results contain an audio file or podcast RSS feed.
- Open the source actor in Apify Console and go to the Integrations tab.
- Click Add integration -> Actor, pick this actor and set Dataset to
{{resource.defaultDatasetId}}(leaveurlsempty). Set your other options and save. - When the source run finishes, this actor reads its dataset and processes every row. The field is detected automatically; set Dataset field if your column has another name.
You can also start it by hand with datasetId (pick a dataset or paste its ID) to process an existing dataset.
Good sources to chain from:
- martin10291/apple-podcasts-scraper (feedUrl)
- any actor with audioUrl / enclosureUrl / RSS feedUrl