버마 영화 음성 더빙 — 에이전트 스킬
영화로부터 버마어 음성 더빙(더빙)을 구축하고, 유사한 스킬을 만들기 위한 두 가지 에이전트 스킬입니다.
| 폴더 | 설명 |
|---|---|
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 참조.