機能詳細

ご要望いただいた仕様を
1つずつ設計に落とし込みました

最新の追記仕様(一括処理・字幕自動同期・設定ファイル外部化・AI活用許可)をすべて踏まえた構成です。

入力処理:単発 + フォルダ一括処理

1本の台本を指定して単発実行する使い方に加え、フォルダ内に複数の台本を並べておけば自動で連続生成する一括処理にも対応します。

📁 一括処理対象フォルダの構成イメージ

scripts_queue/ ├─ 001_intro.txt ├─ 002_review.txt ├─ 003_qa_session.wav ← 音声入力もOK └─ 004_outro.txt output/ ├─ 001_intro.mp4 ├─ 002_review.mp4 ├─ 003_qa_session.mp4 └─ 004_outro.mp4

💻 一括実行時のログイメージ

run_batch.bat
[QUEUE] scripts_queue 内に 4件 検出 — 順次自動生成を開始します [1/4] 001_intro.txt -> output/001_intro.mp4 完了 [2/4] 002_review.txt -> output/002_review.mp4 完了 [3/4] 003_qa_session.wav 処理中...

音声認識&テロップ整形(Whisper API × Claude API)

Whisper APIでタイムスタンプ付き文字起こしを取得したあと、Claude APIが読みやすいテロップの形に自動で整えます。

Before(Whisperの生の書き起こし)

whisper_raw.json(抜粋)
// タイムスタンプ付き・句読点なし・改行なし
{"start": 12.4, "end": 16.8,
 "text": "えーとですね今日はチャンネル運営を劇的にラクにする方法をご紹介していきますそれではさっそく見ていきましょう"}

After(Claude APIで整形後)

telop_formatted.json(抜粋)
[
 {"t":12.4,"end":14.6,"line":"今日はチャンネル運営を"},
 {"t":14.6,"end":16.8,"line":"劇的にラクにする方法を"},
 {"t":16.8,"end":18.9,"line":"ご紹介していきます"},
 {"t":18.9,"end":21.0,"line":"それではさっそく見ていきましょう"}
]

フィラー除去・句読点の補完・1行あたりの最大文字数を、設定ファイルの値に応じてClaudeが自動調整します。

ナレーション音声生成(VOICEVOX ローカルAPI)

ローカルで起動している VOICEVOX (http://localhost:5021) に整形済みテキストを送信し、話者ごとのナレーションWAVを生成します。

POST http://localhost:5021/audio_query
{
  "text": "今日はチャンネル運営を...",
  "speaker": config.voicevox_speaker_id
}
→ audio_query を /synthesis に渡してWAVを取得
保存先: /work/audio/segment_003.wav
segment_003.wav
00:00:04.2

生成された音声の長さは次のFFmpeg合成ステップで字幕タイミングの基準になります

動画合成・字幕自動同期(FFmpeg)

ご要望いただいた「音声の長さ・発声タイミングに合わせてテロップ表示タイミングを自動で正確に同期」する部分の設計です。

各テロップ行の開始・終了秒を確定

Step2で整形したテロップ行に、対応する音声セグメントの開始/終了タイムスタンプを割り当てます。

ASSまたはSRT字幕ファイルを自動生成

フォント・サイズ・文字色・縁取り色・画面上の表示位置は設定ファイルの値からスタイルを自動反映します。

背景素材+音声+字幕をFFmpegで結合

指定の画像/ループ動画を背景に、生成したナレーション音声と字幕を1本のmp4として書き出します。

解像度は設定切替のみ

1920×1080(横型)/ 1080×1920(縦型)を config の一項目で切り替え可能にします。

ffmpeg command(イメージ)
ffmpeg -loop 1 -i bg.png -i narration_full.wav \ -vf "subtitles=telop.ass" -c:v libx264 -c:a aac \ -s 1920x1080 -shortest output/32boss_20260912.mp4 frame=18420 fps=60 time=00:12:18.30 speed=3.4x [OK] output/32boss_20260912.mp4 (10:32) 書き出し完了

ソースコードを触らず調整できる設定ファイル

APIキー・Claudeモデル名・テロップデザイン・背景素材パスはすべて config.json / .env 側で管理します。

.env
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxx
VOICEVOX_ENDPOINT=http://localhost:5021
config.json
{
  "claude_model": "claude-sonnet-5", // 新モデル登場時はここだけ変更
  "resolution": "1920x1080", // or "1080x1920"
  "telop": {
    "font": "Noto Sans JP Bold",
    "size": 54,
    "color": "#FFFFFF",
    "stroke_color": "#1A1428",
    "position": "bottom"
  },
  "background_path": "./assets/bg_default.png",
  "voicevox_speaker_id": 3
}

生成AIを活用した開発について

Claude Code / Cursor / ChatGPT等の活用を全面許可いただいている点、承知しております。未公開データ・認証キー等は取り扱いルールを遵守してお預かりします。

✓ Claude Code 活用OK ✓ Cursor 活用OK ✓ APIキーは.env管理・第三者共有なし ✓ テスト実費は見積りに明記して請求 ✓ モックデータでの動作確認を優先

実際の動作イメージをブラウザで確認できます

🎬 インタラクティブデモを試す