Speech to Text avatar

Speech to Text

Pricing

from $21.00 / 1,000 minute transcribeds

Go to Apify Store
Speech to Text

Speech to Text

Transcribe audio and video files to text with timecodes, in 90+ languages. Whisper large v3 with nothing to set up, optional translation to English, SRT and WebVTT subtitles, and chunks for RAG. Export data, run via API, schedule runs, or integrate with AI workflows.

Pricing

from $21.00 / 1,000 minute transcribeds

Rating

0.0

(0)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

Turn audio and video into text with timecodes, in 90+ languages. Feed it MP3, M4A, WAV, FLAC, OGG, MP4, MOV or WEBM — anything with sound — and get back a clean transcript, timed passages, ready-made SRT or WebVTT subtitles, and retrieval chunks that keep the moment each passage was spoken. No API key to set up, no model to choose, no file preparation on your side.

What is Speech to Text?

Speech to Text is a transcription API built on Whisper large v3. It downloads your media, strips the audio out of video, prepares it for recognition, splits files of any length into parts, transcribes them and stitches the timings back together — so a three-hour recording is one input and one row of output.

The recognition key is built in. There is nothing to sign up for, and nothing to paste. If you already pay for a Groq key, supply it and the per-minute price drops by 60%.

What you give itWhat you get back
An MP3 or WAV linkTranscript with timed passages
A video fileThe same — the video track is discarded
A three-hour podcastOne transcript, timings continuous across parts
A recording in any languageText in that language, or translated to English
chunkForRag: trueChunks with timecodes, ready to embed

What data can Speech to Text extract?

FieldTypeExample
sourcestringhttps://example.com/episode-12.mp3
fileNamestringepisode-12.mp3
durationSeconds / durationMinutesnumber461.05 / 7.68
languagestringEnglish
modelstringfast or accurate
translatedToEnglishbooleanfalse
transcriptstringIt is a truth universally acknowledged…
wordCount / charCountinteger1665 / 9218
segmentCountinteger101
speakerCountinteger3 (only when speaker labels are on)
speakersarray["Speaker 1", "Speaker 2", "Speaker 3"]
segmentsarray[{"start": 0, "duration": 4.56, "text": "It is a truth universally acknowledged…", "speaker": "Speaker 1"}]
chunksarray[{"index": 0, "start": 0, "startTimecode": "00:00:00", "text": "…", "charCount": 1180}]
subtitlesstringA complete SRT or WebVTT file
status / errorCode / errorMessagestringok, or why a file failed
transcribedAtstring2026-09-05T11:42:07+00:00

How much does transcription cost?

EventPriceWhen it is charged
Minute transcribed$0.03Per started minute, using the built-in key
Minute with your own key$0.012Per started minute when you supply a Groq key
Add-on: Speaker labels$0.012Per started minute, only when Speaker labels is on
File processed$0.002Per file downloaded and prepared

Minutes are counted per started minute with the last second free, so a recording that a container format reports as 10:00.01 is charged as ten minutes, not eleven.

Files that fail are never charged. A dead link, a file above the size limit, a video with no audio track or a recording with no speech in it comes back as an error row at no cost.

JobCost
A 45-minute podcast episode$1.35
The same episode with speaker labels$1.89
10 hours of interviews$18.02
100 one-minute voice notes$3.20
A 45-minute episode with your own Groq key$0.54

Comparable transcription Actors charge $10 to $48 per 1,000 minutes; this one is $30, or $12 with your own key. The Apify Free plan includes $5 of monthly usage, which is about 160 minutes of audio before you pay anything.

How to transcribe an audio file

  1. Click Try for free and sign in to Apify.
  2. Paste media links into Audio or video URLs, or use Upload a file.
  3. Leave quality on Fast unless the recording is noisy or heavily accented.
  4. Optionally set the spoken language, or leave it empty to detect it automatically.
  5. Press Start, then read the Output tab or export as JSON, CSV or Excel.

⬇️ Input

Speech to Text input: audio and video URLs, recognition quality, language, subtitles and RAG chunks

{
"urls": ["https://example.com/episode-12.mp3"],
"quality": "fast",
"language": "en",
"includeSegments": true,
"chunkForRag": false,
"subtitleFormat": "srt"
}

Quality

Fast uses Whisper large v3 turbo and handles clean speech at about 5% word error. Accurate uses the full Whisper large v3 — around 3% on the same audio, better on accents, background noise and technical vocabulary. Both cost the same here; the difference is time.

Language and translation

Leave language empty and the language is detected from the audio. Set a two-letter code when you already know it — that is faster and avoids mistakes on short clips. translateToEnglish returns English text whatever the speaker used.

Vocabulary hint

vocabularyHint takes names, product terms or spellings that appear in the recording. It nudges the engine toward the right proper nouns, which is the usual source of embarrassing transcripts.

Speaker labels

Switch on 🗣️ Speaker labels ($) and every segment says who is talking. The transcript is laid out as a conversation, one paragraph per turn, and SRT and WebVTT subtitles carry the name in front of each line:

Speaker 1: So how did the migration actually go?
Speaker 2: Better than we expected. We moved the last service on Friday.

