ra-audio-to-subtitles について
ra-audio-to-subtitlesは、完成したナレーションまたは結合動画の音声タイムスタンプに合わせて、フレーズ単位の字幕を生成します。表示には元の台本を使い、同期と可読性の検査を納品条件とします。
主な機能
- 01台本文字を最終メディアの音声認識タイミングに同期
- 02フレーズ字幕と単語タイムスタンプを生成
- 03JSON、SRT、VTT形式の字幕を出力
- 04同期、重複、断片、読み上げ速度を検査
- 05納品前にQC合格を必須化
活用シーン
- 01完成したナレーションから字幕を作成
- 02録画または結合動画の最終音声に字幕を付与
- 03レンダリングや納品前に字幕タイミングを検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pluviobyte/ rnskill --skill ra-audio-to-subtitlesインストール後、Claude Code で/ra-audio-to-subtitlesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/artifact-contract.mdscripts/generate_subtitles.py詳細
実際のタイムスタンプ付き字幕
タイミングの唯一の基準として、最終音声ストリームを使用してください。文字数、シーンの長さ、TTS セグメントの長さ、固定の遅延から、最終字幕のタイミングを決して推定しないでください。
必須ワークフロー
- まずナレーションを完成させて結合してください。ユーザーが動画を録画または結合した場合は、代わりにその最終結合メディアを使用してください。
- 最終メディアと正確なナレーション原稿に対して、
scripts/generate_subtitles.pyを実行してください。 - フレーズの分割を確認してください。英語の製品名/モデル名のトークンはそのまま保持し、孤立した一語だけの断片は結合し、
比如说、但是、只是などの接続表現は、それらが導入するフレーズと一緒に配置してください。 captions.jsonから字幕をレンダリングし、Bilibili、YouTube、編集ソフト、アーカイブ用にcaptions.srtをエクスポートしてください。- 最終レンダリングまたは納品の前に、
caption-qc.jsonのstatus: passを必須としてください。このゲートには、アラインメント、重複、断片、接続表現の分割、字幕の表示時間、読字速度が含まれます。 - ASR に失敗した場合、またはアラインメントのカバー率がゲートを下回る場合は、処理を停止してください。文字数による推定は、明示的にスクラッチプレビューとラベル付けされた場合にのみ使用できます。
コマンド
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
- 口播: の行を含む Markdown の引き継ぎ資料がある、録画または結合済みの動画:
python3 .claude/skills/ra-audio-to-subtitles/scripts/generate_subtitles.py \
<project>/merged.mp4 \
--script <project>/handoff.md \
--out-dir <project>/media/captions
ヘルスチェック:
python3 .claude/skills/ra-audio-to-subtitles/scripts/generate_subtitles.py --doctor
既存の Volcengine レスポンスを使ったオフライン回帰テスト:
python3 .claude/skills/ra-audio-to-subtitles/scripts/generate_subtitles.py \
<audio> --script <script> --asr-result <volcengine-result.json> \
--out-dir <output>
出力要件
出力ディレクトリには次のファイルを含める必要があります。
asr-result.json:Volcengine の生レスポンスcaptions_words.json:単語/文字のタイムスタンプと検出された無音区間captions.json:HyperFrames または Remotion が使用するフレーズ字幕captions.srtおよびcaptions.vtt:汎用字幕ファイルcaption-qc.json:アラインメントのカバー率とタイミングの検証結果
別のレンダラーまたは納品チェックツールを統合する前に、references/artifact-contract.md をお読みください。
厳守事項
- MP4 で使用する最終音声を正確に文字起こししてください。以前のセグメント、下書き音声、またはトリミングが異なるファイルを文字起こししてはいけません。
- 表示には元のナレーション原稿を使用し、ASR はタイミングにのみ使用してください。これにより、名前、英語の用語、句読点、意図的な表現を保持できます。
- フレーズをグループ化する前に、元の原稿を ASR トークンにアラインしてください。文字数の合計に応じて境界をスケーリングしてはいけません。
- フレーズ字幕をデフォルトとしてください。単語のタイムスタンプはタイミングの基盤であり、カラオケのように一文字ずつ字幕を表示することを求めるものではありません。
Claude Maxのような英語名の意味のあるスペースは保持してください。ASCII の製品名/モデル名トークンを字幕間で分割してはいけません。- 0.5 秒未満の字幕、孤立した断片、分割された談話接続表現、12 単位/秒を超える読字速度は却下してください。9 単位/秒を超える速度はレビュー警告として扱ってください。
- 正規の字幕タイムラインは一つだけにしてください。シーンの切り替え、キーワードの表示、コンポーネントのキューは、そのタイムラインから字幕テキストまたはタイムスタンプを参照してください。
VOLCENGINE_API_KEYはワークスペースルートの.envまたは環境変数から取得します。これを成果物に表示したりコピーしたりしてはいけません。- デフォルトのリソース ID は
volc.seedasr.aucです。アカウントで別の有効なリソースを使用する場合に限り、VOLCENGINE_RESOURCE_IDで上書きしてください。 - 最終納品には、より厳しいプロジェクト要件が設定されていない限り、0.90 以上のアラインメントカバー率が必要です。これを下回る場合は警告ではなく失敗です。
コメント
Markdown 対応