Communitygithub.com

boyingliu01/bilingual-video-subtitles

為培訓/講解影片自動添加中英文雙語字幕(轉寫+翻譯+硬字幕合成),並按主題/角色拆分成 10 分鐘以內短影片。

bilingual-video-subtitles 是什麼?

此技能專為培訓或講解影片打造,能自動生成高精度中英文雙語字幕,並支援按主題、角色或章節將長影片拆分成10分鐘內的短片段,適合碎片化學習。其核心優勢在於使用 Qwen3-Omni 模型,結合參考文檔(如公司規章制度)進行轉寫,有效解決 Whisper 或 FunASR 等通用語音辨識在專業術語上的準確率問題。工作流程包括音頻切分、高精度轉寫、Whisper 時間軸提取、拼音全局對齊、術語表驅動的中譯英,最終輸出雙語 SRT 字幕檔、硬字幕影片以及可編輯的字幕工程文件(.json)。此技能支援跨環境部署,當無法使用 Omni 後端時,會自動切換為 Agent 模式,以掛起並輸出 manifest 的方式,由用戶手動完成轉寫或翻譯後再繼續。此外,還提供年度微調功能,對於僅需少量修改的字幕,可直接編輯工程文件後重新渲染,無需重新進行完整的轉寫流程。

相容平台~Claude Code✓Codex CLI~Cursor
npx skills add boyingliu01/bilingual-video-subtitles

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Bilingual Video Subtitles 培訓影片雙語字幕

完整流水線在 scripts/pipeline.py(單一入口,階段有快取、可斷點續跑)。

宿主環境注意:本 skill 已做跨環境適配,轉寫後端自動選擇(原生沙箱的 Omni 網關 / OpenAI 兼容 api / whisper 橋接)。無 Omni 網關且未配 api 後端時走 agent 模式——transcribe/translate 階段以退出碼 3 掛起並寫出 manifest, 完成對應轉寫/翻譯後重跑 build 續跑。操作協議與後端配置必讀 references/host-adaptation.md。 遇到 pipeline exit 3 不是失敗,按 manifest 完成對應工作再重跑即可。

標準工作流

  1. 獲取輸入:影片檔案 + 對應的規章制度/參考文件(.docx/.txt/.md)。
  2. 讀取參考文件,為其編寫術語表 glossary.txt(每行 中文 = English,10~40 條)。 術語表決定全片翻譯一致性,務必覆蓋:制度/規範名稱、角色與縮寫 (如 PM=Project Manager)、業務單據或表單名稱、內部系統名。
  3. 執行建置(前台運行,預留充足 timeout;50 分鐘影片全流程約 15~25 分鐘):
python3 scripts/pipeline.py build \
  --video <影片路徑> --doc <制度文件路徑> \
  --work <工作目錄> --out <輸出目錄> \
  --glossary <glossary.txt> \
  --hotwords "安全紅線,需求單,變更單,PM,QA,SRE" \
  --preview 90
  1. 生成順序(每步有快取,失敗後重跑同命令即續跑): setup(切分音頻)→ transcribe(Qwen3-Omni 逐字稿)→ timing(whisper 時間軸) → align(拼音對齊)→ clean(去口語/切句)→ translate(批量中譯英) → package(工程文件+SRT+ASS)→ render(預覽片+完整版)。
  2. 先用 --preview 輸出的預覽片給用戶確認效果(可用 media-read 抽幀檢查字幕渲染), 再交付完整版影片、SRT、字幕工程文件。

交付物說明

檔案用途
<名稱>_中英雙語字幕_完整版.mp4硬字幕成片(中文上行白字、英文下行淺藍字,均帶半透明黑底背景條,任何背景下可讀)
<名稱>_中英雙語字幕.srt雙語字幕文件(可導入播放器/平台)
<名稱>_字幕工程.json主數據:含全部時間軸+中英對照文字。年度微調只改它
--work 目錄中間產物快取(轉寫稿、whisper 時間軸)。保留可避免重複轉寫

年度微調(制度修訂後更新字幕)

制度微調只影響少量句子時,不要重新轉寫:

  1. 讓用戶指出需修改的時間段/內容,或直接在上一年 <名稱>_字幕工程.json 上修改 zh/en 文字(時間軸不變時不動 start/end)。
  2. 重新渲染:
python3 scripts/pipeline.py render --project <工程.json> [--video <新影片>] [--srt-only]

若新影片對應章節有增刪語句:對新影片跑 build --stage transcribe 取新逐字稿, 人工比對後用新文字替換工程文件中對應條目,再 render。

按主題/角色拆分短影片(碎片化學習)

在已加字幕的完整版影片基礎上拆分(保留雙語字幕)。

  1. 從字幕數據中定位章節邊界:用參考文件的角色/章節清單作為關鍵詞, 在 zh_lines.json(工作目錄)中檢索章節過渡語,典型模式: "第N個角色是X"、"上面是X的職責,要求是"、"X的違規情形是"等過渡句式。 以過渡句的開始時間為切分點(該句歸入下一集)。
  2. 約束:單集 ≤10 分鐘(硬上限 15 分鐘);章節超限時在章節內部自然分界 (如"職責/違規行為/認定方法"之間)二次切分;不合併不同角色。
  3. 寫切分計劃 JSON 並執行:
{"base": "影片名", "lead_in": 0.35,
 "chapters": [{"start": 0, "end": 288.4,
               "title": "01_開篇_目的與概述", "note": "內容說明"}]}
python3 scripts/pipeline.py split --plan plan.json \
  --video <帶字幕完整版.mp4> --out <輸出目錄>
  1. 輸出到 <輸出目錄>/<影片名>_拆分影片/:自動命名的各集 + 00_拆分目錄.txt(片名、時間段、時長、內容說明)。
  2. 抽查驗證:每集開頭抽幀(ffmpeg 截 PNG 後查看)確認切分點正落在對應主題開場句。

關鍵實現約定(不要偏離)

  • qwen-omni 後端必須把參考文件全文注入 prompt 作為術語上下文,且 --timeout 900 --max-tokens 8192(腳本已內置);api 後端中專用 ASR (如 mimo-asr)不吃文字 prompt,術語糾錯依賴 clean 階段對照文件校對。
  • whisper 只用於時間軸,其辨識文字一律丟棄(中文文字品質差,但時間戳精準)。
  • 對齊必須用拼音串全局對齊(同音字錯誤在拼音層自動消解);逐句貪心對齊會整體漂移。
  • 對齊品質:align 輸出 qual mean ≥0.75 屬正常;<0.6 時先查 whisper 語音覆蓋率 (見 references/troubleshooting.md)。
  • 長時 CPU 任務(whisper/render)注意宿主對後台任務的清理策略,必要時前台跑。
  • 網路限制:HuggingFace 需鏡像,腳本已內置 HF_ENDPOINT=hf-mirror.com 與 HF_HUB_DISABLE_XET=1,勿刪。

排障

見 references/troubleshooting.md:上傳超時、轉寫單長行、 對齊品質低、字體亂碼、渲染失敗等場景的處理。

相關技能