【Mac】「VTT字幕生成&かんたんエディタ」を作った(無料)。

1 はじめに 

今回の投稿は、前回の投稿ID-29651「VTT字幕の全自動生成」とペアになる投稿です。

以下のビデオは、

前回の投稿である動画音声ファイルからVTT字幕を生成するパートと、今回の投稿のメインであるエディタで編集するパートを一緒にしたものです。ご視聴ください。

字幕一覧(クリック)

(00:00:10) 全自動VTT字幕作成&エディター起動。
(00:00:16) このアプリケーションの操作をしてみます。
(00:00:25) フォルダの中から対象となるファイル、
(00:00:30) 動画または音声ファイルを見つけます。
(00:00:36) ここに用意してあります。
(00:00:40) mp4を用意してあります。
(00:00:44) このとき私は、
(00:00:48) 1080pの動画はちょっと重いので、
(00:00:53) 音質はそのままにして、
(00:00:56) 画質を360pに圧縮して、
(00:01:00) そういうファイルを生成しておきます。これですね。
(00:01:06) あえて字幕作成はこの360pの方を使います。
(00:01:13) そうすることで処理の負荷が軽くなって、
(00:01:17) エラーのリスクも減ります。
(00:01:21) それでは、このファイルの上で右クリックします。
(00:01:26) クイックアクション。
(00:01:29) それであらかじめ作ってある、
(00:01:34) 全自動VTT字幕作成&エディター起動、これを行います。
(00:01:41) するとターミナルが開いて、
(00:01:45) 字幕作成の作業が開始します。
(00:01:57) こんな形でどんどん進んでいきます。
(00:02:02) 今1/3って出てますけども、
(00:02:05) これは11分ぐらいの動画になるので、
(00:02:09) 動画を3つに分割して処理が進んでいきます。
(00:02:17) ご覧のように、まず今1/3ですね。1番目を実行してます。
(00:02:25) どんどん進んでいきますけども、今まだちょっと時間がかかってますね。
(00:02:31) それで今1/3が済んで、
(00:02:35) 次の2/3に入っています。
(00:02:45) こうしてターミナルを表示しておきますと、
(00:02:49) 進捗が分かるので便利ですね。
(00:02:53) もしエラーになった時は、
(00:02:57) この画面の文字列をコピーして、
(00:03:00) ご自身の生成AIにペーストして質問するか、
(00:03:06) あるいは私のimakat図書館のチャットに、
(00:03:11) ペーストして質問してもらえれば、解決に向かえると思います。
(00:03:18) 今2/3ですね。
(00:03:22) これで今2/3が終わって、
(00:03:26) 最後の3/3に入ってます。
(00:03:35) 今のところまでは順調に来てますね。
(00:03:41) そんな形で処理が進んでいきます。
(00:03:45) 今3/3もそろそろ終わろうとしています。
(00:03:58) はい。
(00:04:06) 最終的なVTTを結合し、
(00:04:10) 連番も再度振り付けて、
(00:04:14) それでファイルが完成いたしました。
(00:04:18) ここでVTTファイルが作られて保存されてます。
(00:04:26) 見てみます。
(00:04:29) 字幕VTTファイルと
(00:04:32) 字幕一覧テキストファイルが生成されています。
(00:04:38) それで同時にですね、
(00:04:42) ここに字幕かんたんエディターが起動しました。
(00:04:51) これはですね、字幕かんたんエディターは操作が非常に簡単で、
(00:04:56) エディターの操作は見たままです。
(00:05:02) ちょっと動かしてみます。
(00:05:23) それでは始めます。
(00:05:26) この画像ですけれども、これは日本の山村によく見かける
(00:05:31) 棚田の風景です。
(00:05:37) コンピューターのデータの管理を...
(00:05:42) 新規に字幕を追加したい時は、
(00:05:46) この上のテキストボックスですね、ここに文字列を入れます。
(00:06:00) 今例えば、これは適当に入れてみますけども、
(00:06:04) こうやって入れますと
(00:06:08) こんなのが入るわけですね。それで
(00:06:18) 今4秒で入れましたけども、これを修正して
(00:06:22) 4秒ではなくて8秒ぐらいにすると。
(00:06:26) 8秒にしてみましょうか。そうすると
(00:06:43) 8秒で字幕の表示が切れましたね。
(00:06:51) それでは始めます。
(00:06:54) それでこのですね、音声の波形の表示は
(00:06:58) 拡大縮小ができます。
(00:07:04) 適当な位置でですね、シークバーを止めて
(00:07:08) そこからスペースキーを押すとですね、開始します。
(00:07:13) で、もう一回スペースキーを押すと止まります。
(00:07:19) こういった形で確認ができます。
(00:07:24) それで、まあ全体にですね、一度は通しで
(00:07:45) 一番多い修正はですね、字幕の終了時刻の調整です。
(00:07:49) まだ話してるうちにですね、字幕が消えるということがありますので
(00:07:58) この終了時刻をですね、調整・修正します。
(00:08:03) これはいいかな。例えば、
(00:08:06) 準アクティブなデータを置きます。
(00:08:08) 一番下がT2長期保管段。ここはアーカイブ領域です。
(00:08:13) 重要なのは、それぞれの段にサイズもメーカーも異なるバラバラのHDDを割り当てられる点です。
(00:08:20) ま、ここで止めて、これがちょうど終わってますが、これ4分2秒の位置ですね。
(00:08:28) ところが実際は、終了が4分2秒になってるから、
(00:08:32) これはいいですね。そのまま変える必要はないですね。
(00:08:38) です。これをソフトウェアで1つの巨大な階層構造として管理します。
(00:08:45) このシステムの革新にある設計思想…
(00:08:48) ま、こういった形でですね、中身をチェックしていきます。
(00:08:54) アプリの終了は、この左上のボタンを押します。
(00:09:00) そうするとですね、フォルダにですね、
(00:09:05) 字幕VTTファイルと字幕一覧テキストファイルがですね、できます。
(00:09:13) この出来上がった2つのファイルを配信用フォルダにですね、
(00:09:18) コピペすれば完了ということになります。
(00:09:25) 以上です。

2 ウインドウを統合したエディタを作った

ID-27063「字幕かんたん作成~」にてご案内しましたが、ウインドウがバラバラに配置され使いにくさがありましたので、それを改善することでした。

今回、大幅に改善しました。各ウインドウを統合して使いやすくしました。誰でも簡単にインストールできるようにしました。

3 字幕かんたんエディタの特徴

(1)字幕ファイルはvttを使う

動画アプリの殆どが字幕はsrtファイルを出力する形になっていますが、これは大手プラットフォームのプレーヤーの標準がsrt使用になっているからです。ところが私はWordpressプレーヤーを改良したハンドメイドプレーヤーでの再生を基本に考えていますので、Wordpressの字幕ファイルの標準であるvttを使うことにしています。

ですから、音声付きの動画をFinalCutProなどで完成させてから次にこのアプリを使うのがスマートです。

(2)文字情報はプレーンテキストが基本

私は字幕を動画に焼き付けることは基本的にはしません。その動画の中に登場する文字の理解のためには、コンピュータの頭脳にかなり大きなエネルギーを使わせることになります。もちろん翻訳も難しくさせてしまいます。

最近、YouTubeなどの動画そのものを生成AIに読み込ませてマルチモーダルに理解させることを売りにしているようですが、これはユーザー一人ひとりが同じことを行うと思えるわけで、膨大な資源の無駄遣いのように感じます。やはり文字情報はプレーンテキストで記録するのが基本だろうと考えます。

だから私は、動画ファイルと字幕ファイルは別々に作ります。再生するときにプレーヤー上で合体させますし、ブログ記事をソース化するときも貼り付けた動画の字幕一覧情報を含めています。

(3)字幕一覧txtファイルも同時生成する

字幕vttファイルと同時にセットで字幕一覧txtファイルも出力するようになっています。

字幕一覧は、見たい場面に瞬時に移動できる点と、前後の字幕の見逃しや先読みに役に立つ点、それらに加えて、実は、翻訳した時の精度のばらつきをカバーするのに役に立ちます。どういうことかというと、Google翻訳は字幕一覧の中まで綺麗に翻訳出来るのに対して、Apple翻訳は字幕一覧の中の翻訳は使い物にならないほど酷いのにかかわらず画像内の文字列の翻訳は見事に出来るなど、得手不得手がバラバラです。字幕一覧があれば、その凸凹な翻訳レベルを補ってくれます。

