RRadar
Media, text & files

Audio Transcription

Audio transcription and speech to text with faster-whisper (tiny, base or small model, language auto-detect). Give mp3, m4a, wav, ogg or mp4 URLs or a public podcast RSS feed: one row per audio minute (text, start, end, language) plus the full TXT, SRT and VTT. Only-new mode for feeds.

Example request

curl -X POST https://radarbg.com/v1/audio-podcast-transcriber \
  -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"urls": ["https://archive.org/download/childrensshortworks09_1010_librivox/childrensshortworks009_lionandthehare_ab.mp3"], "maxEpisodes": 1, "model": "base", "maxMinutesPerFile": 0}'

Answer: {"ok": true, "count": N, "items": [...], "usage": {...}}. Failed calls are not counted.

Inputs

FieldTypeDescription
urlsarrayDirect links to audio or video files (mp3, m4a, wav, ogg, flac, mp4, webm, ...) or public podcast RSS feed URLs, or Apple Podcasts show links (podcasts.apple.com/.../id123; the public RSS feed is found automatically). For a feed the newest
maxEpisodesintegerHow many of the newest episodes to transcribe from each podcast RSS feed. Ignored for direct file URLs. Long episodes take long: about 1 hour of audio per few minutes of run time.
episodesSincestringPodcast feeds only: keep episodes published on or after this date (YYYY-MM-DD) or within a period like '30 days', '2 weeks' or '3 months'. Applied before Max episodes per feed. Empty = no date filter.
titleIncludesarrayPodcast feeds only: transcribe only episodes whose title contains one of these texts (case-insensitive). * matches anything, e.g. interview*ceo. Empty = all titles.
titleExcludesarrayPodcast feeds only: skip episodes whose title contains one of these texts (case-insensitive), e.g. trailer, rerun, best of.
modelstringSpeech recognition model (faster-whisper, runs on CPU inside the actor). tiny = fastest, base = good English quality at high speed (default), small = better accuracy and other languages, slower.
languagestringTwo-letter language code of the audio, for example en, de, es, fr, bg. Leave empty to detect the language automatically for each file.
vocabularystringNames, brands or special terms spoken in the audio, comma separated, e.g. Apify, Kubernetes, Varna. Whisper uses them as a hint to spell them correctly. Max 400 characters. Empty = no hint.
maxMinutesPerFileintegerTranscribe only the first N minutes of each file or episode (0 = the whole file). Use it to limit cost on very long recordings. You pay per transcribed minute.
subtitleMaxCharsintegerMax characters per subtitle line in the SRT and VTT files (2 lines per cue, max 7 seconds per cue, cut at sentence ends and pauses, timed from word timestamps). 42 is the broadcast standard; use 30-35 for vertical TikTok/Reels/Shorts videos
onlyNewbooleanFor monitoring feeds: skip every file or episode that was already transcribed in an earlier run with the same Monitor ID and return only new ones. The first run transcribes everything it is asked for. Each minute is paid for once.
monitorIdstringSeparate memory for each watch list (used with only-new mode). Use a different ID per podcast or feed list.
datasetIdstringOptional. Pick a dataset (or paste its ID) to read the input from, for example the result of Google Maps Scraper. When this actor runs as an integration, the dataset of the triggering run is used automatically (payload.resource.defaultDatas
datasetFieldstringOptional. The item field that holds the value, for example website, url or videoUrl (dot paths like author.url work). Empty = detected automatically.

Price

Included in every plan: 100 calls a month free, then from €9 a month for 3,000 calls across all APIs.

Related APIs

Bulk Image DownloaderImage to Text OCRKeyword TrendsLemmy ScraperMastodon ScraperVideo Frame Extractor