name: subtitle-voiceover description: Film → burmesische Sprachsynchronisation: diarisierte Transkription, gemessene Sprecherzuweisung, editierfertige Untertitel und musikfreie Tonspur. Inklusive Skill-Forge-Paketierer.
Burmesische Film-Sprachsynchronisation – Agent Skills
Zwei Agent Skills zum Erstellen einer burmesischen Sprachsynchronisation (Dub) aus einem Film und zum Erstellen ähnlicher Skills.
| Ordner | Beschreibung |
|---|---|
subtitle-voiceover/ | Der Skill: Wandelt eine Video- oder Audiodatei in eine burmesische Sprachsynchronisation um, mit Sprechererkennung, einem vom Agent geschriebenen Eröffnungshook, einem editierfertigen Untertitelpaar und einer automatischen Bereinigung. |
skill-forge/ | Die Werkzeuge: Erstellt, validiert und paketiert SKILL.md-Skills – und hält die beiden eigenen Skills dieses Repositories spezifikationskonform. |
Was macht subtitle-voiceover?
Die Pipeline ist durchgehend als Python-Skript implementiert. Der Agent übernimmt genau eine Aufgabe: die Übersetzung des sprechergetaggten SRT ins Burmesische – plus eine optionale Zeile, den Eröffnungshook. Nichts anderes in der Pipeline fordert das Modell zum Handeln auf.
movie.mp4 ──transcribe.py──▶ transcript.json ──srt_from_transcript.py──▶ movie.en.srt
└─ detect_voices.py misst die Tonhöhe jedes Sprechers ──▶ voices.detected.yaml (keine manuelle Zuordnung)
└── AGENT füllt translation.my.json (+ hook.text) ──apply_translation.py──▶ movie.my.srt
└── render_voiceover.py ──▶ voiceover.mp3 (filmlange Tonspur, keine Musik)
└── Prüfungen, FCPXML/EDL-Übergabe, cleanup.py
Installieren durch Kopieren des Ordners in das Skills-Verzeichnis des Agents oder Entpacken des paketierten Archivs:
cp -r subtitle-voiceover ~/.claude/skills/ # aus einem Klon
unzip subtitle-voiceover/packages/subtitle-voiceover.skill -d ~/.claude/skills/
Voraussetzungen: python3 -m pip install --user edge-tts pyyaml, ffmpeg + ffprobe und ein AssemblyAI-
Schlüssel in subtitle-voiceover/.env (ASSEMBLYAI_API_KEY=..., git-ignoriert).
Ein Befehl für einen ganzen Film:
python3 scripts/run_pipeline.py night-shift.mp4 --work-dir work --config voiceover.config.yaml \
--language en --speakers-expected 2 --hook --stages python
# der Agent füllt work/translation.my.json (Text jedes Cues, plus hook.text)
python3 scripts/run_pipeline.py --work-dir work --config voiceover.config.yaml --stages post
Was herauskommt: voiceover.mp3 (die Sprachsynchronisations-Tonspur, beginnend bei 00:00:00, aufgefüllt auf die
Filmlänge, ohne Musik), movie.my.srt (Sprecherlabels) und movie.my.subs.srt (reine Untertitelspur),
voiceover.fcpxml / .edl / .cue-list.csv, JSON-Qualitätsberichte – und ein work/-Verzeichnis mit den
entfernten Arbeitsdateien. Der Editor legt seine eigene Musik unter die Tonspur; die Untertitel können direkt
in Premiere Pro, DaVinci Resolve oder Final Cut Pro auf eine Untertitelspur gelegt werden.
Highlights:
- Automatische Sprecherzuweisung. Die Tonhöhe jedes Sprechers wird aus der Originalaudio des Films gemessen
(Autokorrelation, mit einem Pure-Python-Fallback) – weibliche Charaktere erhalten
my-MM-NilarNeural, männliche Charakteremy-MM-ThihaNeural. Es wird nichts von Hand zugeordnet; die Konfiguration kann dennoch einen Sprecher festlegen. - Zeitstempel gehören den Skripten. Die Übersetzung sieht nie einen beschreibbaren Timecode; der Zusammenführende hängt die ursprünglichen wieder an und meldet alle Änderungen, die verworfen werden mussten.
- Eröffnungshook. Die ersten 5–10 Sekunden können durch eine vom Agent geschriebene Zeile in der eigenen Stimme
des Films ersetzt werden, die neben dem Originaldialog unauffällig ist, mit einem ausgearbeiteten Beispiel in
references/hook-guide.md. - Nichts wird während eines Durchlaufs generiert. Jede Stufe ist ein vorgefertigtes Skript mit Flags; der Skill
enthält eine eigene Testsuite, einen Demofilm und zwei vollständig aufgezeichnete Durchläufe im Ordner
demo-film/.
Siehe subtitle-voiceover/README.md für die vollständige Anleitung und
SKILL.md für das, was der Agent liest.
skill-forge
Erstellt ein Skill-Verzeichnis, prüft SKILL.md auf das offene Format (Name/Beschreibungsregeln,
progressive Offenlegung, referenzierte Dateien, Zeilenbudget) und paketiert einen Skill in ein verteilbares
.skill-Archiv, ohne Geheimnisse preiszugeben.
python3 skill-forge/scripts/validate_skill.py subtitle-voiceover --strict
python3 skill-forge/scripts/package_skill.py subtitle-voiceover --out subtitle-voiceover/packages
Tests
bash skill-forge/tests/run_tests.sh # Validator/Packager-Suite (offline, <1 s)
cd subtitle-voiceover && bash tests/run_tests.sh # Pipeline-Smoke-Tests (echte edge-tts-Aufrufe)
Beide Suites sind in CI eingebunden (ci/github-actions-ci.yml – verschieben Sie sie nach
.github/workflows/ci.yml, um sie zu aktivieren, siehe den Kopf dieser Datei); die Pipeline-Suite verwendet keinen
AssemblyAI-Schlüssel – sie treibt die echten Skripte mit einem Fixture-Transkript an.
Repository-Struktur
subtitle-voiceover/ der Skill (scripts/, references/, assets/, tests/, demo/, demo-film/, packages/)
skill-forge/ Validierungs- und Paketierungswerkzeuge (scripts/, references/, assets/, tests/, packages/)
ci/github-actions-ci.yml CI-Definition (nach .github/workflows/ci.yml verschieben, um zu aktivieren)
Lizenz
MIT – siehe LICENSE.