Ra Audio To Subtitles
Generate production subtitle artifacts from the final narration audio or final merged...
Install
npx skills add Pluviobyte/rnskill --skill ra-audio-to-subtitles -g -a claude-code -y- Repository
- Pluviobyte/rnskill1.7k
- Category
- Media
- Updated
- 1mo ago
- License
- See repository
- Context cost
- Lightabout 980 tokens
- Runs scripts
- Yes, review before use
What it does
Generate production subtitle artifacts from the final narration audio or final merged video using Volcengine Doubao ASR word timestamps. Use for local IndexTTS2 videos, Xiaohei page videos, talking-head delivery subtitles, SRT/VTT export, or whenever subtitle timing must match the final audio. Do not use script-length interpolation for final deliverables.
真实时间戳字幕
Use the final audio stream as the only timing source. Never estimate final subtitle timing from character count, scene duration, TTS segment duration, or fixed delays.
Required workflow
- Finish and concatenate narration first. If the user recorded or merged a video, use that final merged media instead.
- Run
scripts/generate_subtitles.pyagainst the final media and the exact narration script. - Inspect phrase segmentation. Keep English product/model tokens intact,
merge isolated one-word fragments, and place connectors such as
比如说,但是, and只是with the phrase they introduce. - Render captions from
captions.json; exportcaptions.srtfor Bilibili, YouTube, editing software, and archive. - Require
caption-qc.jsonto reportstatus: passbefore final render or delivery. The gate includes alignment, overlap, fragments, connector splits, caption duration, and reading speed. - If ASR fails or alignment coverage is below the gate, stop. A character- count estimate may be used only for an explicitly labeled scratch preview.
Commands
Project with narration_segments.json:
python3 .claude/skills/ra-audio-to-subtitles/scripts/generate_subtitles.py \
<project>/media/final-voiceover.mp3 \
--script <project>/narration_segments.json \
--out-dir <project>/media/captions
Recorded or merged video with a Markdown handoff containing - 口播: lines:
python3 .claude/skills/ra-audio-to-subtitles/scripts/generate_subtitles.py \
<project>/merged.mp4 \
--script <project>/handoff.md \
--out-dir <project>/media/captions
Health check:
python3 .claude/skills/ra-audio-to-subtitles/scripts/generate_subtitles.py --doctor
Offline regression test with an existing Volcengine response:
python3 .claude/skills/ra-audio-to-subtitles/scripts/generate_subtitles.py \
<audio> --script <script> --asr-result <volcengine-result.json> \
--out-dir <output>


