Whisper Speech to Text — Audio & Video Transcriber avatar

Whisper Speech to Text — Audio & Video Transcriber

Pricing

from $40.00 / 1,000 result rows

Go to Apify Store
Whisper Speech to Text — Audio & Video Transcriber

Whisper Speech to Text — Audio & Video Transcriber

Transcribe audio and video URLs to timestamped text with speaker labels, chapters, keywords and SRT/VTT subtitles in 99 languages.

Pricing

from $40.00 / 1,000 result rows

Rating

0.0

(0)

Developer

Andrew

Andrew

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Turn any direct audio or video URL into a clean, timestamped transcript with speaker labels, chapters, keywords and ready-to-use SRT / VTT / TXT subtitle files — in one run, from a spreadsheet-friendly dataset. Paste one file or a batch of ten; podcasts, interviews, meetings, webinars, voice memos and video files all work.

What you get

Every row in the dataset carries a rowType, so you can filter to exactly what you need:

  • minute — one row per transcribed minute with the plain-text transcript, the sentence-level segments (start, end, content, confidence, speaker), the language, and the names of the subtitle files
  • speaker — one row per detected voice (SPEAKER_1, SPEAKER_2, …): speaking time, share of speech, word count, first-spoke timestamp and a sample quote
  • chapter — pause-detected sections with startSec/endSec, a title from the opening sentence, a YouTube-ready youtubeChapter stamp (MM:SS Title) and a 200-character preview
  • keyword — the ten most-mentioned topic words with occurrence counts and the timestamp of every mention
  • file-summary — language, duration, transcribed minutes, word count, words per minute, speaker count, chapter count, top keywords and the full transcript text
  • segment — opt-in, one row per sentence with exact timestamps (roughly 10 per minute of speech)
  • Subtitle filestranscript-1.srt, transcript-1.vtt and transcript-1.txt per input file in the run's Key-value store, with [SPEAKER_N] tags when diarization is on

Files that fail to download, cannot be decoded, contain no speech or were trimmed produce an unbilled notice row (noticeCode + message), so an empty result is never silent.

Use cases

  • Podcast show notes and SEO pages — chapters with timestamps, keywords and a full transcript from one episode URL
  • Meeting and interview analysis — who said what, how long each person spoke, and quotable lines per speaker
  • Video subtitling — drop the SRT/VTT straight into YouTube, Premiere, CapCut or your player
  • Content repurposing — turn webinars and recordings into blog posts, clips and social captions
  • Research pipelines — sentence-level rows with timestamps and confidence scores for joining, searching and embedding
  • Multilingual archives — 99 languages auto-detected, or translated straight into English

How to use

  1. Paste one or more direct media URLs (mp3, wav, m4a, aac, ogg, flac, mp4, mov, mkv, webm, …) into Audio / video URLs
  2. Leave Speaker diarization on for anything with more than one voice; set Number of speakers if you know it
  3. Optionally set a Language code, turn on Translate to English, or add Word-level timestamps
  4. Use Max minutes per file and Max result rows per run as spend guards
  5. Run the actor — rows appear in the Dataset tab, subtitle files in the Key-value store tab

Example input:

{
"audioUrls": ["https://example.com/podcast-episode-42.mp3"],
"speakerDiarization": true,
"numSpeakers": 2,
"enrichmentRows": true,
"segmentRows": false,
"maxMinutesPerFile": 60,
"maxResults": 500
}

Output format

A minute row:

{
"rowType": "minute",
"sourceUrl": "https://example.com/podcast-episode-42.mp3",
"fileIndex": 1,
"minuteIndex": 0,
"startSec": 0,
"endSec": 60,
"transcript": "Welcome back to the show. Today we are talking about…",
"speakers": ["SPEAKER_1", "SPEAKER_2"],
"segments": [
{ "start": 0.0, "end": 4.2, "content": "Welcome back to the show.", "confidence": 0.94, "speaker": "SPEAKER_1" }
],
"language": "en",
"task": "transcribe",
"audioDurationSec": 1834.2,
"subtitleFiles": ["transcript-1.srt", "transcript-1.vtt", "transcript-1.txt"],
"charged": true
}

A speaker row:

{
"rowType": "speaker",
"speaker": "SPEAKER_2",
"speakingTimeSec": 412.5,
"speechShare": 0.38,
"wordCount": 1093,
"segmentCount": 141,
"firstSpokeSec": 12.4,
"sampleQuote": "The thing nobody tells you about launching is…"
}

Pricing

Pay per result row (transcribed-minute event). A row is a transcribed minute, a chapter, a keyword, a file summary, a speaker summary or an opt-in sentence segment. Minute rows that carry speaker labels add a speaker-diarization surcharge on top of the row price, because diarization is several times more expensive to run; switch Speaker diarization off when you only need the words. Notice rows and subtitle files are free. Switch off Enrichment rows or Sentence segment rows to receive only the rows you need, and cap any run with Max result rows or a maximum cost in the run options.

Free-plan runs return up to 25 rows without speaker labels; any paid plan lifts both limits.

Notes and limits

  • Direct file URLs only — pair with a downloader actor for YouTube, TikTok or other platform pages
  • Up to 10 files per run and 500 MB per file; files longer than 60 minutes are transcribed in 60-minute parts, and speaker labels restart in each part
  • Word-level timestamps are produced when speaker diarization is off; with diarization on, segments carry sentence-level timing
  • Translate to English produces an English transcript without speaker labels
  • Heavy crosstalk, phone-quality audio or very similar voices can blur speaker labels; setting Number of speakers helps
  • Confidence scores are available on non-diarized transcripts

Only transcribe media you have the right to process. Files are downloaded into the run, transcribed, and discarded with it.