# Changelog of Audio, Video & Podcast Transcriber (Whisper) (`singgendarhan/audio-video-podcast-transcriber`) Actor

- **URL**: https://apify.com/singgendarhan/audio-video-podcast-transcriber/changelog.md
- **Full Actor documentation**: https://apify.com/singgendarhan/audio-video-podcast-transcriber.md

## Changelog

### 0.1 (unreleased, 2026-10-23)

First version, built and tested locally. Not yet published.

- Transcribes audio and video files from direct URLs (mp3, m4a, wav, ogg, opus, flac, aac, mp4, webm, mov, mkv and more), from Apify key-value store records, and podcast episodes from RSS/Atom feeds (latest N, or published since a date).
- OpenAI Whisper via faster-whisper (CTranslate2 int8, CPU). Two quality levels: "fast" (Whisper base, default) and "balanced" (Whisper small). Weights are baked into the Docker image and SHA-256 verified; nothing is downloaded at run time.
- Output per file or episode: full text, timestamped segments, detected language with its probability, duration, and SRT, WebVTT, TXT and JSON files in the key-value store with links in the dataset. Optional word-level timestamps, translation to English, a vocabulary hint and voice-activity detection (skips silence and music).
- Long files are transcribed in ~10-minute chunks cut at quiet moments, with the decoded audio memory-mapped from disk, so a 3-hour podcast fits in the default 4 GB. With more memory, one single-threaded model worker runs per CPU core, and files and chunks run in parallel.
- Legal gate: links to YouTube, TikTok, Instagram, Facebook, X/Twitter, Vimeo, Twitch, Spotify, SoundCloud, Apple Music, Netflix and other streaming or social platforms are refused per item, before any request, at no charge. The check runs again on every redirect hop.
- Pay-per-event per started minute: `audio-minute-transcribed` (Fast) and `audio-minute-transcribed-balanced` (Balanced; falls back to 2 standard minutes if that event is not configured). Charged only after the transcript files are saved. Respects the user's maximum cost per run, with in-flight reservation so parallel files cannot overspend.
- Robustness: polite downloads (2 per host, retries with backoff honoring Retry-After, resume with Range requests), size, duration and content-type limits, private-network URL blocking, a per-file time limit, ffmpeg in a subprocess (a bad file fails only itself), feed parsing that tolerates broken XML and links from a podcast website to its feed, migration-safe progress, and stable error codes.
