Audio Transcription & Speech to Text: MP3, Podcasts, SRT
Pricing
from $2.45 / 1,000 audio minute (english, standard)s
Audio Transcription & Speech to Text: MP3, Podcasts, SRT
Transcribe audio, MP3 and podcast RSS episodes to text with timestamps and SRT or VTT subtitles. $0.0025 per audio minute in English, $0.003 high accuracy, $0.01 for about 100 other languages. Failed or silent files free. An Otter and Rev alternative for bulk audio. MCP-ready, no login.
Pricing
from $2.45 / 1,000 audio minute (english, standard)s
Rating
0.0
(0)
Developer
Don Mangu
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
4
Monthly active users
8 days ago
Last modified
Categories
Share
Audio Transcription & Speech to Text: MP3, Podcasts and Video to Text
Audio Transcription & Speech to Text for MP3, M4A, WAV, FLAC, OGG, MP4 and other audio and video files, and for podcast RSS feeds. Paste direct file links or a feed link and get the transcript back as text, with timestamped segments and SRT and VTT subtitle files. Use it as a speech to text API or from the Apify form, with no API key and no login.
English costs $0.0025 per audio minute ($0.15 per hour of audio) at standard accuracy, or $0.003 per minute at high accuracy. About 100 other languages cost $0.01 per minute. From 5 October 2026, each file is billed for at least 3 minutes. Files that fail to download, are not audio or contain no speech return a row with the reason and are not charged. For podcast transcription, paste the feed link and get one transcript per episode.
The speech recognition runs inside the Actor with open-weights models. Your audio is not sent to an outside transcription service.
How to transcribe audio to text
- Open the Input tab and paste direct links to your files in Audio and video file links, one per line. A link to a web page that plays audio will not work; use the file link.
- Pick the Language, or choose Detect automatically. For English, choose Standard or High accuracy.
- Click Start. The prefilled example transcribes a short clip in under a minute (billed as 3 minutes, the minimum per file).
- Download the transcript as JSON, CSV or Excel, or read it through the Apify API.
MP3 to text and podcast transcription
For a podcast, paste its RSS feed link in Podcast RSS feeds and set Episodes per feed. The newest episodes are transcribed first, and each row carries the feed title, episode title and publish date.
Each file gives one row with the full text, wordCount, language, durationSeconds, segments (start, end and text for each phrase), and links to the SRT and VTT files.
What the audio to text transcription returns
- Transcript:
text, the full transcript, andwordCount. - Timestamped segments:
segments, a list ofstartandend(in seconds) andtext, one per spoken phrase. Turn off Include timestamped segments to leave them out. - Subtitles:
srtUrlandvttUrllink to SubRip (.srt) and WebVTT (.vtt) files in the run's key-value store, ready for video players and editors. - File details:
language,durationSeconds,transcribedSeconds,speechSeconds,audioCodec,fileSizeBytesand the finalfileUrlafter redirects. - Podcast details for feed episodes:
feedTitle,episodeTitleandepisodePublishedAt, as the feed publishes them. - Status for every file:
statusisok, or says why there is no transcript (for examplenot_found,not_media,no_speech,file_too_large), with a plain-languageerror.
An alternative to Otter and Rev for bulk audio
This Actor is not Otter or Rev and is not affiliated with either. It transcribes many files or whole podcast feeds in one run, with the speech recognition running inside the Actor on open-weights models, so your audio is not sent to an outside transcription service. English costs $0.0025 per audio minute ($0.15 per hour of audio) at standard accuracy.
How much does audio transcription cost?
You pay per minute of audio transcribed, counted for each file and rounded up to the next whole minute. From 5 October 2026, each file is billed for at least 3 minutes, so a file shorter than 3 minutes costs the same as a 3-minute file:
| Setting | Event | Price per audio minute |
|---|---|---|
| English, Standard accuracy | audio-minute | $0.0025 |
| English, High accuracy | audio-minute-high-accuracy | $0.003 |
| Any other language, or Detect automatically | audio-minute-multilingual | $0.01 |
Files that could not be downloaded or decoded, links that are not audio or video, and files with no speech return a row with the reason and are not charged.
Worked example: a podcast feed with 4 English episodes of 32, 45, 51 and 38 minutes, plus one broken link, costs (32 + 45 + 51 + 38) x $0.0025 = 166 x $0.0025 = $0.42 at Standard accuracy, or 166 x $0.003 = $0.50 at High accuracy. The broken link costs nothing. The same 166 minutes in Spanish cost 166 x $0.01 = $1.66.
Short file example: a single 1-minute English file is billed as 3 minutes, so 3 x $0.0025 = $0.0075 at Standard accuracy (3 x $0.003 = $0.009 at High accuracy). The prefilled 11-second example clip is billed the same way, as 3 minutes. Files of 3 minutes or longer are billed for their started minutes, as before.
Set Maximum minutes per file to transcribe only the start of long files, and set a spending limit on the run: the Actor transcribes only the minutes that fit, and the row says the file was cut (truncated is true). A file is only started when the limit still covers its 3-minute minimum.
Input example
{"audioUrls": ["https://raw.githubusercontent.com/openai/whisper/main/tests/jfk.flac"],"rssFeedUrls": [],"episodesPerFeed": 1,"maxFiles": 1,"language": "en","englishAccuracy": "high","subtitleFormats": ["srt", "vtt"],"includeSegments": true,"maxMinutesPerFile": 240,"maxFileSizeMb": 1024}
| Field | Meaning |
|---|---|
audioUrls | Direct links to audio or video files. |
rssFeedUrls | Podcast RSS feed links. |
episodesPerFeed | Newest episodes to transcribe from each feed (1 to 100). |
maxFiles | Most files to transcribe in the run (1 to 1,000). File links come first, then feed episodes. |
language | en for English, another language code, or auto to detect it. |
englishAccuracy | standard (lowest price) or high (English only). |
subtitleFormats | srt, vtt, both, or none. |
includeSegments | Add timestamped segments to each row. |
maxMinutesPerFile | Transcribe at most this many minutes of each file (1 to 720). |
maxFileSizeMb | Largest file to download, in MB (1 to 4,096). |
Output example
A row from a test run with the example input, High accuracy (the 11-second clip is the "Ask not" passage of the 1961 US presidential inaugural address). billedMinutes is 3 because each file is billed for at least 3 minutes:
{"inputUrl": "https://raw.githubusercontent.com/openai/whisper/main/tests/jfk.flac","fileUrl": "https://raw.githubusercontent.com/openai/whisper/main/tests/jfk.flac","source": "url","status": "ok","language": "en","durationSeconds": 11.0,"transcribedSeconds": 11.0,"speechSeconds": 8.02,"billedMinutes": 3,"truncated": false,"text": "And so my fellow Americans. Ask not. What your country can do for you? Ask what you can do for your country.","wordCount": 22,"segments": [{ "start": 0.29, "end": 2.29, "text": "And so my fellow Americans." },{ "start": 3.27, "end": 4.5, "text": "Ask not." },{ "start": 5.38, "end": 7.8, "text": "What your country can do for you?" },{ "start": 8.17, "end": 10.55, "text": "Ask what you can do for your country." }],"srtUrl": "https://api.apify.com/v2/key-value-stores/<store id>/records/transcript-0001.srt","vttUrl": "https://api.apify.com/v2/key-value-stores/<store id>/records/transcript-0001.vtt","model": "English, high accuracy","audioCodec": "flac","charged": true,"error": null}
The SRT file for the same clip:
100:00:00,290 --> 00:00:02,290And so my fellow Americans.200:00:03,270 --> 00:00:04,500Ask not.
Use cases
- Podcasters: show notes, blog posts and searchable archives from your episodes; subtitles for video versions.
- Content and marketing teams: quotes and clips from webinars, interviews and recorded talks you own.
- Researchers: text from interview recordings and public-domain speech collections.
- Developers: a transcription step in a pipeline, called through the Apify API or scheduled to pick up new podcast episodes.
Bulk lists
Use a long list of audio and video file links from an Apify Dataset or from a file. Pick the Dataset under Dataset with the list and write the name of its field under Field in the dataset. Leave the field name empty to use the first text field. Or paste the web address of a .txt, .csv or .json file under List file URL. A .csv file uses its first column. A header row is skipped. The file can be up to 10 MB. Entries from the Dataset and the file are added to the ones typed under Audio and video file links, and duplicates are removed. The price per audio minute does not change. Podcast RSS feeds are still typed under Podcast RSS feeds.
Related Actors
- Podcast Scraper API: Use it to list every episode of a podcast with audio file URLs from its RSS feed.
- RSS Feed Reader API: Use it to read RSS and Atom feeds into one row per item.
- Kokoro Text to Speech: Use it to turn text into spoken MP3 audio with 41 voices.
- Article Extractor: Use it to pull clean article text, dates and metadata from news and blog pages.
FAQ
Is it legal to transcribe audio with this Actor? Transcribe files you own or have the right to use: your own recordings, public-domain audio, and podcast episodes for your own listening, research or accessibility needs. The Actor downloads only the files and feeds you list, reads robots.txt on every host first and skips files it disallows, and never logs in. Republishing someone else's podcast transcript can need the owner's permission; check the podcast's terms.
Does it work with YouTube, Spotify, Apple Podcasts or social media links? No. It needs a direct link to an audio or video file, or a podcast RSS feed. Page links from video and social platforms are not supported. For a podcast, use its RSS feed: the Actor reads the episode file links from it.
Which languages are supported? English has its own models (Standard and High accuracy). Other languages (about 100, including Spanish, French, German, Portuguese, Italian, Dutch, Polish, Russian, Hebrew, Arabic, Hindi, Japanese, Korean and Chinese) use the multilingual model. Pick the language when you know it; Detect automatically finds it from the audio.
How accurate is it, and Standard or High? On a clean 11-minute English recording, both English settings got about 95 to 97 words in 100 right, not counting punctuation and capital letters. On short real-world recordings, High accuracy was clearly better: on 5 test clips it made no errors that changed the meaning, while Standard misheard words in 2 of them (for example "As not" for "Ask not"). Use Standard for clear, single-speaker audio and when price matters most; use High for interviews, phone-quality audio and anything you will publish. Accuracy drops with background music, crosstalk, heavy accents and poor microphones. There is no speaker labelling (who said what).
How long does it take? At the default 4 GB memory, an hour of English audio takes about 3 minutes of processing at Standard accuracy and about 5 to 6 minutes at High accuracy; other languages take about 17 to 20 minutes per hour. Downloading adds a little. More memory gives more CPU and a faster run; the price per minute stays the same.
Why does a file show robots_disallowed or blocked?
The host's robots.txt does not allow that address, or the server refused the download (HTTP 401 or 403). The Actor does not retry or work around it, and the row is free. After two refusals from the same host, the rest of that host's files in the run are skipped.
What are the limits? Up to 1,000 files per run, files up to 4,096 MB, and up to 720 minutes per file. Very long files are best split across runs with Maximum minutes per file.
Is my audio stored? Downloaded files are deleted as soon as each one is transcribed. Only the transcript rows, subtitle files and run statistics stay, in your own Apify storage.