WebVTT字幕をプレーンテキストに変換
Zoom、Microsoft Teams、Google Meet、またはYouTubeの.vtt書き出しを、読みやすい文字起こしに整えます。音声タグとキューのメタデータは自動的に取り除かれ、アップロードは一切行われません。
ファイルがサーバーに触れることは一切ありません。 このページでの変換はすべて、JavaScriptのFileReader APIを使用してブラウザ内でローカルに実行されます。アップロード、記録、保存は一切行われません。Zoom/Teamsの機密録画、未公開の動画、法的なインタビューにも安心してご利用いただけます。
VTT to TXT変換の仕組み
WebVTT(Web Video Text Tracks)は、HTML5動画向けのW3C標準キャプション形式であり、ミーティングの文字起こしや動画のキャプションファイルをダウンロードする際にZoom、Microsoft Teams、Google Meet、YouTubeが書き出す形式です。すべての.vttファイルはWEBVTTヘッダー行で始まり、続いてピリオド区切りのミリ秒でタイミングが付けられたキューが並びます(SRTのカンマではなく00:00:03.500)。WebVTTはSRTより豊富なメタデータにも対応しており、タイミング行上のalign:start position:10%のようなキュー設定、誰が話しているかを示す<v Speaker Name>のような音声タグ、そしてダイアログではなくコメントやCSSに似たスタイルを運ぶNOTE / STYLE / REGIONブロックがあります。
これらはいずれもプレーンテキストの文字起こしには不要です。SubToolDeskのパーサーはブラウザのFileReader APIを使ってファイルをローカルで読み込み、ヘッダーとメタデータブロックを取り除き、音声タグとスタイルタグを削除し、指定すれば残ったキャプションを本物の段落にまとめます。
手順ごとの説明
.vtt字幕ファイルを書き出すか、見つけます(ZoomとTeamsはどちらもミーティング後に「文字起こしをダウンロード」または「キャプションをダウンロード」のオプションを提供しています)。- 上の変換ツールにドラッグするか、生のVTTテキストを左側のパネルに貼り付けます。
- 形式バッジがVTTと表示されていることを確認します。
- 音声タグとキュー設定を取り除くために書式タグを削除はオンのままにしておきます。
- キャプションが行頭に名前をテキストで付けている場合(自動生成されたTeamsの文字起こしによくあります)は、話者ラベルを削除もオンのままにしておきます。
- できあがった
.txt文字起こしをコピーまたはダウンロードします。
なぜWebVTTをプレーンテキストに変換するのか
.vttファイルは動画プレーヤーのために作られたものであり、読者のためのものではありません。プレーンテキストに落とし込む理由は、ほぼ必ずその後に何をするかにかかっています。
- ミーティングのメモやプロジェクト文書に貼り付ける場合、タイムスタンプや音声タグは単なる雑音になります。
- 文字起こしをAI要約ツールやチャットボットに渡す場合、何百もの2秒単位の断片よりも、文章の方がはるかに読み取りやすくなります。
- 録音された通話、ウェビナー、ポッドキャストからブログの要約やショーノートを公開する場合。
- 字幕ファイルを配布せずに、動画をプレーンテキストのページとしてアクセシブルかつ検索可能にする場合。
- 元の録音が不要になった文字起こしを、読みやすい記録としてアーカイブまたは保存する場合。
- 文字起こしを翻訳や編集のために送る場合、翻訳者や編集者はキューブロックではなく文章を扱います。
変換前と変換後:実際の例
音声タグ、キュー設定、NOTEブロックなどを含む短いZoom形式の書き出しを、段落にまとめる、話者ラベルを削除、書式タグを削除をすべてオンにして変換した例です(このページの既定の状態です)。
WEBVTT NOTE Zoomによって生成された文字起こし 00:00:01.200 --> 00:00:03.900 align:start position:10% <v Jordan>みなさん、今日は会議に参加していただきありがとうございます。 00:00:03.900 --> 00:00:06.450 <v Priya>もちろんです!早速始めましょう。 00:00:06.450 --> 00:00:09.800 <v Jordan>では、議題の最初は第3四半期のロードマップです。
みなさん、今日は会議に参加していただきありがとうございます。もちろんです!早速始めましょう。では、議題の最初は第3四半期のロードマップです。
WEBVTTヘッダー、NOTEブロック、すべてのタイムスタンプ行とキュー設定、そして両方の<v Jordan>音声タグが取り除かれています。残るのは実際に話された内容そのもので、読みやすい文章に再構成されています。
WebVTT形式を詳しく見る
典型的な複数話者のVTTキューは次のような形をしています。
00:00:03.500 --> 00:00:06.120 align:start position:10% <v Jordan>本日はお電話にご参加いただきありがとうございます。
SRTとは異なり、WebVTTでは先頭のキュー識別子行は任意であり、連番だけでなくどんな文字列でもかまいません。SubToolDeskのパーサーは、行の順序が固定されていると仮定するのではなく、タイムスタンプ行(常に-->を含みます)を直接検出するため、識別子のあるファイルもないファイルも正しく解析されます。
特にミーティングの文字起こしでこれが重要な理由
Zoomや Teamsの自動キャプション機能はタイミングの精度は高いものの、書き出されるファイルは読者のためではなく動画プレーヤーのために最適化されています。1時間のミーティングは、音声タグの付いた文のかけらとなる2秒単位のキューを数百個も生成することがあります。段落へのまとめをオンにしてこの変換ツールに通せば、元の録音や文字起こしが一度も端末の外に出ることなく、ミーティングメモやブログの要約、AI要約ツールへの入力に直接貼り付けられるものに変わります。
WebVTTファイルは実際どこから来るのか
ビデオ会議以外でも、WebVTTはYouTubeがキャプション付きのどの動画でもダウンロードを許可している字幕形式であり、ほとんどのAI文字起こしサービス(OpenAI Whisperの書き出しを含む)が既定で使う形式であり、ウェブページに直接埋め込まれたキャプション付き動画にHTML5の<track>要素が要求する形式です。ここ数年の間にオンラインのほぼどこかからキャプションファイルをダウンロードしたことがあるなら、それが古いSRT形式ではなくWebVTTである可能性は高いでしょう。これが、汎用的なテキスト除去スクリプトではなく、VTTを理解した専用のクリーンアップツールが重要である理由の一部でもあります。汎用的な手法は、そもそも音声タグを探したりNOTEブロックを読み飛ばしたりする方法を知りません。
複数話者の文字起こしをうまく処理する
自動キャプションツールは、同じファイルの中でさえ、話者を2つの異なる方法でラベル付けします。WebVTT本来の<v Speaker Name>タグによる方法と、行頭にプレーンテキストを置く方法(Jordan: Thanks for joining.)です。このツールの書式タグを削除は前者を取り除き、話者ラベルを削除は後者を取り除きます。両方を同時に有効にすると(このページの既定の状態)、元のファイルがどちらの形式を使っていたとしても、どちらのタグ形式も残らない文字起こしが得られます。
この変換ツールが保持するものと削除するもの
保持されるもの:
- 発言されたすべての単語を、元の順序と句読点のまま保持します。
- 段落区切り:元の1キュー1行の構造、または段落にまとめるがオンの場合は文単位の段落になります。
削除されるもの:
WEBVTTヘッダー行。NOTE、STYLE、REGIONのメタデータブロック。- キュー識別子行とすべてのタイムスタンプ範囲。
align:start position:10%のようなタイムスタンプ行上のキュー設定。- 書式タグを削除がオンの場合、
<v Speaker Name>のような音声タグ。 - 話者ラベルを削除がオンの場合、
Jordan:のようなプレーンテキストの話者接頭辞。
よくある問題とその解決方法
- 出力にまだタイムスタンプや
-->の矢印が残っている場合:変換ツール上の形式バッジが実際にVTTと表示されており、Unknownになっていないか確認してください。貼り付けが大きく途切れていると、キューの検出が壊れることがあります。 <v Speaker Name>タグがまだテキストに残っている場合:書式タグを削除をオンにしてください。オフになっているのは変更した場合だけです。Jordan:のようなプレーンテキストの名前が行頭に残る場合:これは別の切り替えで、話者ラベルを削除です。上の音声タグの除去とは異なるパターンを検出するため、こちらもオンにしてください。- 文字起こしが段落ではなく1行1文として表示される場合:段落にまとめるをオンにしてください。
- 話者の切り替わりがわからないまま段落が長く続いてしまう場合:代わりに段落にまとめるをオフにして、1キュー1行のまま保持してください。話者ラベルを削除すると、プレーンテキストには段落の途中での話者変更を示す手段がなくなります。
- アクセント付きの文字や英語以外のテキストが
éのような文字化けとして表示される場合:元の.vttがUTF-8で保存されていません。UTF-8として再書き出しまたは再保存してから、再度アップロードしてください。
出力を信頼する前に確認すべきこと
自動生成されたキャプションは、名前や専門用語、アクセントのある発音を誤って文字起こしすることがあります。これはファイルを生成したキャプションシステムの限界であり、テキストの整形ツールで修正できるものではありません。SubToolDeskは元のファイルにある内容をそのまま整形するだけです。会議の議事録や法的な記録など、何か正式なものに文字起こしを使う前に、出力パネルを元の録音と照らし合わせてさっと確認する価値があります。
よくある質問
Zoom/Teamsからキャプションを書き出しました。これは使えますか?
はい。Zoom、Microsoft Teams、Google Meet、YouTubeはいずれもWebVTT(.vtt)形式のキャプションファイルを書き出します。このページのパーサーは、それらのプラットフォームが生成する標準のWebVTT仕様に従って動作し、話者ごとの音声タグや位置情報のメタデータにも対応しています。
VTTファイルによく出てくる<v Speaker>タグとは何ですか?削除すべきですか?
これは、どの話者がその行を話したかをラベル付けするWebVTT本来の仕組みで、スクリーンリーダーや一部のプレーヤーがダイアログを識別するために使います。プレーンテキストに変換する際に取り除くには、書式タグを削除をオンにしてください。タイミング情報がなくなった後は、何の価値も追加しません。
キャプションにNOTEやSTYLEブロックがあります。それらは文字起こしに残りますか?
残りません。NOTE、STYLE、REGIONブロックは発言されたダイアログではなくWebVTTのメタデータであり、パーサーはキューのテキストを抽出する前に完全に読み飛ばします。
alignやpositionのようなVTTのキュー設定にも対応していますか?
はい。タイムスタンプ行の後に続くキュー設定(例:align:start position:10%)は、画面上の配置にのみ影響し、ダイアログのテキスト自体には関係しないため、解析中は無視されます。
HH:MM:SS.mmmではなくMM:SS.mmm形式のWebVTTファイルも変換できますか?
はい。WebVTTは短いファイルの場合、時間の部分を省略したタイムスタンプを許可しており、パーサーは両方の形式を自動的に正規化します。
Zoomの文字起こしが、誰も新しく話していないのに数秒ごとに新しいセクションに分かれてしまうのはなぜですか?
Zoomは話者が変わったかどうかに関わらず、数秒から数十秒おきに短いセクションで文字起こしにタイムスタンプを付けます。これにより、生の.vttファイルは読みにくく感じられます。これはまさに段落にまとめるが解決するために作られた問題で、句読点を使って自然な区切りを見つけながら、短く頻繁な断片を完全な文章と段落に再構成します。