字幕フォーマットと編集ワークフロー

SRT・VTT・TXT の違い、タイムスタンプ生成の仕組み、文字起こし→カット連携、精度の限界について解説します。

目次

字幕フォーマット:SRT・VTT・TXT の違い

AudioBuff は文字起こし結果を SRT・VTT・TXT の 3 形式で書き出せます。それぞれ異なる規格・用途を持っており、配信先や次工程に応じて使い分けるのが効率的です。

形式正式名称タイムスタンプ主な用途
SRTSubRip SubtitleHH:MM:SS,mmm (カンマ区切り)YouTube 字幕、Premiere Pro / DaVinci Resolve への取り込み、動画編集ソフト全般
VTTWeb Video Text TracksHH:MM:SS.mmm (ピリオド区切り)HTML5 video の <track> 要素、Web ストリーミング、字幕スタイリングが必要な用途
TXTPlain Textなし(本文のみ)議事録の下書き、ブログ記事化、AI 要約への入力、検索可能なアーカイブ

SRT と VTT の選び分け

SRT と VTT は見た目が非常に似ていますが、明確な違いがあります。SRT は 1990 年代に SubRip という DVD リッピングツールのために生まれた形式で、シンプルさゆえに最も広く普及しています。VTT は W3C が策定した Web 標準で、HTML5 の `<track>` 要素で直接読み込める唯一の字幕フォーマットです。

実用上の選び方としては、動画編集ソフト(Premiere Pro・Final Cut Pro・DaVinci Resolve・iMovie)に取り込む場合は SRT、Web サイトに動画を埋め込んで字幕表示する場合は VTT、YouTube にアップロードする場合は SRT または VTT どちらでも可能です。Notion や Google Docs に貼って文章として活用する場合は TXT が最適です。

SRT サンプル
1\n00:00:00,000 --> 00:00:03,500\nこんにちは、本日のテーマは…
VTT サンプル
WEBVTT\n\n00:00:00.000 --> 00:00:03.500\nこんにちは、本日のテーマは…
タイムスタンプの精度
どちらもミリ秒単位(小数点以下 3 桁)。Whisper の出力は 20ms 程度の粒度を持ちますが、字幕として表示する場合はこの精度で十分です。
tip

VTT は WEBVTT というヘッダー行が必須。先頭に `WEBVTT` がない VTT ファイルは多くのプレーヤーで読み込みエラーになります。AudioBuff の VTT 書き出しはこのヘッダーを自動付与しています。

タイムスタンプ生成の仕組み

Whisper は内部的に音声を 30 秒のチャンクに分割して処理します(モデルの設計上、エンコーダーが受け取れる最大長が 30 秒のため)。AudioBuff ではチャンク間の境界で発話が切れて誤認識されないよう、5 秒のオーバーラップ(ストライド)を設けています。

チャンクごとに推論されたトークン列とタイムスタンプは、最終的にオーバーラップ部分をマージしながら 1 本のタイムラインに統合されます。この統合処理は「finalize」フェーズと呼ばれ、UI 上で進捗バーが 90% 付近で一旦止まり、その後 90→100% に進む独特の挙動の原因になっています。

進捗バーの設計は次のようになっています:0〜90% はトークン生成数(1 分あたり約 200 トークンを目安)から推定、90〜95% は finalize フェーズの時間ベース creep、100% は完了通知。この方式により、トークンが生成され続けている間は実進捗を反映し、内部処理に入った後も UI が止まって見えないようになっています。

長尺音声でも一発処理可能
チャンク + ストライド方式により、Whisper は 30 秒の制約を超えて任意長の音声を処理できます。AudioBuff では 1 時間以上の収録音声でも単一の文字起こしジョブとして実行できます。
finalize 中の体感
トークン生成が完了した後、デコード結果のタイムスタンプ復元・チャンク間マージに数秒〜数十秒かかります。長尺音声ほど finalize 時間も伸びる傾向があります。

文字起こし→カット連携

AudioBuff の特徴的なワークフローとして、文字起こし結果の各セグメントから直接「カット予定区間」を作成できます。テキストの右に表示される ✂ ボタンを押すと、そのセグメントの開始〜終了時刻が cut として登録され、後の音声書き出し時に該当区間が除去されます。

これは「文字起こし結果を読みながら、不要部分(言い直し・フィラー・脱線)を視覚的にマークし、最終的に音声側に反映する」という、ポッドキャスト編集で頻出する作業を 1 ファイル内で完結させるための設計です。一般的なワークフローでは「書き起こし → 編集判断 → 動画編集ソフトでカット」という工程を別ツール間で行き来する必要がありますが、AudioBuff ではテキストとオーディオが同一プロジェクトに紐づいているため、ツール往復が発生しません。

カット区間はトリム後のタイムライン基準で記録されます。先にトリムで大まかに範囲を切り、文字起こしを実行し、結果を見ながら細かい区間を追加カットする、という流れが効率的です。

フィラー除去
「えーと」「あの」「うーん」などのフィラー語が独立したセグメントとして認識されることが多く、該当セグメントだけを ✂ で除去すれば、自然なテンポに整えられます。
カット解除
一度カットしたセグメントは取り消しアイコンで元に戻せます。書き出し前であれば何度でも変更可能です。
書き出し時の動作
「Buff It」を押すと、トリム範囲のうち cut として登録された区間を除外した音声が、選択した出力形式(MP3 / WAV)で書き出されます。EQ・コンプ・ラウドネス正規化もカット後の音声に適用されます。

文字起こしの限界とコツ

Whisper は汎用音声認識モデルとして高い精度を持ちますが、いくつかの限界があります。これらを理解した上で入力音声を整えると、結果の精度が明確に向上します。

話者分離(diarization)には非対応
Whisper 単体では「誰が話しているか」を識別できません。複数話者の音声を文字起こししても、すべての発話が時系列に並ぶだけで「Aさん」「Bさん」のラベルは付きません。話者分離が必要な場合は、別途 pyannote.audio などの diarization モデルを併用する必要があります。
無音での hallucination
長い無音区間に対して、学習データに含まれていた典型的な字幕パターン(「ご視聴ありがとうございました」「次の動画もお楽しみに」など)を生成してしまうことがあります。AudioBuff の無音カット機能を事前に適用することで、この種の誤生成を抑制できます。
固有名詞・専門用語
人名・社名・地名・技術用語・最新の流行語などは誤認しやすい代表例です。高品質モデル(large-v3-turbo)は標準モデルより明確に強いですが、それでも誤認はゼロにはなりません。テキスト編集ソフトでの後処理(一括置換)を併用するのが現実的です。
入力音質の影響
残響・ノイズ・極端な音量差・音割れは精度を大きく下げます。特に屋外録音やスマホ内蔵マイクの音声では誤認率が顕著に上がります。AudioBuff の EQ・ハイパスフィルター・コンプレッサー・ラウドネス正規化を先に適用してから文字起こしすると改善が期待できます。
tip

コツの要約:①不要な無音・冒頭末尾をトリムで先に削る、②可能ならハイパスフィルター(80〜120Hz)でノイズ除去、③発話が複雑(混在言語・専門用語・複数話者)な場合は高品質モデルを選ぶ、④結果は必ず人間が確認・修正する前提で運用する。