Audio & Video to Text Transcription (Whisper): Speech to Text avatar

Audio & Video to Text Transcription (Whisper): Speech to Text

Pricing

from $4.80 / 1,000 audio minutes

Go to Apify Store
Audio & Video to Text Transcription (Whisper): Speech to Text

Audio & Video to Text Transcription (Whisper): Speech to Text

Speech to text for audio and video files, TikTok and Instagram links and podcast feeds: MP3, MP4, WAV, M4A and more to text, timestamps and SRT/VTT subtitles in 99 languages. Open-source Whisper, no API key. Optional AI summary and chapters. Pay per audio minute.

Pricing

from $4.80 / 1,000 audio minutes

Rating

0.0

(0)

Developer

Fernando Guiraud

Fernando Guiraud

Maintained by Community

Actor stats

0

Bookmarked

91

Total users

60

Monthly active users

11 days ago

Last modified

Share

What does Audio & Video to Text Transcription (Whisper) do?

Audio & Video Transcriber converts speech in audio and video files (MP3, MP4, WAV, M4A, OGG, FLAC, WEBM, MOV and more) and in TikTok, Instagram Reels, X and Facebook video links, and in pages with their own player (SoundCloud, Apple Podcasts episodes, Dailymotion, Loom, archive.org) into text, timestamped segments and ready-to-use SRT / WebVTT subtitles. It supports 99 languages, detects the language automatically, and can also translate speech to English.

Use it as a speech to text API, audio to text converter, video to text transcriber, podcast transcript generator or SRT subtitle generator: no OpenAI key required.

It runs open-source Whisper (faster-whisper) directly on Apify, so there is no OpenAI key, no per-request API fee and no data sent to third parties. You pay per minute of audio, and failed or silent files are never billed.

Use it from the Apify Console, the API, schedules and integrations (Make, Zapier, n8n), or let AI agents call it through the Apify MCP server ("transcribe this podcast episode and summarize it").

Sample output: real rows from a run of this Actor

Why use it?

  • 🎙️ Podcasts: type a podcast name, or paste an Apple Podcasts link or RSS feed, and get the latest episodes transcribed, with podcast name, episode title and date. Schedule it to transcribe every new episode automatically.
  • 🧑‍💼 Meetings and calls: turn recordings into text, and optionally get an AI summary, chapters and action items (Claude, with your own Anthropic key).
  • 🎯 Custom vocabulary: give names, brands and jargon so they are spelled right.
  • 🎬 Videos and courses: generate SRT/VTT subtitles with accurate timestamps.
  • 🤖 RAG and AI pipelines: get timestamped chunks with token counts, ready for LLMs and vector databases.
  • 🔗 Paste any link: direct file URLs, Google Drive, Dropbox, OneDrive and GitHub share links, social video links, or a SoundCloud, Apple Podcasts, Dailymotion or Loom page.
  • 🌍 Multilingual content: transcribe in the original language or translate to English in one step.

How to transcribe an audio or video file

  1. Click Try for free.
  2. Paste links to your media: a file (.mp3, .mp4...), a Google Drive or Dropbox share link, a TikTok or Instagram video, or a SoundCloud or Apple Podcasts episode page.
  3. Pick a model: base (fast, recommended) or small (most accurate).
  4. Click Start. Download the transcripts as JSON, CSV, Excel or HTML, or fetch them via API.

Input

