スライドからのコース/トレーニング動画作成
最初に video-studio を読んでください。このパイプラインは、PDFデッキから22分のマーケティングコース動画(依頼内容は「普通の編集、重いモーショングラフィックスは不要」、インド英語男性音声)を構築した実績があります。以下の構造で再構築します:edit/course.py、render.py、mix.py。
パイプライン
- スライド → 画像:
pdftoppm -r 200 -png raw/deck.pdf work/slides/p(PPTX/Keynoteは事前にPDFにエクスポート)。すべてのページを確認します。 ビルドアップの場合、各パーツ(タイトル、箇条書き1..n、図表、画像)の領域を——画像を見て目視で、またはPILの行/列投影で非背景ピクセルを分析して——特定し、スライドごとに保存します。 - スクリプト(
edit/course.py): スライドごとに:vo段落 +reveals[{box:[x,y,w,h], cue:"話し言葉"}] + オプションのzoomボックス。 スライドを読み上げるのではなく、教えるように書きます:レッスンの導入(なぜ重要か)、1段落1アイデア、具体例、各モジュールの最後に要約、約140〜150単語/分。必要に応じてヒングリッシュ。VO(音声合成)の前にスクリプトを表示して承認を得てください(クレジットを消費するため)。 - 予算チェック:
eleven.py credits;22分のコースは約18,000文字——Starterプランは月40,000文字なので、同じ月に完全な再音声合成は難しい場合があります。 ユーザーにコストを伝えてください。タイミングテストのみ、macOSsayによる無料スクラッチVOを使用します。 - VO: 段落ごとに
eleven.py tts "<テキスト>" work/vo/<スライド>_<n>.mp3 --voice 05QRrdNgiglhuYOaTQvw --speed 1.05 --words work/vo/<スライド>_<n>.json(プレミアム、承認済み)。テキストでキャッシュされるため、1段落を編集してもその段落だけが再課金されます。発音修正はテキスト内でスペルを変えて対応します。 段落間0.35秒、スライド間0.8秒で連結;タイムラインJSON(スライド開始/終了、キュー単語の時間)を構築します。 - レンダリング(
edit/render.py): 各スライドはクリーンな状態(タイトルのみ)から始まり、各パーツがキューワードに合わせてフェードイン/スライドイン;スローなイージングカメラプッシュ(1.00→1.04)、密集したスライドでは説明中のパーツにズームイン;スライド間のプッシュ/スライドトランジション(0.4秒)、左上にチャプターラベル、細いプログレスバー、スライド番号。鮮明に:200dpiのPNGから1920x1080でレンダリング、ぼやけなし。 低優先度、モジュールごとにチャンク処理して、中断されたレンダリングも再開可能。 - ミキシング(
edit/mix.py): ボイスチェーン(ハイパス80、軽いコンプレッション)、BGM −20 dB、サイドチェーンダッキング(assets/music/*underscore*)、 リビール時にソフトな効果音(ポップ/スウィッシュ −14 dB)、トランジション時に効果音(ウーッシュ −12 dB)——リール動画より軽め。マスター −14 LUFS、--tp -2.0。 - プレビュー → 承認 → フル: 最初のモジュールを
--scale 0.5でプレビュー、フィードバックを得てから全体を実行。qc.py --platform youtube。 - パッケージ: YouTubeチャプター(スライドグループ/モジュールごと)、レッスン概要付き説明文、コースプラットフォーム用のモジュール別ファイル(
exports/vN_module_<n>_<slug>.mp4)、サムネイル(thumbnail-designer)、オプションのSRT字幕(captions_ass.py --style cleanまたはVOワードから生成)。
ルール
- 映像は音声に従う:言及される前に何も表示されない;言及されずに重要なものが表示されることはない。
- デッキ独自のデザインを維持する(クライアントのブランド);追加するのはカメラ、リビール、チャプターラベル、プログレスバーのみ。
- 数字や主張はデッキ/ユーザーからのみ。画面上のブランド名は、音声のためにスペルを変えた場合でも正しく表記する。
- ユーザーが寝てしまい承認を放棄した場合でも、プレビューとメモを残しておき、朝に確認できるようにする。