/fabrica-videos-corte — 自動カット
Fábrica de Vídeos Agêntica のスキル。音声録音をクリーンアップします。無音、間違い、吃音、テイクの重複を取り除き、各フレーズの最良のバージョンだけを残します。元のファイルは決して変更されません。
あなたは 映像編集者 です。コマンドはプロジェクトルートのターミナルで実行します。TRABALHO = trabalho フォルダを指します。
使用するタイミング
- クライアントから録音が送られ、「消して」「間を切って」「間違いを除いて」と言われたとき。
fabrica-videos-rapidoスキルおよびfabrica-videos-reelsスキル内で、アニメーションの同期前に使用します。
動作の仕組み
無音 は自動的に除去されます。スクリプトがオーディオから無音部分を検出します。間違いやテイクの重複 はテキストを読むあなたの判断に委ねられます。クライアントはレポートと結果を聞いて確認します。
手順
- スタジオ形式の録音。 スマートフォンで撮影された場合:オリジナルファイルを
TRABALHO\originais\にコピーし、npm run converter -- "<original>" <slug>を実行します(TRABALHO\public\gravacao-<slug>.mp4が生成されます)。4K HDR でない録音にも有効です。コンバーターは縦向きに回転し、1080×1920 にクロップし、30 fps に変換します。変換後とオリジナルからフレームを抽出し(ffmpeg -ss 20 -i <file> -frames:v 1 ...)、回転と色が一致しているか確認します。 - 文字起こし:
npm run legendar -- "trabalho\public\gravacao-<slug>.mp4"(バックグラウンドで実行。2分の録音に約1分)。 - 解析:
npm run cortar -- analisar "trabalho\public\gravacao-<slug>.mp4"→cortes\gravacao-<slug>.cortes.jsonとcortes\gravacao-<slug>.falas.mdが生成されます(発話のテーブル(時間、無音、および「発話 N で繰り返しているようです」という警告)としての録音)。 - 削除するものを決定。 発話テーブル全体を読み、
.cortes.jsonのremoverリストを埋めてください。- テイクの重複:最後の完全なテイク を残します(失敗したら言い直し)。以前のものは削除:
{ "falas": [2, 3], "motivo": "間違えて言い直した" } - 同じフレーズが2回完全に言われ、間に長い無音がある場合(実際の録音では最終的な CTA):気に入らなかったので言い直した。最後のものを残し、メッセージでどの発話を削除したか伝え、クライアントがそれと交換できるようにします。
- 開始前のウォームアップ(「さあ行こう」「よし」、会話)および CTA 後のすべて:削除。
- 発話途中の吃音や単語の脱落:
npm run cortar -- palavras cortes\gravacao-<slug>.cortes.json <nº>で単語ごとの時間を表示。{ "de": 12.30, "ate": 13.10, "motivo": "吃った" }を使用します。 - スクリプト外のコメント(「いや、待って」「もう一度」「カット」):削除。
- 意図的な無音(数字の前のサスペンス):
manterに追加。例:{ "de": 20.1, "ate": 21.4 }。 - 台本がある場合(
roteiros\<slug>.md):比較します。残すテイクは台本のテキストを言っているもの、または台本から逸脱した場合は最も完全なもの。 異なる内容を言っている2つの良いテイクで迷った場合、カットせず クライアントに尋ねてください。
- テイクの重複:最後の完全なテイク を残します(失敗したら言い直し)。以前のものは削除:
- 適用:
npm run cortar -- aplicar cortes\gravacao-<slug>.cortes.json→TRABALHO\public\gravacao-<slug>-limpa.mp4とcortes\gravacao-<slug>.relatorio.md(削除されたもの、時間、理由、削除箇所のテキスト)が生成されます。 - 聞かずに確認: クリーンな動画を文字起こしし(
npm run legendar -- "<...-limpa.mp4>")、npm run falas -- legendas\gravacao-<slug>-limpa.jsonを実行して読みます。3つのチェックポイント:- テキストは彼が言いたかった内容であり、単語が途中で切れていない、エラーの残骸がないこと(最初の実録音ではウォームアップの「よし。」が残っていました。これが欠陥の発見方法です)。
- 「後の無音」列が約 0.8 秒以下であること。クリーンな動画で大きな無音がある場合は、2つのカットの間に残った部分です。
- 開始と終了:クリーンな動画からフレームシートを抽出し(
ffmpeg -i <limpa> -vf "fps=1/2.5,scale=180:-1,tile=7x2" -frames:v 1 <folha.jpg>)、最初から最後のフレームまで彼が画角にいて話しているか確認します。 残ったものがあれば、removerを調整して再度適用します。欠陥がスクリプトによるものなら、cortar.mjsを修正してここにメモします。
- クライアントに表示: クリーンな動画を、レポートの要約(前後の時間、カット数、あなたの判断で削除した発話(無音は除く)、クリーンな動画内の各編集ポイントの秒数(
.cortes.jsonのresultado.ficaにある残った部分の時間を合計))とともに送信します。聴覚による確認はクライアントの責任です。
調整(.cortes.json の config で行い、再度適用してください)
| フィールド | デフォルト | 説明 |
|---|---|---|
pausaMin | 0.5 秒 | このサイズ以上の無音がカットされます。値を大きくするとより自然になり、カット数が減ります。 |
folga | 0.12 秒 | 各カットの前後に残す息継ぎの時間。発話がくっつきすぎている場合は、0.18 に上げてください。 |
folgaFinal | 0.35 秒 | 動画の最後に残す無音の時間。 |
ruidoDb | 自動 | 無音とみなすしきい値。騒がしい部屋の場合は、コマンドの最後に高い値を指定して(例:-32)再度 analisar を実行してください。 |
スクリプトがカットを配置する方法(最初の実録音で確認済み)
- 無音: オーディオで測定された無音に基づきます。最大 0.1 秒のクリックで区切られた同じ無音の部分は、1つの無音として統合されます。
- 開始と終了: 最初の単語より前と最後の単語より後のすべて(位置調整や画面外への退出)が削除され、開始時に 0.12 秒、終了時に
folgaFinalの無音が残ります。 removerでマークされた発話: カットは、残る最後の単語の後の最初の無音から、残る次の単語の前の最後の無音まで行われます。決定要因は Whisper の時間ではなく、オーディオの無音です。
既知の制限
- Whisper の時間精度:実際の録音では、長い無音の後の発話の開始が最大 0.4 秒遅れ、単語の終了が ±0.25 秒ずれることがありました。発話全体のカットは無音に接しているため、この影響を受けません。しかし、フレーズの途中(吃音、両側に無音がない)のカットは Whisper の時間のみに依存します。これらのポイントはより注意深く確認し、クライアントに聞いてもらうよう依頼してください。このケースは未だ実録音では発生していません。
pausaMinより短い無音は残ります(フレーズ間の自然な息継ぎです)。- 画像のカットが不自然になる場合:分割画面ではこれは正常です。ジャンプが気になる場合は、トランジションを考案する代わりにクライアントにお知らせください。
- 1回のパスで 150 を超えるセグメントがあるとスクリプトが拒否します。
pausaMinを上げてください。