nqh-video-transcribelisted
Install: claude install-skill wanghie/nqh-skills
# nqh-video-transcribe
Bước 0 của mọi pipeline trong repo này. Các skill khác không đọc pixel — chúng đọc file JSON này.
## Chạy
```bash
python3 skills/nqh-video-transcribe/scripts/transcribe.py INPUT.mp4 \
--audience auto \
-o work/INPUT.transcript.json
```
`--audience`:
- `vi` — ép Whisper nhận tiếng Việt, nạp initial_prompt tiếng Việt (giảm lỗi tên riêng, thuật ngữ)
- `en` — ép tiếng Anh
- `auto` (mặc định) — để Whisper tự detect, sau đó phân loại lại bằng mật độ dấu thanh trong kết quả
## Đầu ra
```json
{
"audience": "vi",
"duration": 61.4,
"fps": 30.0, "width": 1920, "height": 1080,
"words": [{"start": 0.12, "end": 0.41, "word": "chào", "prob": 0.98}],
"segments": [{"start": 0.1, "end": 4.2, "text": "..."}]
}
```
## Lưu ý thật
- Tiếng Việt: dùng `large-v3`. Model nhỏ hơn (`base`, `small`) sai timestamp từ khá nhiều với tiếng Việt vì âm tiết ngắn — caption sẽ lệch thấy rõ. Đây là chỗ KHÔNG nên tiết kiệm.
- Apple Silicon: chạy CPU với `compute_type=int8` vẫn nhanh chấp nhận được (~1/3 realtime với large-v3). Không cần CUDA.
- Nếu video có nhạc nền to, tách vocal trước sẽ tăng độ chính xác đáng kể.
## Yêu cầu
`ffmpeg`, `ffprobe`, `pip install faster-whisper`
## Khi ASR không trả timestamp từng từ
Một số đường ASR chỉ trả về CHỮ, không có timestamp: sherpa-onnx Whisper (ONNX, tải model từ GitHub thay vì Hugging Face), phần lớn API cloud gói rẻ, và mọi transcript do người gõ tay.
Dùng `lib/align.py` để dựng lại timestamp từ chính file âm thanh:
```