アセンブリ編集
アセンブリは、会話全体を順番に、適切なカメラで適切な話者を映したものです。まだ何もカットされていません。これはラフカット(クリーンアップ)の基盤となる安全なベースであり、人間が最初にレビューするものです。
ave plan-cuts <episode> # ショット/リバースショット計画 -> work/cutlist.json (スキル: ave-rough-cut のテイストノート参照)
ave assemble <episode> # -> edits/assembly.vN.json (EditDoc; docs/superpowers/specs 参照)
ave render <episode> --stage assembly --preset proxy # クイック540pルック、オプション
ave handoff <episode> --stage assembly # 人間が使用するためにResolveに配置 (スキル: ave-resolve-handoff)
--canvas 1920x1080(デフォルト)で出力サイズを設定します。ソースはどのサイズでもレターボックスで拡大縮小され、歪むことはありません。
セッションと除外領域(1台のレコーダーでの複数テイク)
エピソード時間はレコーダーのタイムラインです。episode.json がセッションにカメラを割り当てると、各セッションは個別に計画およびアセンブルされます。
ave plan-cuts <episode> # すべてのセッションを計画 -> work/cutlist.s1.json, cutlist.s2.json (または --session s1 で1つのみ)
ave assemble <episode> # セッションごとに1つの名前付き編集: edits/assembly.s1.vN.json, assembly.s2.vN.json (1つのみの場合は --session s1)
ave assemble <episode> --combined # セッションを結合し、カバーされていないギャップを削除 -> 名前なし edits/assembly.vN.json
ave cleanup <ep> --name s1 ; ave final <ep> --name s1 ; ave render <ep> --name s1 ; ave handoff <ep> --stage assembly --name s1
セッションのアセンブリは、そのカメラが存在するスパンのみをカバーします。カメラカバレッジ(ドリフトを含む)の和集合を、オーディオとトランスクリプトにクリップしたものです。リードイン、セッション間のデッドスペース、テールは除外され、エラーにはなりません。カットリストとEditDocはこれらをリストします(regions、excluded)。e0 はレコーダー時間を保持するため、キャプションとクリーンアップは引き続き一致します。excluded を既知の情報(「4.3秒のリードイン、84.2秒のデッドスペース、3.2秒のテール」)と照らし合わせて確認してください。カメラに映っている人物が話しているにもかかわらず除外領域にある場合は、同期の問題を意味し、デッドスペースではありません。セッション内の穴(一方のカメラがもう一方より先に停止した場合)も同様にスキップされます。
シングルセッションのエピソードは変更されません。フラグも名前もなく、1つの assembly.vN.json のみです。ave status または ave resume で各セッションの段階をリストします。すべてのセッションがその段階を終えると、段階は完了と見なされます。
「実験的」またはその他の理由で異なるセッションは、人間が判断します。それを独自のタイムラインとして保持し、結合カットに加えるかどうかは人間が決定します。
トリム: 実際の開始と終了(クリーンアップ前のチェックポイント)
録画は準備の会話(「テイクワン…録画中…聞こえますか」)で始まり、停止についての会話で終わります。セッションのアセンブリは最初のカメラフレームから始まります。クリーンアップの前に、人間と実際のイン/アウトを見つけてください。
ave plan-cuts <ep> # トリムスキャンはカットリストのセッションスパンを使用します
ave trim suggest <ep> [--session s1] # タイムスタンプ付きの証拠行 + 提案されたイン/アウトと信頼度。決して適用しません
ave trim set <ep> s1 --in 188.9 --out 7022.8 # 人間の決定を episode.json の `trim` に記録します(エピソード秒; セッションのないエピソードの場合は `main`)
ave assemble <ep> --session s1 # トリムを尊重: より短いスパン、カットされた部分は `excluded` に追加され、依然として検証されます
suggest は、最初と最後の scan_minutes(6)内で、config/trim.default.yaml のフレーズ(スレート: 「テイクワン」、「録画中」、「テスティング」、「マイクを動かしてください」; ウェルカム; サインオフ; 「録画停止」、「終了しました」)と、episode.json の trim_hints: {"welcome": ["これはロングテーブルです"], "signoff": [...]} のショー固有の行を探します。証拠を読み、提案された時間に聞き、人間のために停止します。単なる「ウェルカム」はリハーサルのジョークであることが多く(信頼度0.4)、サインオフの後には残す価値のある雑談があるかもしれません。静かな開始にはトリムがまったく不要な場合もあります。ave resume は、誰も承認していない提案を未解決の質問としてリストします。トリムを変更するには、ave assemble を再実行し、次に ave cleanup を実行します(新しいバージョン; 何も上書きされません)。ave trim clear <ep> s1 でそれを忘れます。
引き渡す前の確認
ave status <ep>:assembly完了、バージョン一覧表示。ave assembleを再実行すると、次のバージョンが書き込まれます。決して上書きしません。- EditDocのサマリーを読む: ビデオセグメント数、トランスクリプトの長さと等しい時間(またはセッションの場合はその
regionsの合計)、両方のカメラが使用されている。 reasonのフォールバック理由(「camera not recording」)は、カメラの開始が遅れたことを意味します。人間に伝えてください。- 検証:
python -c "from ave import editdoc; print(editdoc.validate(editdoc.load('edits/assembly.v1.json')))"で[]が出力される必要があります。
チェックポイント
構築したもの(長さ、ショット、どのカメラがどの話者をカバーしているか)を人間に伝え、Resolveでレビューするよう依頼してください。まだ何もクリーンアップされていないことを明確に述べてください。確認を得た後でのみ、ave-cleanup に進んでください。