Bilibili Transcriber
Downloads a Bilibili video then transcribes speech using offline Vosk models.
Prerequisites
brew install ffmpeg # macOS (system-level, required)
One-click setup for everything else:
python3 scripts/setup.py
This installs vosk, yt-dlp (pip), and downloads the Chinese Vosk model (~40 MB).
Add --lang en for English, --deps-only / --model-only for partial setup.
Scripts
scripts/
├── bilibili_transcribe.py # download + transcribe pipeline
└── setup.py # one-click dependency & model install
Usage
# Basic: download + transcribe (output to stdout)
python3 scripts/bilibili_transcribe.py https://www.bilibili.com/video/BV1xx411c7mD
# Short BV ID
python3 scripts/bilibili_transcribe.py BV1xx411c7mD
# Save transcript to file
python3 scripts/bilibili_transcribe.py https://b23.tv/xxxxx --output transcript.txt
# English video
python3 scripts/bilibili_transcribe.py <url> --lang en
# Keep the downloaded video file
python3 scripts/bilibili_transcribe.py <url> --keep-video
# Member-only / bangumi (requires cookie)
python3 scripts/bilibili_transcribe.py <url> --cookie "your_cookie_string"
Arguments
| Flag | Default | Description |
|---|---|---|
url |
(required) | B站 URL or BV ID |
--output / -o |
stdout | Write transcript to file |
--lang |
zh |
zh or en |
--model |
auto-detect | Explicit Vosk model path |
--cookie |
— | Cookie string for logged-in/member-only videos |
--keep-video |
false | Don't delete the downloaded video |
Setup Script
python3 scripts/setup.py # full setup (zh model)
python3 scripts/setup.py --lang en # download English model
python3 scripts/setup.py --deps-only # only pip packages
python3 scripts/setup.py --list-models
Workflow
- yt-dlp downloads the video (best mp4 format available, Chrome impersonation for B站 anti-crawling)
- FFmpeg extracts audio → 16kHz mono WAV
- Vosk transcribes with offline model
- Temp files cleaned up automatically
Troubleshooting
- "No Vosk model found": run
python3 scripts/setup.py - "yt-dlp not found": run
python3 scripts/setup.py - Member-only video fails: pass
--cookiewith your browser's Cookie header
