影片日語字幕

👤 user_918cb67a 📦 v1.0.0 ⭐ 4.5 ⬇️ 372 下載
🎨 設計多媒體 免費 🔑 需 API Key

📖 技能介紹


name: video-subtitle description: 日語影片自動翻譯燒錄技能。將日語影片轉換為中文硬字幕,完整流程:ffmpeg 提取音訊 → Whisper 日語轉錄 → LLM 翻譯日→中 → SRT 轉 ASS → ffmpeg NVENC 燒錄硬字幕 → 驗證。觸發條件:使用者提到影片字幕、硬字幕、字幕燒錄、日語影片翻譯、whisper 字幕、ass 字幕、或要求處理 .mp4 影片加字幕。


影片字幕翻譯燒錄技能

工作流程(6 步)

📦 原始影片.mp4
  → 🎵 提取音訊(ffmpeg,~10s)
  → 📝 Whisper 轉錄日語(~3-5min,base 模型)
  → 📝 LLM 翻譯日→中(~2-3min,QClaw 閘道器)
  → 📝 SRT 轉 ASS(<1s)
  → 🎬 NVENC GPU 燒錄(~3-6min)
  → ✅ ffprobe 驗證

執行方式

# 預設路徑執行
python C:\Users\liket\.agents\skills\video-subtitle\scripts\subtitle_translate.py

# 自定義路徑(修改指令碼頂部的配置變數)
# VIDEO_DIR      影片目錄
# OUTPUT_DIR     輸出目錄
# FFMPEG_DIR     ffmpeg bin 目錄
# QCLAW_GATEWAY  LLM 閘道器地址
# QCLAW_TOKEN    LLM 閘道器 Token

環境要求: ffmpeg(已加 PATH)、Python openai-whisper、Python deep-translator(MyMemory 回退用)

踩坑速查

# 錯誤 原因 解決
1 WinError 2 ffmpeg not found Whisper 內部調 ffmpeg 但 PATH 裡沒有 指令碼開頭 os.environ["PATH"] 加入 ffmpeg 目錄
2 Unable to parse SRT ffmpeg ass 濾鏡不支援 SRT 先轉 ASS(Step 4)
3 Unable to parse original_size Windows C: 冒號被當分隔符 用相對路徑 + cwd=ass_dir(指令碼已內建)
4 Whisper translate 質量差 ja→zh 用 Whisper 翻譯效果差 只轉錄,翻譯交給 Step 3 LLM
5 燒錄後影片無字幕 ffmpeg 靜默失敗(路徑問題) 必須用 ffprobe 抽檢畫面,不能只看檔案大小
6 LLM 翻譯條目數不匹配 輸出格式不穩定 指令碼內建兜底補空邏輯
7 GBK 解碼錯誤 Windows 控制台預設 GBK Python 指令碼開頭設 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

關鍵實現細節

Whisper PATH 修復(指令碼內建):

os.environ["PATH"] = r"E:\ffmpeg\SCP\ffmpeg-master-latest-win64-gpl\bin" + os.pathsep + os.environ["PATH"]

小蔥技能站7w4.net,專業的AI技能分享平臺。

燒錄相對路徑 + cwd(指令碼內建):

ass_dir = os.path.dirname(os.path.abspath(ass_path))
ass_filename = os.path.basename(ass_path)
subprocess.run(cmd, cwd=ass_dir)  # cwd 切到字幕目錄,相對路徑才有效

ASS 字幕樣式: Microsoft YaHei UI,白字黑邊(PrimaryColour &H00FFFFFF,Outline=2),底部居中。

NVENC 自動回退 CPU: GPU 編碼失敗時自動降級到 libx264 -preset ultrafast

效能參考(RTX 4060)

步驟 30min 影片
提取音訊 ~10s
Whisper base ~3-5min
LLM 翻譯(~700條) ~2-3min
SRT→ASS <1s
NVENC 燒錄 ~3-6min
合計 ~10-15min/影片

驗證命令

# 檢查時長(必須,但不夠)
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "output.mp4"

# 截幀驗證字幕真的燒進去了(必須!)
ffmpeg -ss 00:05:00 -i "output.mp4" -vframes 1 -q:v 2 frame.jpg
# 然後用圖片檢視器確認畫面底部有字幕

目錄結構

影片目錄\
 ├── 原始影片.mp4
 ├── output\                   ← 指令碼輸出目錄(可自定義)
 │   ├── video_xxx_subtitled.mp4   成品
 │   ├── xxx_audio.wav              中間音訊
 │   ├── xxx_subs.srt              日語原文
 │   ├── xxx_subs_zh.srt           中文翻譯
 │   └── xxx_subs_zh.ass           中文 ASS
 └── final\                     ← 可手動建此目錄存放成品

指令碼特性

  • 斷點續傳:每步檢查檔案是否存在,已完成則跳過
  • 短 hash 檔名:繞過 Windows 260 字元路徑限制
  • NVENC/CPU 自動切換
  • LLM + MyMemory 雙翻譯引擎(LLM 失敗自動回退)

已知侷限

  • Whisper base 模型對混合音訊(BGM+語音+音效)識別一般
  • --task translate(ja→zh)翻譯質量差,不用
  • 當前只支援日語→中文,其他語言需修改 Whisper language 引數
  • faster-whisper 替代 openai-whisper 可提升速度和記憶體效率(未來改進方向)

🤖 AI 評測

這個 Skill 質量不錯,完整實現了日語影片自動翻譯燒錄的功能,文件和踩坑指南都很實用。優點是自動化程度高、有斷點續傳、出了問題會自動回退。不足之處是配置比較死板,首次使用需要手動改程式碼裡的路徑;另外驗證機制比較簡單,理論上可能出現燒錄失敗但沒發現的情況。整體適合有一定動手能力的使用者,功能本身值得肯定。

📊 多維度評分

適應性4.5
規範性4.6
有效性4.4
可靠性4.3
可信度4.5

📁 包含檔案 (3 個)

📄 SKILL.md 4.5 KB
📄 references/workflow.md 7.1 KB
📄 scripts/subtitle_translate.py 14.8 KB