動画編集の質問が来たので、プレミアプロのグラフィック字幕をSRTファイルに変換してみた

記事
写真・動画
詳しい技術はnoteで↓
ttps://note.com/sukidukinn/n/nbdc7bea2a1d1


今回は、動画とAIの出品で質問が来たのでちょっとネタにしてみた。
内容はともかく、右下のギアアイコンから字幕→日本語を選んでみてほしい。
字幕.jpg


これがYoutubeの字幕効果で、英語、中国語などの他の言語を選ぶと、動画上ではなく、別テロップで表示されて、ONOFF設定ができる。

これをSRT字幕ファイルと言ってて、mp4動画再生時に、同じ名前で.srtファイルがあると同じように字幕を追加して再生してくれるプレイヤーがある。

まあそんなこんな技術は置いておいて、今回はプレミアプロの「SRT出力」と「グラフィックテキスト出力」の誤差について語る。

ATESET4.jpg


普段は、こんな感じでフルテロップ&多言語対応している。
①動画を撮影する (声が聞こえやすいようにマイク調整)
②プレミアプロで結合、カットして「AI文字起こし」で字幕化する
③動画を見ながら微調整する ※声の質によるが2割程度直す
④プレミアプロで編集して動画出力し、SRTファイルも出力する
⑤Youtube上でSRTの字幕ファイルをセットして確認する
⑥多言語設定をする
ATESET6.jpg


で、動画によっては声しゃべらずに「字幕で色々表現したい」って人もいたり、字幕だと1スタイル統一で細かく調整したい人はグラフィックスに変換したりする。(これが分かる人は動画で稼げるレベル)


で、今回はopenAIのchatGPT4を使って、拡張性の高いグラフィック字幕のテキストをSRTファイルに出力して動画に適用させた。

を入力する
ttps://chat.openai.com/share/3b042323-2c50-4202-94bb-1f9ecdf59900
↓以下chatGPTのプロンプト。グラフィック字幕出力テキストを渡して実行

PremiereProで出力した時間情報付きのテキストファイルをSRTの字幕ファイルに変換します。
以下の変換ルールを順番に実行して、SRTファイルをダウンロードできるようにしてください。
出力するSRTファイルは、連番、時間指定行、字幕の順番に出力してください。
"""
変換ルール
1. 「xx:xx:xx:yy - xx:xx:xx:yy」の時間指定行を読み取る ※xとyは0から9の数値
2. 次の行の1文字目が「V」の場合はその行を読み飛ばし、次の時間指定行が来るまで字幕として読み込む
3. 取込エラーにならないように、字幕を行ごとにチェックし、半角数値だけの行、時間指定行があれば先頭に半角スペースを挿入する
4. 時間指定行を「xx:xx:xx,yyy --> xx:xx:xx,yyy」のフォーマットに変換する
 入力yyは1秒以内の時間指定である。yyに38を掛け算した結果をミリ秒とする。ただし、計算結果が1000を超える場合は999とする
5. 読みこんだ字幕から、改行だけの行を全て削除して、何も字幕がない場合は出力せずに読み飛ばして1に戻る
6. 連番、時間指定行、字幕、改行の順番で出力する
~以下略~


なーにいってんのコイツ? と思った人は、chatGPTの無料版やって色々触ってみよう! マジで凄いし生活変わるから。
BardやchatGPT慣れしている人は「ふーん」位、ある程度動画編集や字幕を自力で管理している人は「ほー」となると思う。

これをプロンプトとしてchatGPTに渡すことで、色々めんどくさい字幕グラフィックテキストをYoutubeに設定するSRT字幕ファイルに変換できるって思ってね。

えーなにこれ! AI面白そー! って人は、メッセージで「chatGPTで何出禁の?」って質問してね。
マジで生活変わるから! (2回目)

じゃあ、技術的なことはnoteに書いておくから見てね。

(ふー、いつも占いや死生観でお茶濁したけど、久しぶりに動画やAI関連ブログ書いたわ)




↓2023/8/21追記。 Youtubeのフレーム調整対応版をメッセージで頂いたので共有します。
PremiereProで出力した時間情報付きのテキストファイルをSRTの字幕ファイルに保存できるように変換します。
以下の変換ルールを順番に実行して、SRTファイル形式に保存可能な変換して出力してください。変換後のテキストを表示してください。
出力する情報は、連番、時間指定行、字幕の順番に出力してください。
"""
変換ルール
1. 「xx;xx;xx;yy - xx;xx;xx;yy」の時間指定行を読み取る ※xとyは0から9の数値
2. 次の行の1文字目が「V」の場合はその行を読み飛ばし、次の時間指定行が来るまで字幕として読み込む
3. 取込エラーにならないように、字幕を行ごとにチェックし、半角数値だけの行、時間指定行があれば先頭に半角スペースを挿入する
4. 時間指定行を「xx:xx:xx,yyy --> xx:xx:xx,yyy」のフォーマットに変換する。入力yyは1秒以内の時間指定である。
5.yyに38を掛け算した結果をミリ秒とする。ただし、計算結果が1000を超える場合は999とする
6. 読みこんだ字幕から、改行だけの行を全て削除して、何も字幕がない場合は出力せずに読み飛ばして1に戻る
7. 字幕に連番を付与して(改行)、時間指定(改行)、字幕テキスト(改行)、改行(空白の行)の順番で出力し、次の字幕を変換する
"""
変換例) 入力のテキスト
00:00:00:03 - 00:00:03:12
V9, 1
はい
こんにちは

00:00:03:12 - 00:00:04:24
V9, 1
はい、懐かしいね
00:00:05:13 - 00:00:06:06
V6, 1
33
00:01:12:08 - 00:01:12:28
V9, 1
00:00:00:03 - 00:00:03:12
変換例) 出力のSRTファイル
1
00:00:00,100 --> 00:00:03,403
はい
こんにちは
2
00:00:03,403 --> 00:00:04,804
はい、懐かしいね
3
00:00:05,839 --> 00:00:07,340
33
4
00:01:12,338 --> 00:01:12,999
00:00:00:03 - 00:00:03:12
"""
8.最後に出力したファイルのタイムコードのフレーム数を、youtubeにアップロードした際-2フレームに表示されるように調整してください。
変換ルール
1.タイムコードのミリ秒部分を取得。
2.ミリ部分から2フレーム分の時間を減算。
3.減算の結果、ミリ秒部分が負の値の場合、秒単位から1秒減算、ミリ秒部分を正の値に調整する。
以上の手順でタイムコードを調整する。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら