Skip to content
Tidewell Software
Media Transcriber

MP3 to text and SRT in Python

Send an MP3 or MP4 link; get the transcript, timestamped segments and SRT subtitles.

Steps

  1. Get an API token. Apify Console → Settings → API & Integrations. Export it as APIFY_TOKEN.
  2. Install the client. pip install apify-client
  3. Add the file URL. MP3, M4A, WAV, MP4, MOV and more; Drive and Dropbox links work.
  4. Pick a model. base for clear speech, small or larger for accents.
  5. Drop the sample limit. Remove maxDurationMinutes for the whole file.
  6. Save the subtitles. Download srt_url or vtt_url.

Input

input.json
{
  "mediaUrls": [
    "https://archive.org/download/stories_006_librivox/my_financial_career_leacock_dr_64kb.mp3"
  ],
  "maxDurationMinutes": 1
}

Run it

run.py
import os
import urllib.request

from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("tidewell/media-transcriber").call(run_input={
    "mediaUrls": [
        "https://archive.org/download/stories_006_librivox/my_financial_career_leacock_dr_64kb.mp3"
    ],
    "maxDurationMinutes": 1
})

for f in client.dataset(run["defaultDatasetId"]).iterate_items():
    if f["status"] == "succeeded":
        print(f["text"])
        urllib.request.urlretrieve(f["srt_url"], "subtitles.srt")

Output

Run on 9 November 2026: 1 minute of audio, $0.006 at list price.

Dataset row (trimmed)
{
  "media_id": "media-0001",
  "status": "succeeded",
  "source_url": "https://archive.org/download/stories_006_librivox/my_financial_career_leacock_dr_64kb.mp3",
  "source_type": "file",
  "media_url": "https://archive.org/download/stories_006_librivox/my_financial_career_leacock_dr_64kb.mp3",
  "title": "my_financial_career_leacock_dr_64kb",
  "duration_secs": 323.448,
  "transcribed_secs": 60,
  "billed_minutes": 1,
  "model": "base",
  "language": "en",
  "language_probability": 0.993,
  "text": "This is a Librevox recording. All Librevox recordings are in the public domain. For more information and to find out how you can volunteer, please visit Librevox.org. My financial career by Stephen Leakock. This reading...",
  "word_count": 159,
  "segments": [
    {"id": 0, "start": 1.68, "end": 3.48, "text": "This is a Librevox recording."},
    {
      "id": 1,
      "start": 4,
      "end": 6.66,
      "text": "All Librevox recordings are in the public domain."
    }
  ],
  "srt_url": "https://api.apify.com/v2/key-value-stores/cAY0I41acGTmZlUgJ/records/media-0001-my_financial_career_leacock_dr_64kb.srt?signature=...",
  "processing_secs": 4.6
}

Options

language
Spoken language, or auto
wordTimestamps
Every word with start, end and confidence, no extra cost
initialPrompt
Names and jargon to steer spelling
subtitleMaxLineLength
42 characters and 2 lines by default

Use it from Claude or ChatGPT

Apify MCP server, this actor only
https://mcp.apify.com/?tools=tidewell/media-transcriber
Claude
Settings → Connectors → Add custom connector. Paste the URL, sign in to Apify
Claude Code
claude mcp add apify "https://mcp.apify.com/?tools=tidewell/media-transcriber" -t http
ChatGPT
Add a custom MCP server with the URL and OAuth
Then ask
Use tidewell/media-transcriber to transcribe https://example.com/interview.mp3 and give me SRT subtitles.

Pricing

Pay per event, from the actor's live pricing on 9 November 2026.

Price
$0.004 per audio minute (base), $0.009 (small), $0.025 (large-v3-turbo). $0.002 run start (4 GB).
Free
Failed downloads, broken files, files with no speech