上传 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[] 中。开始和结束时间常以带 s 后缀的秒数表示,例如 1.200s。
{
"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 | 包含开始、结束和文本的数组或嵌套数组 | 是,只要字段存在 | 只要时间字段和文本字段明确,就可以工作。 |
安全。转换过程通过 JavaScript 在你的浏览器本地完成,JSON 文件不会上传到服务器。这很重要,因为转写内容常包含内部会议、客户资料、草稿脚本或尚未发布的视频内容。
只有当 JSON 文件中包含可用的时间信息时,工具才能生成字幕片段。没有开始和结束时间的纯文本 JSON 无法可靠转换为 SRT,因为 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 检查。