Paste a video link (YouTube, Instagram, TikTok, X, Vimeo, and hundreds more
sites via yt-dlp) or upload a video/audio
file, and get a formatted, timestamped transcript back. Transcription runs
locally on Whisper via
faster-whisper — free, no API
key, no usage limits.
Runs on your own machine and your own internet connection, which matters: YouTube and Instagram both rate-limit/block anonymous requests from cloud/ datacenter IPs, but not from a normal home connection, so running it locally avoids that entirely with no extra setup (no cookies, no accounts).
This guide is for Windows. It hasn't been built or tested on Mac/Linux.
- Windows 10/11 with winget (built in on any reasonably recent Windows install — check with
winget --version). - Git (to clone this repo). Get it from git-scm.com if you don't have it.
- A few GB of free disk space (Whisper models + Python packages).
You do not need a GPU — this runs fine on CPU. It'll automatically use a GPU if one happens to be available, but it's not required.
git clone https://github.com/vanamthrishul/any-transcript.git
cd any-transcriptThe project needs Python 3.12 specifically, in its own virtual environment.
This is important even if you already have a different Python version
installed (e.g. a newer one): some of the ML packages this project depends
on (ctranslate2, used by faster-whisper) don't reliably have installable
builds for the very latest Python versions yet, and 3.12 is the safe, well
supported choice.
winget install --id Python.Python.3.12 -eUsed to extract audio from downloaded videos.
winget install --id Gyan.FFmpeg -eAfter installing, close and reopen your terminal so it picks up the updated PATH (or just proceed — the app also locates ffmpeg itself at startup as a fallback, so this step isn't strictly required, just tidier).
From inside the any-transcript folder:
py -3.12 -m venv venv
.\venv\Scripts\python.exe -m pip install --upgrade pip
.\venv\Scripts\python.exe -m pip install -r requirements.txtThis installs FastAPI, faster-whisper, yt-dlp, and the rest — a few
hundred MB of packages, may take a few minutes.
powershell -ExecutionPolicy Bypass -File run.ps1(The -ExecutionPolicy Bypass is just for this one script run, it doesn't
change any system-wide setting. If you'd rather not use it, run
.\venv\Scripts\python.exe -m uvicorn backend.main:app --host 127.0.0.1 --port 8000
directly instead — same effect.)
Then open http://127.0.0.1:8000 in your browser.
-
Paste a video link (Video link tab) or choose a local file (Upload file tab).
-
Pick a model size:
Model Speed Accuracy Notes tinyFastest Lowest Good for quick drafts baseFast Good Default, recommended for most use smallSlower Better Worth it for noisy/accented audio mediumSlowest Best Can be very slow on CPU-only machines -
Pick a language, or leave it on auto-detect.
-
Click Transcribe and watch the progress bar. When done, copy the text or download it as
.txt/.srt.
The first time you use a given model size, it downloads the model weights
(one-time; cached afterward in ~/.cache/huggingface).
- A video link fails to download / extractor errors.
yt-dlpneeds to keep up with sites like YouTube constantly changing their internals; ayt-dlpversion even a few months old can start failing. Update it:.\venv\Scripts\python.exe -m pip install -U yt-dlp
- "No speech was detected in this audio." The file/video genuinely had no detectable speech (e.g. music-only, silent, or the wrong file).
- Port 8000 already in use. Something else is already running there, or
a previous run didn't shut down. Close it, or edit
run.ps1to use a different--port. - PowerShell won't run the script at all. Make sure you're passing
-ExecutionPolicy Bypass -File run.ps1exactly as shown above, from inside theany-transcriptfolder.