algorembrant's picture
Upload 4 files
04850df verified
# ⚑ Universal Media Transcriber
Convert **YouTube, YouTube Music, Spotify, and direct audio/video URLs** into transcript `.txt` files β€” extremely fast.
---
## ✨ Features
| Feature | Detail |
|---|---|
| **Native captions** | YouTube captions grabbed instantly β€” no audio download |
| **Whisper fallback** | `faster-whisper` (up to 4Γ— faster than OpenAI Whisper) |
| **Spotify** | Tracks / albums / playlists via `spotdl` β†’ Whisper |
| **Direct audio** | `.mp3 .mp4 .wav .m4a .webm .ogg` and more |
| **Playlist support** | Auto-expand playlists, channels, albums |
| **Batch + parallel** | Multiple URLs, concurrent workers |
| **Smart cache** | Re-run same URL instantly |
| **Auto-install** | Deps install themselves on first run |
---
## πŸš€ Quick Start
```bash
# Single YouTube video
python transcriber.py https://youtu.be/VIDEO_ID
# Multiple URLs
python transcriber.py URL1 URL2 URL3
# From a file (one URL per line)
python transcriber.py --file urls.txt
# Full YouTube playlist
python transcriber.py --playlist https://youtube.com/playlist?list=PLAYLIST_ID
# Spotify track
python transcriber.py https://open.spotify.com/track/TRACK_ID
# Force Whisper (ignore captions)
python transcriber.py URL --whisper
# Larger model for better accuracy
python transcriber.py URL --model large-v3
# Merge all into one file
python transcriber.py URL1 URL2 --merge
# Custom output folder
python transcriber.py URL --output ./my_transcripts
```
---
## πŸ›  Options
```
urls One or more media URLs
--file, -f Text file with one URL per line
--output, -o Output directory (default: ./transcripts)
--merge, -m Merge all transcripts into one file
--whisper, -w Force Whisper (skip caption check)
--model tiny | base | small | medium | large-v2 | large-v3
--workers Parallel workers (default: 4)
--no-cache Disable transcript cache
--playlist Expand playlist/channel into individual videos
--clear-cache Wipe the cache
```
---
## πŸ“¦ Dependencies (auto-installed)
- `yt-dlp` β€” universal media downloader
- `youtube-transcript-api` β€” instant YouTube captions
- `faster-whisper` β€” optimized Whisper (CTranslate2)
- `spotdl` β€” Spotify downloader
- `rich` β€” terminal UI
**Requires:** `ffmpeg` installed on your system:
```bash
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
# Windows
winget install ffmpeg
```
---
## ⚑ Speed Guide
| Source | Method | Speed |
|---|---|---|
| YouTube with captions | Native API | < 2 sec |
| YouTube no captions | Whisper `base` | ~realtime |
| Spotify music | spotdl + Whisper | depends on length |
| Direct audio | Whisper | ~realtime |
**Model accuracy vs speed:**
`tiny` β†’ `base` β†’ `small` β†’ `medium` β†’ `large-v3`
(fastest) (most accurate)
---
## πŸ“„ Output Format
```
======================================================================
TITLE : My Video Title
UPLOADER : Channel Name
DURATION : 0:15:42
SOURCE : youtube
METHOD : native_captions
URL : https://youtu.be/...
======================================================================
[0:00:00] Hello and welcome to this video...
[0:00:05] Today we're going to talk about...
```
---
## πŸ—‚ URL File Format
```
# urls.txt β€” lines starting with # are comments
https://youtu.be/VIDEO1
https://youtu.be/VIDEO2
https://open.spotify.com/track/TRACK_ID
https://example.com/podcast.mp3
```