FieldDescriptionDefault
sourcesLinks to audio/video files, cloud-drive share links, TikTok / Instagram / X / Facebook videos or player pages (SoundCloud, Apple Podcasts, Dailymotion, Loom, archive.org)—
base64FilesShort files without a URL: [{"fileName": "memo.m4a", "content": "<base64>"}]—
podcastFeeds / maxEpisodesPerFeedPodcast names, Apple Podcasts links or RSS feeds; the newest N episodes of each are transcribed— / 3
onlyNewEpisodesSkip episodes already transcribed in earlier runs (for schedules)true
modelbase, small or tinybase
languageISO code (en, es, de…) or autoauto
tasktranscribe or translate (to English)transcribe
outputsAny of text, markdown (paragraphs with [HH:MM:SS] times), segments, srt, vtt, chunks, docx (Word), pdftext, segments
vocabularyNames and terms to favour, e.g. ["Apify", "Dr. Nguyen"]—
speakerLabelsLabel who said each sentence (Speaker 1, Speaker 2...), +$0.003/minoff
numSpeakersHow many people speak, if you know it (0 = detect)0
aiInsights + anthropicApiKeyAI title, summary, key points, chapters, action items and topicsfalse
saveFilesAlso save .txt, .srt and .vtt files with download links (in files)false
wordTimestampsStart/end time for every wordfalse
skipSilenceSkip silent parts (faster, fewer hallucinations)true
maxDurationMinutesOnly transcribe (and bill) the first N minutes of each file240
subtitleMaxCharsRe-cut SRT/VTT into broadcast-style subtitles of N characters per line (0 = one subtitle per sentence)0
chunkSizeTarget size of each RAG chunk in chunks, in characters1000
maxFileSizeMbSkip files larger than this1000
failOnErrorMark the run as failed when any file fails (for monitoring)false
{
"sources": [{ "url": "https://archive.org/download/gettysburg_johng_librivox/gettysburg_address_64kb.mp3" }],
"model": "base",
"language": "auto",
"outputs": ["text", "segments", "srt"]
}

Output

One record per file. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Real result (October 2026, a public-domain recording of the Gettysburg Address, base model; text, segments and subtitles shortened):

{
"source": "https://archive.org/download/gettysburg_johng_librivox/gettysburg_address_64kb.mp3",
"status": "ok",
"model": "base",
"task": "transcribe",
"language": "en",
"languageProbability": 0.999,
"durationSeconds": 157.88,
"transcribedSeconds": 157.88,
"billedMinutes": 3,
"text": "This is a Librevox recording. All Librevox recordings are in the public domain. For more information or to volunteer, please visit Librevox.org.\n\nThe Gettysburg Address by Abraham Lincoln, November 19th, 1863.\n\nFour score and …",
"segments": [
{
"start": 0.05,
"end": 1.91,
"text": "This is a Librevox recording."
},
{
"start": 2.41,
"end": 4.85,
"text": "All Librevox recordings are in the public domain."
},
{
"start": 5.49,
"end": 9.97,
"text": "For more information or to volunteer, please visit Librevox.org."
}
],
"srt": "1\n00:00:00,050 --> 00:00:01,910\nThis is a Librevox recording.\n\n2\n00:00:02,410 --> 00:00:04,850\nAll Librevox recordings are in the public domain.\n",
"stats": {
"processingSeconds": 12.58,
"speedFactor": 12.6,
"segments": 22,
"words": 305
},
"warnings": []
}

Segments and subtitles follow the sentences of the speech, with start and end times in seconds, and the text is split into paragraphs at pauses. With aiInsights, each record also gets insights (title, summary, key points, chapters, action items and topics).

Data fields

FieldWhat it holds
sourceThe file, link or podcast episode that was transcribed
statusok, error (with error, not billed) or skipped (run timeout close, not billed)
model, taskWhisper model used and transcribe or translate (to English)
language, languageProbabilityDetected (or given) language code and how sure the detection is (0–1)
durationSeconds, transcribedSecondsLength of the media and how much of it was transcribed (less with maxDurationMinutes, a spending limit or an aborted run)
billedMinutesMinutes charged for this file (rounded up per file; 0 for errors and files without speech)
textPlain text in paragraphs
segmentsSentences with start/end in seconds (and words with wordTimestamps, speaker with speakerLabels)
srt, vtt, markdownSubtitle files and Markdown with a timestamp per paragraph, when requested in outputs
chunksPieces of about chunkSize characters with start/end times, for RAG and embeddings
speakersNumber of speakers found (with speakerLabels)
episodePodcast episode details: podcast, title, published date and feed (for podcast feeds)
video, hookSocial video details (platform, title, author, uploadDate, views, likes, comments, url) and what is said in the first 3 seconds
transcriptSourcewhisper, or tiktok-captions when TikTok's own subtitles were used
filesDownload links of the docx/pdf documents and, with saveFiles, the text and subtitle files
insights, insightsUsage, insightsErrorAI summary, chapters and action items (with aiInsights) and their token usage
statsProcessing time, speed (times faster than real time), number of segments and words
warningsAnything to know about the result (truncated, no speech, labels not added...)

