Communitygithub.com

AungMinThu1722/subtitle-voiceover

將電影轉換為緬甸語配音:包含說話者辨識的逐字稿、語音分配、編輯器就緒的字幕與無音樂的語音音軌。附帶技能打造工具包。

subtitle-voiceover 是什麼?

此技能為 Claude Code 等 AI 代理提供端到端的緬甸語電影配音流程。它會自動處理音訊或影片檔案:先透過 AssemblyAI 進行說話者辨識轉錄,再利用自相關分析測量每位說話者的音高,自動為女性角色分配緬甸語女性語音(my-MM-NilarNeural),為男性角色分配男性語音(my-MM-ThihaNeural),無需手動映射。AI 代理的唯一任務是將含有說話者標籤的 SRT 字幕翻譯成緬甸語,並可選擇性地撰寫開場鉤子。其餘所有步驟(如時間碼處理、語音合成、品質檢查、與剪接軟體匯出的 FCPXML/EDL 檔案)均由預先寫好的 Python 指令碼完成,確保時間碼不會被意外修改。輸出包含無音樂的配音音軌、兩種格式的字幕(含說話者標籤與純字幕)、以及可直接匯入 Premiere Pro、DaVinci Resolve 或 Final Cut Pro 的編輯就緒檔案。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add AungMinThu1722/subtitle-voiceover

在你喜歡的 AI 中提問

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

說明文件

緬甸電影配音 — 代理技能

兩個代理技能,用於從電影建立緬甸語配音(dub),以及建立類似技能。

資料夾說明
subtitle-voiceover/技能:將影片或音訊檔案轉換為緬甸語配音,包含說話者偵測、代理撰寫的開場鉤子、編輯器就緒的字幕對,以及自動清理。
skill-forge/工具:建立、驗證和打包 SKILL.md 技能——並使此儲存庫本身的兩個技能符合規格。

subtitle-voiceover 是做什麼的?

整個流程由 Python 指令碼端到端驅動。代理只做一件事:將含有說話者標籤的 SRT 翻譯成緬甸語——外加一行可選的開場鉤子。 流程中的其他部分不會要求模型執行操作。

movie.mp4 ──transcribe.py──▶ transcript.json ──srt_from_transcript.py──▶ movie.en.srt
   └─ detect_voices.py 測量每位說話者的音高 ──▶ voices.detected.yaml  (無需手動對應)
        └── 代理填寫 translation.my.json (+ hook.text) ──apply_translation.py──▶ movie.my.srt
             └── render_voiceover.py ──▶ voiceover.mp3  (影片長度的語音音軌,無音樂)
                  └── 檢查、FCPXML/EDL 交接、cleanup.py

透過將資料夾複製到代理的技能目錄,或是解壓縮打包的壓縮檔來安裝:

cp -r subtitle-voiceover ~/.claude/skills/                    # 從克隆的儲存庫
unzip subtitle-voiceover/packages/subtitle-voiceover.skill -d ~/.claude/skills/

需求:python3 -m pip install --user edge-tts pyyaml、ffmpeg + ffprobe,以及在 subtitle-voiceover/.env 中的 AssemblyAI 金鑰(ASSEMBLYAI_API_KEY=...,已加入 git 忽略清單)。

只需一條命令即可處理整部電影:

python3 scripts/run_pipeline.py night-shift.mp4 --work-dir work --config voiceover.config.yaml \
    --language en --speakers-expected 2 --hook --stages python
# 代理填寫 work/translation.my.json(每個字幕的文本,加上 hook.text)
python3 scripts/run_pipeline.py --work-dir work --config voiceover.config.yaml --stages post

輸出內容:voiceover.mp3(配音語音音軌,從 00:00:00 開始,填充至影片長度,無音樂)、movie.my.srt(含說話者標籤)和 movie.my.subs.srt(純字幕軌)、voiceover.fcpxml / .edl / .cue-list.csv、JSON 品質報告——以及包含工作檔案的 work/ 目錄(之後會被清理)。編輯者可在語音音軌下方鋪設自己的配樂;字幕可直接放入 Premiere Pro、DaVinci Resolve 或 Final Cut Pro 的字幕軌道。

重點特色:

  • 自動語音分配。 從電影本身的音訊測量說話者音高(自相關法,並有純 Python 備援方案)——女性角色獲得 my-MM-NilarNeural,男性角色獲得 my-MM-ThihaNeural。無需手動對應;設定檔仍可指定特定說話者。
  • 時間碼由指令碼掌控。 翻譯過程中永遠不會看到可寫入的時間碼;合併時會重新附加原始時間碼,並回報任何被捨棄的編輯。
  • 開場鉤子。 前 5–10 秒可以被一句代理撰寫、使用電影本身語音風格的台詞取代,與原始對話無縫融合,並在 references/hook-guide.md 中有實作範例。
  • 執行期間不會產生任何內容。 每個階段都是預先寫好的指令碼,接受標誌參數;技能本身附帶測試套件、測試用影片以及兩個完整的錄製執行範例,位於 demo-film/。

請參閱 subtitle-voiceover/README.md 取得完整逐步解說,以及 SKILL.md 了解代理讀取的內容。

skill-forge

建立技能目錄骨架,檢查 SKILL.md 是否符合開放格式(名稱/描述規則、漸進式揭露、捆綁檔案引用、行數限制),並將技能打包成可分發的 .skill 壓縮檔,同時避免洩漏機密。

python3 skill-forge/scripts/validate_skill.py subtitle-voiceover --strict
python3 skill-forge/scripts/package_skill.py subtitle-voiceover --out subtitle-voiceover/packages

測試

bash skill-forge/tests/run_tests.sh              # 驗證器/打包器套件(離線,<1 秒)
cd subtitle-voiceover && bash tests/run_tests.sh # 管線煙霧測試(實際 edge-tts 呼叫)

兩個套件都已連接到 CI(ci/github-actions-ci.yml——將其移至 .github/workflows/ci.yml 即可啟用,請參閱該檔案開頭的說明);管線套件不使用 AssemblyAI 金鑰——它針對測試用逐字稿驅動實際指令碼。

儲存庫佈局

subtitle-voiceover/     技能(scripts/、references/、assets/、tests/、demo/、demo-film/、packages/)
skill-forge/            驗證與打包工具(scripts/、references/、assets/、tests/、packages/)
ci/github-actions-ci.yml  CI 定義(移至此 .github/workflows/ci.yml 以啟用)

授權條款

MIT——請參閱 LICENSE。

相關技能