JSON形式の文字起こしファイルをアップロードすると、スキーマを自動判定し、タイムスタンプ・本文・任意の話者ラベルを含むSRTファイルとして書き出せます。
JSONファイルはブラウザ内でローカル変換されます。アップロードは不要です。
OpenAI Whisper、AWS Transcribe、Google Cloud Speech-to-Text などの音声認識サービスは、完成した字幕ではなくJSONファイルを出力することがよくあります。JSONには時刻、単語、文、候補、話者情報が含まれる場合があります。このツールはその構造を読み取り、開始時刻・終了時刻・テキストを抽出して、標準的なSubRip形式のSRTファイルを生成します。
生のJSONは、そのままYouTubeにアップロードしたり、Adobe Premiere、DaVinci Resolve、Final Cut Proに安定して読み込ませたりすることはできません。まず「番号、開始時刻、終了時刻、表示テキスト」という字幕トラックの形に整える必要があります。このツールはその処理を自動で行います。
単純なミニ変換ツールではなく、実際のAPI構造を具体的に示しています。自分のJSONが似た構造かどうか、そしてなぜ有効なSRTにできるのかを確認できます。
Whisperの出力には、多くの場合 segments 配列があります。各要素には通常 start、end、text があり、SRTブロックへ自然に変換できます。
{
"segments": [
{ "start": 0.00, "end": 2.40, "text": "動画へようこそ。" },
{ "start": 2.40, "end": 5.10, "text": "今日はワークフローを紹介します。" }
]
}
1
00:00:00,000 --> 00:00:02,400
動画へようこそ。
2
00:00:02,400 --> 00:00:05,100
今日はワークフローを紹介します。
AWS Transcribeは、単語と句読点を results.items に分けて返すことがよくあります。このツールはそれらの単語データを読みやすい字幕ブロックにまとめ、話者ラベルがあれば保持できます。
{
"results": {
"items": [
{ "type": "pronunciation", "start_time": "0.00", "end_time": "0.55", "alternatives": [{ "content": "こんにちは" }], "speaker_label": "spk_0" },
{ "type": "pronunciation", "start_time": "0.56", "end_time": "1.10", "alternatives": [{ "content": "Maik" }], "speaker_label": "spk_0" },
{ "type": "punctuation", "alternatives": [{ "content": "。" }] }
]
}
}
1
00:00:00,000 --> 00:00:01,100
spk_0: こんにちは Maik。
Google Speech-to-Textでは、単語が results[].alternatives[].words[] に入っていることが一般的です。開始時刻と終了時刻は 1.200s のように、s付きの秒数で表されることがあります。
{
"results": [
{
"alternatives": [
{
"words": [
{ "startTime": "0s", "endTime": "0.700s", "word": "これは", "speakerTag": 1 },
{ "startTime": "0.700s", "endTime": "1.400s", "word": "動きます", "speakerTag": 1 }
]
}
]
}
]
}
1
00:00:00,000 --> 00:00:01,400
Speaker 1: これは動きます
JSONは字幕フォーマットではなくデータ形式です。そのため、文字起こしサービスごとにフィールド名が異なります。この変換ツールはよく使われるキー名を確認し、Whisper、AWS、Googleの形式と完全に一致しない場合でも、入れ子配列を探索できます。
| フィールド | 認識するキー | SRTでの使い方 |
|---|---|---|
| 開始時刻 | start, start_time, startTime, from, begin | SRTブロックの開始時刻になります |
| 終了時刻 | end, end_time, endTime, to, finish | SRTブロックの終了時刻になります |
| テキスト | text, transcript, content, sentence, value | 表示される字幕テキストになります |
| 話者 | speaker, speaker_label, speaker_id, speakerTag | テキストの前に接頭辞として追加できます |
多くの文字起こしサービスでは、話者情報が speaker、speaker_label、speakerTag などのフィールドで渡されます。「話者ラベルを含める」を有効にすると、その情報を字幕本文の先頭に書き込みます。
SRTには話者専用の技術的なフィールドがありません。そのため実務では、話者名をテキストの接頭辞として保存します。インタビュー、ポッドキャスト、会議、講義、サポート録画で便利です。
1
00:00:00,000 --> 00:00:02,200
Speaker 1: それでは始めましょう。
2
00:00:02,300 --> 00:00:04,800
Speaker 2: お招きいただきありがとうございます。
次の表は、このツールが明示的に認識する構造を示します。さらに、開始時刻・終了時刻・テキストを持つ汎用配列も自動検出します。
| プロバイダー | 一般的なJSON構造 | 対応 | メモ |
|---|---|---|---|
| OpenAI Whisper | segments[] mit start, end, text | はい、直接対応 | セグメントベースで、SRT出力に非常に向いています。 |
| AWS Transcribe | results.items[] plus optional speaker_labels | はい、直接対応 | 単語単位のデータを読みやすい字幕ブロックにまとめます。 |
| Google Speech-to-Text | results[].alternatives[].words[] | はい、直接対応 | 秒ベースの単語リストをまとめ、時刻順に並べます。 |
| 汎用JSON | start、end、textを含む配列または入れ子配列 | 必要なフィールドがあれば対応 | 明確な時刻フィールドとテキストフィールドがあれば動作します。 |
はい。変換はJavaScriptによりブラウザ内でローカル実行されます。JSONファイルがサーバーにアップロードされることはありません。文字起こしには社内会議、顧客素材、未公開スクリプト、未公開動画が含まれることが多いため重要です。
このツールが字幕セグメントを作成できるのは、JSON内に利用可能な時間情報がある場合だけです。開始時刻と終了時刻のないテキストだけのJSONは、SRTに必要なタイムスタンプがないため正確に変換できません。その場合はTXTからSRTへの変換ツールを使うか、Studioで後から同期してください。
JSON文字起こしは自動音声認識から作られることが多いため、生成されたSRTのタイミング、空ブロック、読みやすさを確認することをおすすめします。
Whisper、AWS、Google、または類似の音声認識システムのJSON文字起こしを選択します。
既知のスキーマを認識し、セグメント、単語リスト、時刻フィールド、任意の話者情報を探します。
生成されたSRTをダウンロードし、必要に応じてSRT ValidatorやStudioで確認します。
OpenAI Whisper、AWS Transcribe、Google Cloud Speech-to-Textの一般的な出力と、開始時刻・終了時刻・テキストを持つ汎用JSON配列に対応しています。
はい。短め、標準、長めを選べます。AWSやGoogleのJSONが単語単位データの場合に特に便利です。
はい。JSON内に話者情報があれば、SRT出力でテキスト接頭辞として書き込めます。
はい。変換はすべてブラウザ内で行われます。ファイルはサーバーにアップロードされません。
SRTでは各字幕ブロックに開始時刻と終了時刻が必要です。JSONにテキストしかない場合、必要なタイミング情報がありません。
はい。単語と句読点を自動的にまとめ、読みやすい字幕ブロックにします。
タイミング、文の長さ、話者ラベル、空ブロックを確認してください。技術的な問題はSRT Validatorで確認できます。