字幕スタイル方案 / 静的フレーム / 比較サンプル
0. まず調査、それから提案
女性アイドルグループ PV 字幕の公開資料まとめ(2024 KCI 論文 + K-pop Y2K Seoul スタイルガイド):
- Graphic グラフィック強調:太細コントラストが大きく不規則な、装飾的な大きな文字(Blackpink / XG ポスター系);
- Mix & Match 混植:セリフ + サンセリフ + 圧縮書体 + イタリック混在、雑誌編集感;
- Minimalism ミニマル:クリーンなサンセリフ、装飾なし、余白を活かし、ビートに合わせて出現(NewJeans/aespa kinetic typography);
- Futurism 未来感:デジタルサンセリフ + glitch / RGB ずれ / 走査線;
- Y2K クローム文字 + ステッカー:chrome bubble lettering、キャンディカラー(ホットピンク + アクア)、ステッカーコラージュ、星のキラキラ;
- 手書き日記風:マーカーペン/蛍光ペン + 付箋 + 落書き(NewJeans 青春感)。
1. 本編適用可能な6スタイル(S1–S6)
| コード | スタイル | キーエレメント | 適した箇所 |
|---|---|---|---|
| S1 | Y2K クローム文字 + ステッカー | Bungee クロームグラデーション + ピンクバッジ + 星 | 最も「アイドルっぽい」、ピンク/水色を紫ピンクに変更可 |
| S2 | ミニマル動的タイポグラフィ | Anton 白色大文字、ずれ、細線、Silkscreen 小文字 | 正規歌詞版、最も安定、背景を邪魔しない |
| S3 | グリッチ未来感 | RubikGlitch + Anton、RGB ずれ、走査線、HUD コーナー | ブレイク / トランジション |
| S4 | 混植雑誌感 | Georgia Italic × Bebas Neue × Archivo Black、マスキングテープ、GO! カラーブロック、付箋 | 青春/雑誌感、段落トランジション |
| S5 | グラフィック強調 | Anton 巨大文字 + 白色ステッカー縁取り + ピンクずれ + ストライプ | サビの爆発的な短い単語 |
| S6 | 手書き/蛍光ペン | Permanent Marker + ピンク蛍光ブロック + 付箋 + ♥★ 矢印 | 間奏 / クローズアップのアクセント |
2. 静的フレームの作成(PIL + numpy、AI ライブラリ不使用)
スクリプト:
字幕\build\kpop_styles.py— S1–S6 の6枚の 2560×1080 静的稿(2025 年調査版)字幕\build\art_frames.py— 初期の6つのアート文字案(グリッチスライス/ネオン崩壊/立体巨大文字/コラージュ/輪郭エコー/縦書き)字幕\build\gothic_art.py— ゴシック全画面(ユーザーによって却下済み、保管のみ) フォントディレクトリ:字幕\build\fonts\(Anton, ArchivoBlack, BebasNeue, Bungee, Monoton, PermanentMarker, RubikGlitch, Silkscreen, PirataOne, UnifrakturCook)+C:\Windows\Fonts(Georgia / Georgia Italic / Microsoft YaHei / Impact / Arial Black)。 フォントダウンロード(Google Fonts GitHub raw が利用可能):
https://raw.githubusercontent.com/google/fonts/main/ofl/<family>/<File>.ttf
よく使うエフェクト関数(PIL/numpy)
- 文字レイヤー:1文字ずつ描画 + tracking(
text_img)、stroke_width/stroke_fillで縁取り; - クローム文字:alpha mask に縦方向の多段グラデーション(
gradient_fill)+ 斜めハイライトバンド; - ステッカー縁取り:alpha に
MaxFilter(3)で N 回膨張してから着色; - ずれ/グリッチ:RGB チャンネルをそれぞれ平行移動(
chroma)、横方向のランダム帯シフト(glitch_slices)、走査線; - 立体文字:同じ文字を複数回ずらして重ね描画、奥から手前へ濃い紫→ラベンダーグラデーション;
- ハーフトーン:グリッド状のドット重ね(
halftone); - 手書き蛍光ペン:文字の後ろに半透明の角丸矩形 +
GaussianBlur; - 付箋/マスキングテープ:半透明矩形 + 細線テクスチャ + 回転;
- 星/ハート:4 角星ポリゴン、二重円 + 三角ハート形;
- 粒状ノイズ:
np.random.normalで 1–3 レベルのバンディング防止ノイズ。
3. 動的サンプル(ASS アニメーション)
- 5 秒 3 スタイル:
字幕\build\styles_anim.py→公众号/输出/字幕风格参考/小样_S2_5s.mp4など; - S4/S6 30 秒:
字幕\输出\S4S6_30s\(各サブエージェントが1バージョンずつ作成、後述); - 炸裂 FLARE:
flare.py+flare_video.py;ネオン:neon_wide.py; - 完全ネオン回避:
avoid_side2.py。 - アニメーションパターン:打ち込み(
\fscx118→100+\t+\blur)、回転落下(\frz+\t)、スライドイン(\move)、フェードイン、カラーブロック拡大/スワイプアウト(\p1+\fscx)、付箋上昇、ビートパルス(0.447 秒ごとに 134BPM ビート)。
4. 比較納品仕様
- 単体サンプル:2560×1080 / 30fps / H.264 crf16 / faststart;30 秒 = 900 フレーム、5 秒 = 150 フレーム。
- 比較動画:上下
vstack、各クリップを 1280×540 に縮小、出力 1280×1080(または 3 クリップ → 1280×1620)、ASS でラベルを重ねる。 - キーフレームテーブル:2×2 / 2×3 / 3×3 グリッド、各セル 853×360 または 1280×540、スタイル名とタイムスタンプラベル付き。
- 説明 md:スタイル説明 + ファイル一覧 + タイムライン + 既知の制限。
- 例:
字幕\输出\字幕风格参考\(6 スタイル静的 + S2/S4/S6 5 秒比較)、字幕\输出\S4S6_30s\(2 バージョン 30 秒 + 比較)。
5. 並列サブエージェントワークフロー(「サブエージェントで別々に作る」)
- メインエージェントが共有ベースビデオを準備(トリミング + 軽く暗くする)→
_base_30s.mp4;fonts/を出力ディレクトリにコピー;キュ―シート(相対時間)を作成。 - 各スタイル1つのサブエージェントに、プロンプトに以下を必ず含める:
- ベースビデオの絶対パス、出力ディレクトリ、出力ファイル名(
S4_30s.mp4/S6_30s.mp4); - フォントディレクトリ、ffmpeg パス、ASS ハードルール(時刻形式、Style 色値に末尾 & なし、fontsdir は相対パス、ASCII ファイル名);
- 各行のタイムライン(8 行)+ スタイル説明 + 「中国語禁止 / 顔を隠さない」制約;
- 自己チェック条件(ffprobe で 30 秒確認、フレーム抜き出しで文字確認、中国語なし、顔がきれい)。
- ベースビデオの絶対パス、出力ディレクトリ、出力ファイル名(
- サブエージェントは自分のプレフィックスのファイルのみ書き込み、相互に上書きしない;完了後、配置/動き/学んだ教訓を報告。
- メインエージェントが収集後:
s4s6_compare.pyで比較動画 + キーフレームテーブル + 統一説明 md を合成;さらに自分でフレーム抜き出しをして検収。
6. 選定提案(紫ピンクネオンステージ + 翼のあるキャラクター)
- 最も安定:S2 ミニマル動的タイポグラフィ;
- 最もアイドルらしい:S1 Y2K クローム文字(色を紫ピンクテーマに変更);
- 段落トランジション:S4 混植;爆発ポイント:S5;間奏/クローズアップ:S6;ブレイク:S3。
- ユーザーが明確に却下したもの:ゴシック全画面、血赤色配色。ゴシック方向は再度提案しない。
7. 検収リスト
- 静的フレームは 2560×1080、中国語の誤字なし
- 動的サンプルの ffprobe 時間が正しい(5.000/30.000)
- フレーム抜き出しで字幕出現を確認、顔を隠していない、中国語なし
- 比較動画 + キーフレームテーブル + 説明 md が揃っている
- スタイル名/ファイル命名が統一されている(
S4_30s.mp4、对比_S4S6_30s.mp4)