Leave Number of speakers empty and the Actor works out how many voices are in the recording. Set it when you already know — two people in an interview, four in a panel — and the result is steadier, especially on noisy audio.

Speakers are found from the audio itself, inside the Actor, with no second service and no extra key. Voices that talk over each other are given to whoever holds most of the segment, so a heated cross-talk moment can be labelled with one name instead of two.

Long files

There is no length limit. Files are converted to compact mono audio and, when still too large for one request, split into parts and reassembled — timings stay continuous across the joins, so a segment at 02:41:15 really is at 02:41:15.

Bring your own key

Supply a Groq API key in Your own Groq API key and the price per minute drops from $0.03 to $0.012. You then pay Groq directly for the recognition, which at their rates is a fraction of a cent per minute.

⬆️ Output

Speech to Text output: one row per file with duration, language, word count and timed passages

{
"source": "https://example.com/episode-12.mp3",
"fileName": "episode-12.mp3",
"durationMinutes": 7.68,
"language": "English",
"model": "fast",
"transcript": "It is a truth universally acknowledged, that a single man in possession of a good fortune…",
"wordCount": 1665,
"segmentCount": 101,
"segments": [
{ "start": 0, "duration": 4.56, "text": "It is a truth universally acknowledged, that a single man in possession of a good fortune," }
],
"status": "ok",
"transcribedAt": "2026-09-05T11:42:07+00:00"
}

Error rows

errorCodeMeaning
network-error / http-error / not-foundThe file could not be downloaded
too-largeThe file is above the size limit you set
unreadable-mediaThe file has no audio track, or is not media at all
no-speechNothing was recognised — silence, or music with no words
invalid-api-keyThe Groq key you supplied was rejected
rate-limitedThe recognition service throttled the run after retries
budget-reachedThe run hit its maximum total charge; raise it and run the rest again

Use cases

Podcasts and interviews

Turn episodes into searchable text, show notes and quotes. Timed segments make it easy to find the moment a topic came up.

Meetings and calls

Transcribe recordings for minutes and follow-ups. Add participant names as a vocabulary hint so they are spelled right.

Subtitles

Get an SRT or WebVTT file back and attach it to the video, or translate it first.

Voice notes and support calls

Feed short recordings in bulk and run analysis over the text — one row per file, one prompt for all of them.

Feeding audio into a RAG pipeline

Chunks carry the timecode where they start, so an answer built on hours of recordings can cite the exact moment instead of the whole file.

Integrations

  • API: POST https://api.apify.com/v2/acts/lergassy~speech-to-text/runs
  • Python: ApifyClient(token).actor('lergassy/speech-to-text').call(run_input={'urls': [...]})
  • JavaScript: await client.actor('lergassy/speech-to-text').call({ urls: [...] })
  • n8n, Make, Zapier, Google Sheets, Airtable: run the Actor and map the dataset onward.
  • MCP: available through the Apify MCP server as a callable tool.
  • Webhooks: fire a webhook when a run finishes.

🤖 For AI agents and LLM apps

{ "urls": ["https://example.com/call.mp3"], "chunkForRag": true }
  • One row per file; status is ok or error, so a failed file needs no log parsing.
  • transcript is the field to summarise; chunks is the field to embed.
  • Every chunk carries startTimecode, so an answer can cite the moment it came from.
  • language reports what was actually detected, which is worth checking before acting on the text.
  • Failed files are never charged, so agent retries stay cheap.

❓ FAQ

Do I need an API key?

No. Recognition works out of the box. Supplying your own Groq key is optional and lowers the per-minute price.

How long can a file be?

There is no fixed limit. Long recordings are split and stitched back together automatically; a three-hour file is a normal input.

Which languages are supported?

Whisper covers 90+ languages, including English, Russian, Spanish, German, French, Portuguese, Indonesian, Arabic, Hindi, Chinese, Japanese and Korean. Detection is automatic unless you set the language yourself.

Can it separate speakers?

Yes. Switch on Speaker labels and each segment carries Speaker 1, Speaker 2 and so on, the transcript reads as a conversation and subtitles show the name on every line. It costs $0.012 per minute on top of the transcription. Tell the Actor how many people are in the recording if you know — it makes the result steadier.

Does speaker labelling name the people?

No. It tells the voices apart and numbers them in the order they first speak; it cannot know that Speaker 2 is Maria. Renaming them afterwards is a find-and-replace on the transcript.

What about videos?

Any video ffmpeg can read works — the audio track is extracted and the video is discarded, so you are not charged for pixels.

What is the difference from YouTube Transcript Scraper?

YouTube Transcript Scraper reads captions that already exist on YouTube, which is far cheaper. This Actor listens to the audio, so it works on any file and on videos that have no captions at all.

Can I use it with the Apify API or an MCP server?

Yes to both, like any Apify Actor.

Your feedback

Missing a language, a format or a field? Open an issue on the Issues tab — issues are answered quickly.

You might also like

ActorWhat it does
YouTube Transcript ScraperExisting YouTube captions with timecodes and chapters
Document Text ExtractorPDF, Word, Excel and PowerPoint to Markdown and RAG chunks
OCR Text ExtractorImages and scanned PDFs to text with confidence scores
Trustpilot Reviews APITrustpilot reviews, ratings and company replies