| --- |
| license: apache-2.0 |
| language: |
| - vi |
| - en |
| tags: |
| - subtitles |
| - srt |
| - translation |
| - gemma4 |
| - vision |
| - llama.cpp |
| pipeline_tag: translation |
| library_name: gemma-srt-translate |
| --- |
| |
| # Gemma SRT Translate |
|
|
| Dịch và sửa phụ đề SRT bằng **Gemma 4 12B vision** (llama-server + MTP). |
| Repo này chứa **script + notebook Colab**; model GGUF tải từ [`unsloth/gemma-4-12B-it-qat-GGUF`](https://huggingface.co/unsloth/gemma-4-12B-it-qat-GGUF). |
|
|
| ## Cấu trúc repo |
|
|
| ``` |
| YOUR_USERNAME/gemma-srt-translate/ |
| ├── README.md ← file này |
| ├── config.yaml ← cấu hình mặc định |
| ├── translate_srt.py ← pipeline chính |
| ├── diarize_audio.py ← Pass 0: phân tích giọng nói (tùy chọn) |
| ├── requirements-diarize.txt ← dependency cho Pass 0 |
| ├── colab/ |
| │ └── GemmaSRT_Colab.ipynb ← chạy trên Google Colab (L4 24GB) |
| └── scripts/ |
| ├── download_models.py ← tải GGUF từ Unsloth |
| └── build_llama_server.sh ← build llama-server Linux (Colab) |
| ``` |
|
|
| ## Chạy trên Google Colab (khuyến nghị L4 24GB) |
|
|
| Repo **Private** → **không** mở được bằng nút Open in Colab trên HF (lỗi 401). |
|
|
| **Cách mở:** tải [colab/GemmaSRT_Colab.ipynb](https://huggingface.co/STBack23/gemma-srt-translate/blob/main/colab/GemmaSRT_Colab.ipynb) → Colab **File → Upload notebook** → dán **`HF_TOKEN`** vào cell cấu hình → lưu copy lên Drive `Gemma/` để dùng lại. |
| |
| Repo này nằm trên **Hugging Face**, không phải GitHub — link `colab.research.google.com/github/...` sẽ lỗi 404. |
| |
| **Cách mở (chọn một):** |
| |
| 1. **Nút Open in Colab trên HF** (khuyến nghị): |
| [colab/GemmaSRT_Colab.ipynb](https://huggingface.co/STBack23/gemma-srt-translate/blob/main/colab/GemmaSRT_Colab.ipynb) → bấm **Open in Colab** |
| |
| 2. **Shortcut HF `/colab`**: |
| [https://huggingface.co/STBack23/gemma-srt-translate/colab](https://huggingface.co/STBack23/gemma-srt-translate/colab) |
| |
| 3. **Colab → File → Upload notebook** → tải file `.ipynb` từ HF về rồi upload |
| |
| Sau khi mở notebook: |
| |
| 1. Runtime → **Change runtime type** → GPU **L4** (hoặc T4/A100) |
| 2. Chạy tuần tự các cell (lần đầu ~15–20 phút: build llama-server + tải model) |
| 3. Upload video + SRT hoặc trỏ vào Google Drive |
| 4. Tải file `*.vi.srt` về máy |
| |
| [](https://huggingface.co/STBack23/gemma-srt-translate/colab) |
| |
| ## Chạy trên máy local (Windows) |
| |
| Repo HF **không** chứa `llama-server.exe` — dùng bản Windows trong project gốc: |
| |
| ```powershell |
| .\run-translate.ps1 -Video "phim.mp4" -InputSrt "phim.srt" -OutputSrt "phim.vi.srt" |
| ``` |
| |
| Hoặc mở GUI: `GemmaSRT.bat` |
| |
| ## Tải model thủ công |
| |
| ```bash |
| pip install huggingface_hub |
| python scripts/download_models.py --dest ./models |
| ``` |
| |
| File tải về (~12–15 GB): |
| |
| | File | Mục đích | |
| |------|----------| |
| | `gemma-4-12B-it-qat-UD-Q4_K_XL.gguf` | Model chính | |
| | `mmproj-F16.gguf` | Vision projector | |
| | `mtp-gemma-4-12B-it.gguf` | MTP draft (tăng tốc) | |
| |
| ## Pipeline |
| |
| 1. Parse SRT → gom scene |
| 2. **Pass 0** *(tùy chọn)*: phân tích giọng nói (pyannote) → "ai nói câu nào" + giới tính/độ tuổi → gán vào từng cue để xưng hô nhất quán |
| 3. **Pass 1**: cắt frame (ffmpeg) → OCR/sửa SRT gốc (vision) |
| 4. **Pass 2**: dịch theo ngữ cảnh + xưng hô |
| 5. Ghi SRT dịch, SRT đã sửa, báo cáo JSON |
| |
| ### Pass 0 — phân tích giọng nói (diarization) |
| |
| Bật bằng `--diarize` (CLI) hoặc `ENABLE_DIARIZE = True` (Colab). Cần thêm: |
| |
| ```bash |
| pip install -r requirements-diarize.txt |
| ``` |
| |
| Token HF phải bấm **Agree** điều kiện các model gated: |
| [community-1](https://hf.co/pyannote/speaker-diarization-community-1) · |
| [3.1](https://hf.co/pyannote/speaker-diarization-3.1) · |
| [segmentation-3.0](https://hf.co/pyannote/segmentation-3.0). |
| `--gender-method model` dùng [audeering wav2vec2 age/gender](https://hf.co/audeering/wav2vec2-large-robust-24-ft-age-gender) (~1GB). |
|
|
| ## VRAM |
|
|
| | GPU | 1 phim | 2 phim song song | |
| |-----|--------|------------------| |
| | RTX 4060 Ti 16GB | ✅ | ❌ | |
| | Colab L4 24GB | ✅ | ❌ (dùng local + Colab = 2 phim độc lập) | |
|
|
| ## Cấu hình |
|
|
| Chỉnh `config.yaml` hoặc tham số CLI: |
|
|
| ```bash |
| python translate_srt.py \ |
| --video phim.mp4 \ |
| --input-srt phim.srt \ |
| --output-srt phim.vi.srt \ |
| --target-lang Vietnamese \ |
| --skip-correction # bỏ pass OCR (nhanh hơn) |
| ``` |
|
|
| ## Model gốc |
|
|
| - [unsloth/gemma-4-12B-it-qat-GGUF](https://huggingface.co/unsloth/gemma-4-12B-it-qat-GGUF) |
| - [Gemma 4 license](https://ai.google.dev/gemma/docs/gemma_4_license) |
|
|
| ## Upload repo lên Hugging Face |
|
|
| Xem [UPLOAD.md](./UPLOAD.md) (trong project gốc: `huggingface/UPLOAD.md`). |
|
|