Word and PDF transcripts

Add docx and/or pdf to outputs and each file also comes as a Word document and a PDF, ready to read, share or print: the title (episode, video or file name), source, language and duration, then paragraphs with their start time, and with speakerLabels the speaker in bold ([00:04:12] Speaker 2: ...). The download links are in files.docx and files.pdf of each result. The PDF covers Latin, Greek and Cyrillic alphabets; for Chinese, Japanese, Korean or Thai use the Word file. No extra charge.

Who said what: speaker labels

Turn on speakerLabels and every sentence gets its speaker (Speaker 1, Speaker 2...), for interviews, podcasts, meetings and panels. The text, segments, SRT/VTT subtitles, Markdown and RAG chunks all show who speaks; the result also says how many speakers were found (speakers). It adds $0.003 per minute.

Real result on a podcast interview (SRT output: the host's question, then the guest's answer):

107
00:08:43,240 --> 00:08:46,220
[Speaker 1] rich history that you so
eloquently write about
108
00:08:46,220 --> 00:08:51,640
[Speaker 2] so psychiatry is a profession that
tries to deal with an enormously

SRT and VTT mark the speaker on each subtitle ([Speaker 2] ... and the standard WebVTT voice tag <v Speaker 2>), and a subtitle never mixes two voices.

  • Speakers are detected automatically. If you know how many people talk, set numSpeakers for more exact labels.
  • Works best when each person talks for a while. Someone who only says a word or two in the whole file can be counted as the closest other voice. Overlapping speech goes to the main voice.
  • Speaker labels are names in order of appearance, not real names: Speaker 1 is whoever talks first.
  • Voice fingerprints: NVIDIA NeMo TitaNet small (CC-BY-4.0), run on Apify; no audio leaves the run.

How much does transcription cost?

Pay per event, with no subscription:

EventPrice
Run start (per GB of memory, default 4 GB)$0.0005
Audio minute, base or tiny model$0.006 ($0.36 per hour)
Audio minute, small model$0.012 ($0.72 per hour)
Speaker labels per minute (optional, speakerLabels)$0.003
AI insights per file (only with aiInsights; Claude usage is billed to your own key)$0.01

A 30-minute podcast with the base model costs about $0.18. Each started minute is billed; failed files and files with no speech are free. Higher Apify plans pay less per minute (SILVER −10%, GOLD −20%). Set Max cost per run and the Actor stops cleanly at that limit.

How accurate is it? Whisper tiny vs base vs small

We measured the three models ourselves, with the same code this Actor runs:

ModelWord error rate (lower is better)Speed on Apify (default 4 GB)Price per minute
tiny11.3%about 20–30× faster than real time$0.006
base (default)8.2%about 11× faster than real time$0.006
small5.4%about 4× faster than real time$0.012

Word error rate was measured on 73 clean English recordings from the LibriSpeech test set (8.6 minutes of audio). Speed was measured on a 2.6-minute speech recording in Apify runs (tiny: scheduled test runs). Accents, background noise and other languages give higher error rates, so choose small for those. A 60-minute file takes about 5–6 minutes with base and about 15 minutes with small.

Run it from Python or the API

Install the client with pip install apify-client and use your API token from Apify Console → Settings → API & Integrations:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("fguiraud/audio-video-transcriber").call(run_input={
"sources": [{"url": "https://archive.org/download/gettysburg_johng_librivox/gettysburg_address_64kb.mp3"}],
"outputs": ["text", "srt"],
})
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item["status"], item["billedMinutes"], item["text"][:120])

Real output of this script (October 2026): ok 3 This is a Librevox recording. All Librevox recordings are in the public domain. For more information or to volunteer, pl

