缅甸语电影配音 — 代理技能
两个用于从电影构建缅甸语配音(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 (无手动映射)
└── AGENT 填充 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=...,已添加到.gitignore)。
整部电影一条命令:
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。