字幕一覧は、前後の字幕の見逃しや、先読みに役立つ
Google翻訳は、字幕一覧まで翻訳される。
Apple翻訳は、字幕一覧の中を正しく翻訳できない。

4 実装

(1)Macの条件

このアプリをインストールできるのは、

Apple Silicon (M1 / M2 / M3チップ等) を搭載したMac

対応OS:macOS 11 (Big Sur) 以降
必要なソフト:なし(完全スタンドアロン)

Pythonの環境構築や追加ライブラリのインストールは一切不要です。ダウンロードしてすぐに使用できます。

ちなみに私は、M2 Mac mini Sonomaです。

(2)インストール方法

必須の操作:初回起動時のセキュリティ許可

初回のみ、readme.txt に記載の「右クリック ➔ 開く」によるGatekeeper(開発元未確認)の回避操作が必要です。

関係するスクリプトは全て公開します。
関係スクリプト要約:
「字幕かんたんエディタ」は、macOS向けのVTT字幕エディタアプリケーションです。PyWebViewとBottleフレームワークをPythonで利用し、音声波形表示、VTT字幕の新規作成、既存ファイルの編集・保存、そしてWebページ埋め込み用のHTML形式字幕リスト(_listJ.txt)の自動生成といった主要機能を提供します。Finderからの動画ファイル連携起動や、macOSのセキュリティ対策を考慮した初回起動手順が付属しています。
アプリはbuild_dmg.shスクリプトでDMGファイルとしてビルドされ、readme.txtと共にZIPアーカイブで配布されます。
さらに、multimodal_vtt_pipeline_auto.pyスクリプトは、Google Gemini 3.6 Flash APIを用いて長尺動画を無音区間で自動分割し、高精度な文字起こしを行う全自動VTT字幕生成パイプラインです。このスクリプトは、日本語の空白整形、タイムスタンプ補正、自動リトライ機能に加え、VTT生成完了後には「字幕かんたんエディタ」を自動起動し、生成されたVTTファイルと元の動画を読み込むことで、字幕の確認・編集作業へのスムーズな連携を実現します。
スクリプト↓
インストーラ↓SubtitleEasyEditor.dmgをクリックしてアプリをドラッグ&ドロップしてください。
内容に関するお問い合わせは以下へ↓
付録:
動画を360p音質キープに変換.workflow
要約:
このワークフローは、入力された動画ファイルを一括して360p解像度に変換するシェルスクリプトです。入力された各ファイルについて、新しいファイル名(元のファイル名に_360pを付加)を生成し、動画処理を行います。
動画はアスペクト比を保ちつつ、高さが360ピクセルになるようにスケーリングされます(または幅が360ピクセルになるよう調整され、もう一方が-2で自動設定)。映像コーデックにはH.264(libx264)を使用し、品質はCRF 23、エンコード速度はveryfastプリセット、ピクセルフォーマットはyuv420pが設定されています。
音声に関しては、ffprobeで元の音声コーデックとビットレートを判定します。もし元の音声がAACであればcopyモードで劣化なく複製され、それ以外のコーデックであれば、元のビットレート(取得できない場合は256kbps)に近い値でAAC形式に再エンコードされます。最終的に、データサイズの最適化とWeb再生に適した形式で360p動画が出力されます。
スクリプト↓

5 使用方法

説明不要なくらい簡単です。上に貼り付けたビデオでざっくりと説明していますのでご覧ください。

6 使用上の注意

私は、字幕vttファイル、字幕一覧txtファイルを新規に作成するときは、自動送信用のmmedia pmediaフォルダではない、別の静的なローカルフォルダに作成するようにしています。その後の、数分で済むような小さな修正は、自動送信用フォルダ内で使います。送信用フォルダは更新の都度、毎分そのファイルを配信所へ送信しますので、あまり処理のラッシュにならないようにしています。

7 まとめ

今回の開発で、私にとって「字幕工房」は不要になりました。
つくづくアプリ開発で、収入を得るのは、大変な時代になったと感じます。

私としては、デジタル創作物もそれなりに広がりと奥行きがついてきました。これまでも意識してきたことではありますが、もっと、このimakatブログを、視聴者の皆さんの実装に役立つように、充実していきたいと思います。