For short files, one HTTP request returns the results directly (it waits up to 5 minutes; use the client above for longer files):

curl -X POST "https://api.apify.com/v2/acts/fguiraud~audio-video-transcriber/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"sources": [{"url": "https://github.com/openai/whisper/raw/main/tests/jfk.flac"}], "outputs": ["text"]}'

It returns the records as JSON, for this clip "text": "And so my fellow Americans, ask not what your country can do for you, ask what you can do for your country." and "billedMinutes": 1.

Use it with AI agents (MCP): Claude, ChatGPT, Cursor

This Actor works as a tool for AI agents through the Apify MCP server. Add it to Claude Desktop, Claude Code, Cursor, VS Code or any MCP client with this server URL:

https://mcp.apify.com?tools=fguiraud/audio-video-transcriber

Then just ask in plain language, for example:

Smallest useful input for an agent:

{
"sources": [{ "url": "https://example.com/episode.mp3" }],
"outputs": ["text"]
}
  • Asking only for text keeps the answer short; add segments or srt when timestamps are needed.
  • maxDurationMinutes caps the length (and cost) of each file.
  • Set language when you know it: it avoids misdetection on short clips.

Agents pay per result like everyone else (Apify also supports agentic payments), so there is no subscription to set up.

Agent-friendly input: common field names such as url, urls, startUrls, query or keywords are accepted, and an empty input runs a small sample from the input form (with a note in the results) instead of failing.

Tips

  • Long batches are safe: if the platform restarts or migrates the run, files already transcribed are skipped, so no minute is charged twice.
  • Long files show their progress: the run status and log say how far the current file is every 20 seconds (Transcribing talk.mp3: 00:05:00 of 00:10:00 (50%)), so a long file never looks stuck. A 60-minute file takes about 5–6 minutes with base.
  • Stopping a run early: abort it gracefully with the API (POST https://api.apify.com/v2/actor-runs/<runId>/abort?gracefully=true). The part of the current file already transcribed is then delivered and billed, with a warning saying where it stopped. An immediate abort stops the run at once and that file is lost (and not billed).
  • Speed: see the table above. More memory gives the run more CPU cores, so results arrive sooner at the same cost per minute.
  • Accuracy: use small for accents, noisy recordings, music in the background and most non-English languages.
  • Set language when you know it; auto-detection can be wrong on very short or noisy clips.
  • For subtitles, add srt or vtt to outputs and enable wordTimestamps if you need per-word timing.

FAQ and limitations

  • Readable subtitles: set subtitleMaxChars (e.g. 42) to re-cut SRT/VTT into broadcast-style subtitles (2 lines, max 6 s per subtitle). For subtitle-only jobs see SRT Subtitle Generator.

  • Pages with a player: SoundCloud tracks, Apple Podcasts episodes, Dailymotion, Loom and archive.org pages work in sources; the audio is found on the page. Spotify and other sites with DRM cannot be downloaded: for a podcast, use its name, RSS feed or Apple Podcasts link in podcastFeeds. If a link does not work, the result says why (private file, page without audio, file too large...) and it is not billed.

  • TikTok, Instagram, X and Facebook links work in sources like any file link, at the same price per minute. Their records add the video details and a hook (what is said in the first 3 seconds). YouTube links are not transcribed here (not billed): YouTube Transcript Scraper returns their captions for $0.003 per video, and transcribes videos without captions with AI.

  • Transcribe every new episode automatically: create an Apify schedule with your podcast feed. With onlyNewEpisodes (on by default) episodes transcribed in earlier runs are skipped, so you only pay for new ones.

  • Privacy: files are processed inside your own Apify run and deleted when it ends. Nothing is sent to external AI APIs, unless you turn on aiInsights (then the transcript goes to Anthropic with your own key).

  • Accuracy depends on audio quality. Whisper can occasionally produce wrong words in silence or music; skipSilence reduces this.

  • Found a problem or need a feature? Open an issue on the Issues tab. Replies within 48 hours.

  • Did it save you time? A short review on the Reviews tab helps other people find this Actor.